mirror of
https://github.com/gitlabhq/gitlabhq.git
synced 2025-07-23 00:45:28 +00:00
110 lines
3.9 KiB
Ruby
110 lines
3.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe DeployTokensHelper, feature_category: :continuous_delivery do
|
|
using RSpec::Parameterized::TableSyntax
|
|
|
|
describe '#deploy_token_revoke_button_data' do
|
|
let_it_be(:token) { build(:deploy_token) }
|
|
let_it_be(:project) { build(:project) }
|
|
let_it_be(:revoke_deploy_token_path) { '/foobar/baz/-/deploy_tokens/1/revoke' }
|
|
|
|
it 'returns expected hash' do
|
|
expect(helper).to receive(:revoke_deploy_token_path).with(project, token).and_return(revoke_deploy_token_path)
|
|
|
|
expect(helper.deploy_token_revoke_button_data(token: token, group_or_project: project)).to match({
|
|
token: token.to_json(only: [:id, :name]),
|
|
revoke_path: revoke_deploy_token_path
|
|
})
|
|
end
|
|
end
|
|
|
|
describe '#container_registry_enabled?' do
|
|
let_it_be(:project) { build(:project) }
|
|
let_it_be(:user) { build(:user) }
|
|
|
|
where(:registry_enabled, :can_read_container_image, :can_manage_deploy_tokens, :result) do
|
|
true | true | true | true
|
|
true | true | false | true
|
|
true | false | true | true
|
|
true | false | false | false
|
|
false | true | true | false
|
|
end
|
|
|
|
with_them do
|
|
before do
|
|
allow(helper).to receive(:current_user).and_return(user)
|
|
allow(Gitlab.config.registry).to receive(:enabled).and_return(registry_enabled)
|
|
allow(Ability).to receive(:allowed?).and_call_original
|
|
allow(Ability).to receive(:allowed?).with(user, :read_container_image, project)
|
|
.and_return(can_read_container_image)
|
|
allow(Ability).to receive(:allowed?).with(user, :manage_deploy_tokens, project)
|
|
.and_return(can_manage_deploy_tokens)
|
|
end
|
|
|
|
it 'returns expected value' do
|
|
expect(helper.container_registry_enabled?(project)).to eq(result)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#dependency_proxy_enabled?' do
|
|
let_it_be(:project) { build(:project) }
|
|
let_it_be(:user) { build(:user) }
|
|
|
|
where(:dependency_proxy_enabled, :can_read_dependency_proxy, :can_manage_deploy_tokens, :result) do
|
|
true | true | true | true
|
|
true | true | false | true
|
|
true | false | true | true
|
|
true | false | false | false
|
|
false | true | true | false
|
|
end
|
|
|
|
with_them do
|
|
before do
|
|
allow(helper).to receive(:current_user).and_return(user)
|
|
allow(Gitlab.config.dependency_proxy).to receive(:enabled).and_return(dependency_proxy_enabled)
|
|
allow(Ability).to receive(:allowed?).and_call_original
|
|
allow(Ability).to receive(:allowed?).with(user, :read_dependency_proxy, project)
|
|
.and_return(can_read_dependency_proxy)
|
|
allow(Ability).to receive(:allowed?).with(user, :manage_deploy_tokens, project)
|
|
.and_return(can_manage_deploy_tokens)
|
|
end
|
|
|
|
it 'returns expected value' do
|
|
expect(helper.dependency_proxy_enabled?(project)).to eq(result)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#packages_registry_enabled?' do
|
|
let_it_be(:project) { build(:project) }
|
|
let_it_be(:user) { build(:user) }
|
|
|
|
where(:packages_enabled, :can_read_package, :can_manage_deploy_tokens, :result) do
|
|
true | true | true | true
|
|
true | true | false | true
|
|
true | false | true | true
|
|
true | false | false | false
|
|
false | true | true | false
|
|
end
|
|
|
|
with_them do
|
|
before do
|
|
allow(helper).to receive(:current_user).and_return(user)
|
|
allow(Gitlab.config.packages).to receive(:enabled).and_return(packages_enabled)
|
|
allow(Ability).to receive(:allowed?).and_call_original
|
|
allow(Ability).to receive(:allowed?).with(user, :read_package, instance_of(::Packages::Policies::Project))
|
|
.and_return(can_read_package)
|
|
allow(Ability).to receive(:allowed?).with(user, :manage_deploy_tokens, project)
|
|
.and_return(can_manage_deploy_tokens)
|
|
end
|
|
|
|
it 'returns expected value' do
|
|
expect(helper.packages_registry_enabled?(project)).to eq(result)
|
|
end
|
|
end
|
|
end
|
|
end
|