diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-16 15:06:32 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-16 15:06:32 +0300 |
commit | d2ffc30fd583e86d4122bb5061098f4f3ca7b3f1 (patch) | |
tree | cb29c77a3ea49eb8ec732b0e644ed6cfad4770d9 /spec | |
parent | 914ea32e0efca21436220df2c10e1bfbe4ed3da9 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
38 files changed, 344 insertions, 84 deletions
diff --git a/spec/controllers/groups/group_members_controller_spec.rb b/spec/controllers/groups/group_members_controller_spec.rb index 0c3dd971582..22f970133e3 100644 --- a/spec/controllers/groups/group_members_controller_spec.rb +++ b/spec/controllers/groups/group_members_controller_spec.rb @@ -6,7 +6,7 @@ describe Groups::GroupMembersController do include ExternalAuthorizationServiceHelpers let(:user) { create(:user) } - let(:group) { create(:group, :public, :access_requestable) } + let(:group) { create(:group, :public) } let(:membership) { create(:group_member, group: group) } describe 'GET index' do diff --git a/spec/controllers/projects/project_members_controller_spec.rb b/spec/controllers/projects/project_members_controller_spec.rb index 5130e26c928..2f473d395ad 100644 --- a/spec/controllers/projects/project_members_controller_spec.rb +++ b/spec/controllers/projects/project_members_controller_spec.rb @@ -4,7 +4,7 @@ require('spec_helper') describe Projects::ProjectMembersController do let(:user) { create(:user) } - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } describe 'GET index' do it 'has the project_members address with a 200 status code' do diff --git a/spec/factories/groups.rb b/spec/factories/groups.rb index ba1a4883f85..93c01f8034d 100644 --- a/spec/factories/groups.rb +++ b/spec/factories/groups.rb @@ -32,8 +32,8 @@ FactoryBot.define do avatar { fixture_file_upload('spec/fixtures/dk.png') } end - trait :access_requestable do - request_access_enabled { true } + trait :request_access_disabled do + request_access_enabled { false } end trait :nested do diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index ae1feb73e4d..9477eeb18d4 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -117,8 +117,8 @@ FactoryBot.define do storage_version { nil } end - trait :access_requestable do - request_access_enabled { true } + trait :request_access_disabled do + request_access_enabled { false } end trait :with_avatar do diff --git a/spec/features/groups/members/master_manages_access_requests_spec.rb b/spec/features/groups/members/master_manages_access_requests_spec.rb index 454da126c81..1c13bd3d59e 100644 --- a/spec/features/groups/members/master_manages_access_requests_spec.rb +++ b/spec/features/groups/members/master_manages_access_requests_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe 'Groups > Members > Maintainer manages access requests' do it_behaves_like 'Maintainer manages access requests' do - let(:entity) { create(:group, :public, :access_requestable) } + let(:entity) { create(:group, :public) } let(:members_page_path) { group_group_members_path(entity) } end end diff --git a/spec/features/groups/members/request_access_spec.rb b/spec/features/groups/members/request_access_spec.rb index 0d5321709ae..5f22af3529c 100644 --- a/spec/features/groups/members/request_access_spec.rb +++ b/spec/features/groups/members/request_access_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'Groups > Members > Request access' do let(:user) { create(:user) } let(:owner) { create(:user) } - let(:group) { create(:group, :public, :access_requestable) } + let(:group) { create(:group, :public) } let!(:project) { create(:project, :private, namespace: group) } before do diff --git a/spec/features/projects/members/group_members_spec.rb b/spec/features/projects/members/group_members_spec.rb index dd5fc82e058..4ecc3db78b3 100644 --- a/spec/features/projects/members/group_members_spec.rb +++ b/spec/features/projects/members/group_members_spec.rb @@ -5,8 +5,8 @@ require 'spec_helper' describe 'Projects members' do let(:user) { create(:user) } let(:developer) { create(:user) } - let(:group) { create(:group, :public, :access_requestable) } - let(:project) { create(:project, :public, :access_requestable, creator: user, group: group) } + let(:group) { create(:group, :public) } + let(:project) { create(:project, :public, creator: user, group: group) } let(:project_invitee) { create(:project_member, project: project, invite_token: '123', invite_email: 'test1@abc.com', user: nil) } let(:group_invitee) { create(:group_member, group: group, invite_token: '123', invite_email: 'test2@abc.com', user: nil) } let(:project_requester) { create(:user) } diff --git a/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb b/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb index fb4238f0a1f..ecd55f71c84 100644 --- a/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb +++ b/spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb @@ -5,8 +5,8 @@ require 'spec_helper' describe 'Projects > Members > Group requester cannot request access to project', :js do let(:user) { create(:user) } let(:owner) { create(:user) } - let(:group) { create(:group, :public, :access_requestable) } - let(:project) { create(:project, :public, :access_requestable, namespace: group) } + let(:group) { create(:group, :public) } + let(:project) { create(:project, :public, namespace: group) } before do group.add_owner(owner) diff --git a/spec/features/projects/members/master_manages_access_requests_spec.rb b/spec/features/projects/members/master_manages_access_requests_spec.rb index 17d6efbcaa5..f113fb643f8 100644 --- a/spec/features/projects/members/master_manages_access_requests_spec.rb +++ b/spec/features/projects/members/master_manages_access_requests_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe 'Projects > Members > Maintainer manages access requests' do it_behaves_like 'Maintainer manages access requests' do - let(:entity) { create(:project, :public, :access_requestable) } + let(:entity) { create(:project, :public) } let(:members_page_path) { project_project_members_path(entity) } end end diff --git a/spec/features/projects/members/user_requests_access_spec.rb b/spec/features/projects/members/user_requests_access_spec.rb index 9f7327cd6e4..a77f0bdcbe9 100644 --- a/spec/features/projects/members/user_requests_access_spec.rb +++ b/spec/features/projects/members/user_requests_access_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe 'Projects > Members > User requests access', :js do let(:user) { create(:user) } - let(:project) { create(:project, :public, :access_requestable, :repository) } + let(:project) { create(:project, :public, :repository) } let(:maintainer) { project.owner } before do diff --git a/spec/finders/access_requests_finder_spec.rb b/spec/finders/access_requests_finder_spec.rb index 4c67087b50f..fbfc8035bcc 100644 --- a/spec/finders/access_requests_finder_spec.rb +++ b/spec/finders/access_requests_finder_spec.rb @@ -7,13 +7,13 @@ describe AccessRequestsFinder do let(:access_requester) { create(:user) } let(:project) do - create(:project, :public, :access_requestable) do |project| + create(:project, :public) do |project| project.request_access(access_requester) end end let(:group) do - create(:group, :public, :access_requestable) do |group| + create(:group, :public) do |group| group.request_access(access_requester) end end diff --git a/spec/finders/group_members_finder_spec.rb b/spec/finders/group_members_finder_spec.rb index 12f92f6b5b0..08f3b4024b3 100644 --- a/spec/finders/group_members_finder_spec.rb +++ b/spec/finders/group_members_finder_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe GroupMembersFinder, '#execute' do let(:group) { create(:group) } - let(:nested_group) { create(:group, :access_requestable, parent: group) } + let(:nested_group) { create(:group, parent: group) } let(:user1) { create(:user) } let(:user2) { create(:user) } let(:user3) { create(:user) } diff --git a/spec/finders/members_finder_spec.rb b/spec/finders/members_finder_spec.rb index 9849808c255..f9b8fee6f2d 100644 --- a/spec/finders/members_finder_spec.rb +++ b/spec/finders/members_finder_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe MembersFinder, '#execute' do set(:group) { create(:group) } - set(:nested_group) { create(:group, :access_requestable, parent: group) } + set(:nested_group) { create(:group, parent: group) } set(:project) { create(:project, namespace: nested_group) } set(:user1) { create(:user) } set(:user2) { create(:user) } @@ -57,7 +57,7 @@ describe MembersFinder, '#execute' do context 'when include_invited_groups_members == true' do subject { described_class.new(project, user2).execute(include_invited_groups_members: true) } - set(:linked_group) { create(:group, :public, :access_requestable) } + set(:linked_group) { create(:group, :public) } set(:nested_linked_group) { create(:group, parent: linked_group) } set(:linked_group_member) { linked_group.add_guest(user1) } set(:nested_linked_group_member) { nested_linked_group.add_guest(user2) } diff --git a/spec/frontend/ide/stores/integration_spec.js b/spec/frontend/ide/stores/integration_spec.js new file mode 100644 index 00000000000..443de18f288 --- /dev/null +++ b/spec/frontend/ide/stores/integration_spec.js @@ -0,0 +1,100 @@ +import { decorateFiles } from '~/ide/lib/files'; +import { createStore } from '~/ide/stores'; + +const TEST_BRANCH = 'test_branch'; +const TEST_NAMESPACE = 'test_namespace'; +const TEST_PROJECT_ID = `${TEST_NAMESPACE}/test_project`; +const TEST_PATH_DIR = 'src'; +const TEST_PATH = `${TEST_PATH_DIR}/foo.js`; +const TEST_CONTENT = `Lorem ipsum dolar sit +Lorem ipsum dolar +Lorem ipsum +Lorem +`; + +jest.mock('~/ide/ide_router'); + +describe('IDE store integration', () => { + let store; + + beforeEach(() => { + store = createStore(); + store.replaceState({ + ...store.state, + projects: { + [TEST_PROJECT_ID]: { + web_url: 'test_web_url', + branches: [], + }, + }, + currentProjectId: TEST_PROJECT_ID, + currentBranchId: TEST_BRANCH, + }); + }); + + describe('with project and files', () => { + beforeEach(() => { + const { entries, treeList } = decorateFiles({ + data: [`${TEST_PATH_DIR}/`, TEST_PATH, 'README.md'], + projectId: TEST_PROJECT_ID, + branchId: TEST_BRANCH, + }); + + Object.assign(entries[TEST_PATH], { + raw: TEST_CONTENT, + }); + + store.replaceState({ + ...store.state, + trees: { + [`${TEST_PROJECT_ID}/${TEST_BRANCH}`]: { + tree: treeList, + }, + }, + entries, + }); + }); + + describe('when a file is deleted and readded', () => { + beforeEach(() => { + store.dispatch('deleteEntry', TEST_PATH); + store.dispatch('createTempEntry', { name: TEST_PATH, type: 'blob' }); + }); + + it('has changed and staged', () => { + expect(store.state.changedFiles).toEqual([ + expect.objectContaining({ + path: TEST_PATH, + tempFile: true, + deleted: false, + }), + ]); + + expect(store.state.stagedFiles).toEqual([ + expect.objectContaining({ + path: TEST_PATH, + deleted: true, + }), + ]); + }); + + it('cleans up after commit', () => { + const expected = expect.objectContaining({ + path: TEST_PATH, + staged: false, + changed: false, + tempFile: false, + deleted: false, + }); + store.dispatch('stageChange', TEST_PATH); + + store.dispatch('commit/updateFilesAfterCommit', { data: {} }); + + expect(store.state.entries[TEST_PATH]).toEqual(expected); + expect(store.state.entries[TEST_PATH_DIR].tree.find(x => x.path === TEST_PATH)).toEqual( + expected, + ); + }); + }); + }); +}); diff --git a/spec/frontend/registry/components/app_spec.js b/spec/frontend/registry/components/app_spec.js index 190af5c11cd..5dcb61e03b5 100644 --- a/spec/frontend/registry/components/app_spec.js +++ b/spec/frontend/registry/components/app_spec.js @@ -1,5 +1,5 @@ -import registry from '~/registry/components/app.vue'; import { mount } from '@vue/test-utils'; +import registry from '~/registry/components/app.vue'; import { TEST_HOST } from '../../helpers/test_constants'; import { reposServerResponse, parsedReposServerResponse } from '../mock_data'; @@ -8,6 +8,7 @@ describe('Registry List', () => { const findCollapsibleContainer = w => w.findAll({ name: 'CollapsibeContainerRegisty' }); const findNoContainerImagesText = w => w.find('.js-no-container-images-text'); + const findNotLoggedInToRegistryText = w => w.find('.js-not-logged-in-to-registry-text'); const findSpinner = w => w.find('.gl-spinner'); const findCharacterErrorText = w => w.find('.js-character-error-text'); @@ -17,6 +18,9 @@ describe('Registry List', () => { noContainersImage: 'foo', containersErrorImage: 'foo', repositoryUrl: 'foo', + registryHostUrlWithPort: 'foo', + personalAccessTokensHelpLink: 'foo', + twoFactorAuthHelpLink: 'foo', }; const setMainEndpoint = jest.fn(); @@ -67,6 +71,13 @@ describe('Registry List', () => { 'With the Container Registry, every project can have its own space to store its Docker images. More Information', ); }); + + it('should render login help text', () => { + const notLoggedInToRegistryText = findNotLoggedInToRegistryText(localWrapper); + expect(notLoggedInToRegistryText.text()).toEqual( + 'If you are not already logged in, you need to authenticate to the Container Registry by using your GitLab username and password. If you have Two-Factor Authentication enabled, use a Personal Access Token instead of a password.', + ); + }); }); describe('while loading data', () => { diff --git a/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js b/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js index 49ed796d9a8..7d593a77bf3 100644 --- a/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js +++ b/spec/frontend/vue_mr_widget/components/artifacts_list_app_spec.js @@ -44,6 +44,7 @@ describe('Merge Requests Artifacts list app', () => { const findButtons = () => wrapper.findAll('button'); const findTitle = () => wrapper.find('.js-title'); + const findErrorMessage = () => wrapper.find('.js-error-state'); const findTableRows = () => wrapper.findAll('tbody tr'); describe('while loading', () => { @@ -109,13 +110,12 @@ describe('Merge Requests Artifacts list app', () => { }); it('renders the error state', () => { - expect(findTitle().text()).toBe('An error occurred while fetching the artifacts'); + expect(findErrorMessage().text()).toBe('An error occurred while fetching the artifacts'); }); - it('renders disabled buttons', () => { + it('does not render buttons', () => { const buttons = findButtons(); - expect(buttons.at(0).attributes('disabled')).toBe('disabled'); - expect(buttons.at(1).attributes('disabled')).toBe('disabled'); + expect(buttons.exists()).toBe(false); }); }); }); diff --git a/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js b/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js index 4c9507223a1..ee107f297ef 100644 --- a/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js +++ b/spec/frontend/vue_mr_widget/components/mr_collapsible_extension_spec.js @@ -20,6 +20,7 @@ describe('Merge Request Collapsible Extension', () => { }; const findTitle = () => wrapper.find('.js-title'); + const findErrorMessage = () => wrapper.find('.js-error-state'); afterEach(() => { wrapper.destroy(); @@ -87,19 +88,12 @@ describe('Merge Request Collapsible Extension', () => { mountComponent(Object.assign({}, data, { hasError: true })); }); - it('renders the buttons disabled', () => { - expect( - wrapper - .findAll('button') - .at(0) - .attributes('disabled'), - ).toEqual('disabled'); - expect( - wrapper - .findAll('button') - .at(1) - .attributes('disabled'), - ).toEqual('disabled'); + it('does not render the buttons', () => { + expect(wrapper.findAll('button').exists()).toBe(false); + }); + + it('renders title message provided', () => { + expect(findErrorMessage().text()).toBe(data.title); }); }); }); diff --git a/spec/helpers/members_helper_spec.rb b/spec/helpers/members_helper_spec.rb index e52d2166a69..169c8707bf4 100644 --- a/spec/helpers/members_helper_spec.rb +++ b/spec/helpers/members_helper_spec.rb @@ -5,11 +5,11 @@ require 'spec_helper' describe MembersHelper do describe '#remove_member_message' do let(:requester) { create(:user) } - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } let(:project_member) { build(:project_member, project: project) } let(:project_member_invite) { build(:project_member, project: project).tap { |m| m.generate_invite_token! } } let(:project_member_request) { project.request_access(requester) } - let(:group) { create(:group, :access_requestable) } + let(:group) { create(:group) } let(:group_member) { build(:group_member, group: group) } let(:group_member_invite) { build(:group_member, group: group).tap { |m| m.generate_invite_token! } } let(:group_member_request) { group.request_access(requester) } @@ -26,10 +26,10 @@ describe MembersHelper do describe '#remove_member_title' do let(:requester) { create(:user) } - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } let(:project_member) { build(:project_member, project: project) } let(:project_member_request) { project.request_access(requester) } - let(:group) { create(:group, :access_requestable) } + let(:group) { create(:group) } let(:group_member) { build(:group_member, group: group) } let(:group_member_request) { group.request_access(requester) } diff --git a/spec/lib/gitlab/health_checks/puma_check_spec.rb b/spec/lib/gitlab/health_checks/puma_check_spec.rb new file mode 100644 index 00000000000..71b6386b174 --- /dev/null +++ b/spec/lib/gitlab/health_checks/puma_check_spec.rb @@ -0,0 +1,65 @@ +require 'spec_helper' + +describe Gitlab::HealthChecks::PumaCheck do + let(:result_class) { Gitlab::HealthChecks::Result } + let(:readiness) { described_class.readiness } + let(:metrics) { described_class.metrics } + + shared_examples 'with state' do |(state, message)| + it "does provide readiness" do + expect(readiness).to eq(result_class.new('puma_check', state, message)) + end + + it "does provide metrics" do + expect(metrics).to include( + an_object_having_attributes(name: 'puma_check_success', value: state ? 1 : 0)) + expect(metrics).to include( + an_object_having_attributes(name: 'puma_check_latency_seconds', value: be >= 0)) + end + end + + context 'when Puma is not loaded' do + before do + hide_const('Puma') + end + + it "does not provide readiness and metrics" do + expect(readiness).to be_nil + expect(metrics).to be_nil + end + end + + context 'when Puma is loaded' do + before do + stub_const('Puma', Module.new) + end + + context 'when stats are missing' do + before do + expect(Puma).to receive(:stats).and_raise(NoMethodError) + end + + it_behaves_like 'with state', [false, 'unexpected Puma check result: 0'] + end + + context 'for Single mode' do + before do + expect(Puma).to receive(:stats) do + '{}' + end + end + + it_behaves_like 'with state', true + end + + context 'for Cluster mode' do + before do + expect(Puma).to receive(:stats) do + '{"workers":2}' + end + end + + it_behaves_like 'with state', true + end + end +end diff --git a/spec/lib/gitlab/health_checks/unicorn_check_spec.rb b/spec/lib/gitlab/health_checks/unicorn_check_spec.rb new file mode 100644 index 00000000000..c02d0c37738 --- /dev/null +++ b/spec/lib/gitlab/health_checks/unicorn_check_spec.rb @@ -0,0 +1,63 @@ +require 'spec_helper' + +describe Gitlab::HealthChecks::UnicornCheck do + let(:result_class) { Gitlab::HealthChecks::Result } + let(:readiness) { described_class.readiness } + let(:metrics) { described_class.metrics } + + before do + described_class.clear_memoization(:http_servers) + end + + shared_examples 'with state' do |(state, message)| + it "does provide readiness" do + expect(readiness).to eq(result_class.new('unicorn_check', state, message)) + end + + it "does provide metrics" do + expect(metrics).to include( + an_object_having_attributes(name: 'unicorn_check_success', value: state ? 1 : 0)) + expect(metrics).to include( + an_object_having_attributes(name: 'unicorn_check_latency_seconds', value: be >= 0)) + end + end + + context 'when Unicorn is not loaded' do + before do + hide_const('Unicorn') + end + + it "does not provide readiness and metrics" do + expect(readiness).to be_nil + expect(metrics).to be_nil + end + end + + context 'when Unicorn is loaded' do + let(:http_server_class) { Struct.new(:worker_processes) } + + before do + stub_const('Unicorn::HttpServer', http_server_class) + end + + context 'when no servers are running' do + it_behaves_like 'with state', [false, 'unexpected Unicorn check result: 0'] + end + + context 'when servers without workers are running' do + before do + http_server_class.new(0) + end + + it_behaves_like 'with state', [false, 'unexpected Unicorn check result: 0'] + end + + context 'when servers with workers are running' do + before do + http_server_class.new(1) + end + + it_behaves_like 'with state', true + end + end +end diff --git a/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb b/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb index bedf4fedcfa..0376da13595 100644 --- a/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb +++ b/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb @@ -64,6 +64,18 @@ describe Gitlab::Metrics::Exporter::BaseExporter do exporter.start.join end end + + describe 'when thread is not alive' do + it 'does close listeners' do + expect_any_instance_of(::WEBrick::HTTPServer).to receive(:start) + expect_any_instance_of(::WEBrick::HTTPServer).to receive(:listeners) + .and_call_original + + expect { exporter.start.join }.to change { exporter.thread? }.from(false).to(true) + + exporter.stop + end + end end describe '#stop' do diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb index 56fa26d5f23..1991bac0229 100644 --- a/spec/mailers/notify_spec.rb +++ b/spec/mailers/notify_spec.rb @@ -714,7 +714,7 @@ describe Notify do describe 'project access requested' do let(:project) do - create(:project, :public, :access_requestable) do |project| + create(:project, :public) do |project| project.add_maintainer(project.owner) end end @@ -743,7 +743,7 @@ describe Notify do end describe 'project access denied' do - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } let(:project_member) do project.request_access(user) project.requesters.find_by(user_id: user.id) @@ -765,7 +765,7 @@ describe Notify do describe 'project access changed' do let(:owner) { create(:user, name: "Chang O'Keefe") } - let(:project) { create(:project, :public, :access_requestable, namespace: owner.namespace) } + let(:project) { create(:project, :public, namespace: owner.namespace) } let(:project_member) { create(:project_member, project: project, user: user) } subject { described_class.member_access_granted_email('project', project_member.id) } @@ -1167,7 +1167,7 @@ describe Notify do context 'for a group' do describe 'group access requested' do - let(:group) { create(:group, :public, :access_requestable) } + let(:group) { create(:group, :public) } let(:group_member) do group.request_access(user) group.requesters.find_by(user_id: user.id) diff --git a/spec/models/ci/build_metadata_spec.rb b/spec/models/ci/build_metadata_spec.rb index 67cd939b4c6..da95a2d30f5 100644 --- a/spec/models/ci/build_metadata_spec.rb +++ b/spec/models/ci/build_metadata_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe Ci::BuildMetadata do set(:user) { create(:user) } - set(:group) { create(:group, :access_requestable) } + set(:group) { create(:group) } set(:project) { create(:project, :repository, group: group, build_timeout: 2000) } set(:pipeline) do diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 15281c9e826..26646085921 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe Ci::Build do set(:user) { create(:user) } - set(:group) { create(:group, :access_requestable) } + set(:group) { create(:group) } set(:project) { create(:project, :repository, group: group) } set(:pipeline) do diff --git a/spec/models/concerns/access_requestable_spec.rb b/spec/models/concerns/access_requestable_spec.rb index de2bc3a387b..5c1694e3737 100644 --- a/spec/models/concerns/access_requestable_spec.rb +++ b/spec/models/concerns/access_requestable_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe AccessRequestable do describe 'Group' do describe '#request_access' do - let(:group) { create(:group, :public, :access_requestable) } + let(:group) { create(:group, :public) } let(:user) { create(:user) } it { expect(group.request_access(user)).to be_a(GroupMember) } @@ -13,7 +13,7 @@ describe AccessRequestable do end describe '#access_requested?' do - let(:group) { create(:group, :public, :access_requestable) } + let(:group) { create(:group, :public) } let(:user) { create(:user) } before do @@ -26,14 +26,14 @@ describe AccessRequestable do describe 'Project' do describe '#request_access' do - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } let(:user) { create(:user) } it { expect(project.request_access(user)).to be_a(ProjectMember) } end describe '#access_requested?' do - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } let(:user) { create(:user) } before do diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 3f149f9d7ee..892c31a9204 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe Group do - let!(:group) { create(:group, :access_requestable) } + let!(:group) { create(:group) } describe 'associations' do it { is_expected.to have_many :projects } @@ -331,7 +331,7 @@ describe Group do end describe '#avatar_url' do - let!(:group) { create(:group, :access_requestable, :with_avatar) } + let!(:group) { create(:group, :with_avatar) } let(:user) { create(:user) } context 'when avatar file is uploaded' do diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 2cb4f222ea4..e7f03226826 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -92,7 +92,7 @@ describe Member do describe 'Scopes & finders' do before do - project = create(:project, :public, :access_requestable) + project = create(:project, :public) group = create(:group) @owner_user = create(:user).tap { |u| group.add_owner(u) } @owner = group.members.find_by(user_id: @owner_user.id) @@ -230,7 +230,7 @@ describe Member do describe '.add_user' do %w[project group].each do |source_type| context "when source is a #{source_type}" do - let!(:source) { create(source_type, :public, :access_requestable) } + let!(:source) { create(source_type, :public) } let!(:user) { create(:user) } let!(:admin) { create(:admin) } @@ -437,7 +437,7 @@ describe Member do describe '.add_users' do %w[project group].each do |source_type| context "when source is a #{source_type}" do - let!(:source) { create(source_type, :public, :access_requestable) } + let!(:source) { create(source_type, :public) } let!(:admin) { create(:admin) } let(:user1) { create(:user) } let(:user2) { create(:user) } diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 68833fdaf73..866003c9ffd 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -153,7 +153,7 @@ describe Project do end describe '#members & #requesters' do - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } let(:requester) { create(:user) } let(:developer) { create(:user) } before do diff --git a/spec/models/project_team_spec.rb b/spec/models/project_team_spec.rb index 77c88a04cde..d62fa58739a 100644 --- a/spec/models/project_team_spec.rb +++ b/spec/models/project_team_spec.rb @@ -141,7 +141,7 @@ describe ProjectTeam do describe '#find_member' do context 'personal project' do let(:project) do - create(:project, :public, :access_requestable) + create(:project, :public) end let(:requester) { create(:user) } @@ -161,7 +161,7 @@ describe ProjectTeam do end context 'group project' do - let(:group) { create(:group, :access_requestable) } + let(:group) { create(:group) } let(:project) { create(:project, group: group) } let(:requester) { create(:user) } @@ -246,7 +246,7 @@ describe ProjectTeam do context 'personal project' do let(:project) do - create(:project, :public, :access_requestable) + create(:project, :public) end context 'when project is not shared with group' do @@ -292,7 +292,7 @@ describe ProjectTeam do end context 'group project' do - let(:group) { create(:group, :access_requestable) } + let(:group) { create(:group) } let!(:project) do create(:project, group: group) end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 12292dad142..24e66fe14c3 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -79,7 +79,7 @@ describe User do describe '#group_members' do it 'does not include group memberships for which user is a requester' do user = create(:user) - group = create(:group, :public, :access_requestable) + group = create(:group, :public) group.request_access(user) expect(user.group_members).to be_empty @@ -89,7 +89,7 @@ describe User do describe '#project_members' do it 'does not include project memberships for which user is a requester' do user = create(:user) - project = create(:project, :public, :access_requestable) + project = create(:project, :public) project.request_access(user) expect(user.project_members).to be_empty @@ -1191,7 +1191,7 @@ describe User do end describe '.without_projects' do - let!(:project) { create(:project, :public, :access_requestable) } + let!(:project) { create(:project, :public) } let!(:user) { create(:user) } let!(:user_without_project) { create(:user) } let!(:user_without_project2) { create(:user) } diff --git a/spec/requests/api/access_requests_spec.rb b/spec/requests/api/access_requests_spec.rb index 1af6602ea9e..100f3d33c7b 100644 --- a/spec/requests/api/access_requests_spec.rb +++ b/spec/requests/api/access_requests_spec.rb @@ -7,7 +7,7 @@ describe API::AccessRequests do set(:stranger) { create(:user) } set(:project) do - create(:project, :public, :access_requestable, creator_id: maintainer.id, namespace: maintainer.namespace) do |project| + create(:project, :public, creator_id: maintainer.id, namespace: maintainer.namespace) do |project| project.add_developer(developer) project.add_maintainer(maintainer) project.request_access(access_requester) @@ -15,7 +15,7 @@ describe API::AccessRequests do end set(:group) do - create(:group, :public, :access_requestable) do |group| + create(:group, :public) do |group| group.add_developer(developer) group.add_owner(maintainer) group.request_access(access_requester) diff --git a/spec/requests/api/badges_spec.rb b/spec/requests/api/badges_spec.rb index 1dd0cb4817c..771a78a2d91 100644 --- a/spec/requests/api/badges_spec.rb +++ b/spec/requests/api/badges_spec.rb @@ -345,7 +345,7 @@ describe API::Badges do end def setup_project - create(:project, :public, :access_requestable, creator_id: maintainer.id, namespace: project_group) do |project| + create(:project, :public, creator_id: maintainer.id, namespace: project_group) do |project| project.add_developer(developer) project.add_maintainer(maintainer) project.request_access(access_requester) @@ -356,7 +356,7 @@ describe API::Badges do end def setup_group - create(:group, :public, :access_requestable) do |group| + create(:group, :public) do |group| group.add_developer(developer) group.add_owner(maintainer) group.request_access(access_requester) diff --git a/spec/requests/api/members_spec.rb b/spec/requests/api/members_spec.rb index 26f6e705528..7e67ee28bef 100644 --- a/spec/requests/api/members_spec.rb +++ b/spec/requests/api/members_spec.rb @@ -7,7 +7,7 @@ describe API::Members do let(:stranger) { create(:user) } let(:project) do - create(:project, :public, :access_requestable, creator_id: maintainer.id, namespace: maintainer.namespace) do |project| + create(:project, :public, creator_id: maintainer.id, namespace: maintainer.namespace) do |project| project.add_developer(developer) project.add_maintainer(maintainer) project.request_access(access_requester) @@ -15,7 +15,7 @@ describe API::Members do end let!(:group) do - create(:group, :public, :access_requestable) do |group| + create(:group, :public) do |group| group.add_developer(developer) group.add_owner(maintainer) group.request_access(access_requester) diff --git a/spec/services/members/approve_access_request_service_spec.rb b/spec/services/members/approve_access_request_service_spec.rb index f56c31e51f6..5bbceac3dd0 100644 --- a/spec/services/members/approve_access_request_service_spec.rb +++ b/spec/services/members/approve_access_request_service_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' describe Members::ApproveAccessRequestService do - let(:project) { create(:project, :public, :access_requestable) } - let(:group) { create(:group, :public, :access_requestable) } + let(:project) { create(:project, :public) } + let(:group) { create(:group, :public) } let(:current_user) { create(:user) } let(:access_requester_user) { create(:user) } let(:access_requester) { source.requesters.find_by!(user_id: access_requester_user.id) } diff --git a/spec/services/members/request_access_service_spec.rb b/spec/services/members/request_access_service_spec.rb index 2e5275eb3f2..a0f7ae91bdb 100644 --- a/spec/services/members/request_access_service_spec.rb +++ b/spec/services/members/request_access_service_spec.rb @@ -41,7 +41,7 @@ describe Members::RequestAccessService do context 'when access requests are disabled' do %i[project group].each do |source_type| it_behaves_like 'a service raising Gitlab::Access::AccessDeniedError' do - let(:source) { create(source_type, :public) } + let(:source) { create(source_type, :public, :request_access_disabled) } end end end @@ -49,7 +49,7 @@ describe Members::RequestAccessService do context 'when current user can request access to the project' do %i[project group].each do |source_type| it_behaves_like 'a service creating a access request' do - let(:source) { create(source_type, :public, :access_requestable) } + let(:source) { create(source_type, :public) } end end end diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb index bd6734634cb..70ce05927b4 100644 --- a/spec/services/notification_service_spec.rb +++ b/spec/services/notification_service_spec.rb @@ -1942,7 +1942,7 @@ describe NotificationService, :mailer do let(:developer) { create(:user) } let!(:group) do - create(:group, :public, :access_requestable) do |group| + create(:group, :public) do |group| group.add_owner(owner) group.add_maintainer(maintainer) group.add_developer(developer) @@ -1968,7 +1968,7 @@ describe NotificationService, :mailer do end it_behaves_like 'sends notification only to a maximum of ten, most recently active group owners' do - let(:group) { create(:group, :public, :access_requestable) } + let(:group) { create(:group, :public) } let(:notification_trigger) { group.request_access(added_user) } end end @@ -2029,7 +2029,7 @@ describe NotificationService, :mailer do let(:maintainer) { create(:user) } let!(:project) do - create(:project, :public, :access_requestable) do |project| + create(:project, :public) do |project| project.add_developer(developer) project.add_maintainer(maintainer) end @@ -2053,7 +2053,7 @@ describe NotificationService, :mailer do end it_behaves_like 'sends notification only to a maximum of ten, most recently active project maintainers' do - let(:project) { create(:project, :public, :access_requestable) } + let(:project) { create(:project, :public) } let(:notification_trigger) { project.request_access(added_user) } end end @@ -2064,7 +2064,7 @@ describe NotificationService, :mailer do context 'when the project has no maintainers' do context 'when the group has at least one owner' do - let!(:project) { create(:project, :public, :access_requestable, namespace: group) } + let!(:project) { create(:project, :public, namespace: group) } before do reset_delivered_emails! @@ -2079,14 +2079,14 @@ describe NotificationService, :mailer do end it_behaves_like 'sends notification only to a maximum of ten, most recently active group owners' do - let(:group) { create(:group, :public, :access_requestable) } + let(:group) { create(:group, :public) } let(:notification_trigger) { project.request_access(added_user) } end end context 'when the group does not have any owners' do let(:group) { create(:group) } - let!(:project) { create(:project, :public, :access_requestable, namespace: group) } + let!(:project) { create(:project, :public, namespace: group) } context 'recipients' do before do @@ -2107,7 +2107,7 @@ describe NotificationService, :mailer do let(:developer) { create(:user) } let!(:project) do - create(:project, :public, :access_requestable, namespace: group) do |project| + create(:project, :public, namespace: group) do |project| project.add_maintainer(maintainer) project.add_developer(developer) end @@ -2128,7 +2128,7 @@ describe NotificationService, :mailer do end it_behaves_like 'sends notification only to a maximum of ten, most recently active project maintainers' do - let(:project) { create(:project, :public, :access_requestable, namespace: group) } + let(:project) { create(:project, :public, namespace: group) } let(:notification_trigger) { project.request_access(added_user) } end end diff --git a/spec/services/projects/container_repository/cleanup_tags_service_spec.rb b/spec/services/projects/container_repository/cleanup_tags_service_spec.rb index 14247f1c71e..14772d172e8 100644 --- a/spec/services/projects/container_repository/cleanup_tags_service_spec.rb +++ b/spec/services/projects/container_repository/cleanup_tags_service_spec.rb @@ -157,6 +157,6 @@ describe Projects::ContainerRepository::CleanupTagsService do def expect_delete(digest) expect_any_instance_of(ContainerRegistry::Client) .to receive(:delete_repository_tag) - .with(repository.path, digest) + .with(repository.path, digest) { true } end end diff --git a/spec/services/projects/container_repository/delete_tags_service_spec.rb b/spec/services/projects/container_repository/delete_tags_service_spec.rb index 2ec5850c69e..f296ef3a776 100644 --- a/spec/services/projects/container_repository/delete_tags_service_spec.rb +++ b/spec/services/projects/container_repository/delete_tags_service_spec.rb @@ -87,6 +87,21 @@ describe Projects::ContainerRepository::DeleteTagsService do is_expected.to include(status: :success) end + + it 'succedes when tag delete returns 404' do + stub_upload("{\n \"config\": {\n }\n}", 'sha256:4435000728ee66e6a80e55637fc22725c256b61de344a2ecdeaac6bdb36e8bc3') + + stub_request(:put, "http://registry.gitlab/v2/#{repository.path}/manifests/A") + .to_return(status: 200, body: "", headers: { 'docker-content-digest' => 'sha256:dummy' }) + + stub_request(:put, "http://registry.gitlab/v2/#{repository.path}/manifests/Ba") + .to_return(status: 200, body: "", headers: { 'docker-content-digest' => 'sha256:dummy' }) + + stub_request(:delete, "http://registry.gitlab/v2/#{repository.path}/manifests/sha256:dummy") + .to_return(status: 404, body: "", headers: {}) + + is_expected.to include(status: :success) + end end end end |