From 6e4e1050d9dba2b7b2523fdd1768823ab85feef4 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 20 Aug 2020 18:42:06 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-3-stable-ee --- .../groups/milestones_controller_spec.rb | 1 + .../controllers/groups/releases_controller_spec.rb | 75 ++++++++++++++++++++++ .../groups/settings/repository_controller_spec.rb | 3 +- .../groups/shared_projects_controller_spec.rb | 6 +- 4 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 spec/controllers/groups/releases_controller_spec.rb (limited to 'spec/controllers/groups') diff --git a/spec/controllers/groups/milestones_controller_spec.rb b/spec/controllers/groups/milestones_controller_spec.rb index e47bb75af22..5c7b88a218a 100644 --- a/spec/controllers/groups/milestones_controller_spec.rb +++ b/spec/controllers/groups/milestones_controller_spec.rb @@ -86,6 +86,7 @@ RSpec.describe Groups::MilestonesController do let!(:public_project_with_private_issues_and_mrs) do create(:project, :public, :issues_private, :merge_requests_private, group: public_group) end + let!(:private_milestone) { create(:milestone, project: public_project_with_private_issues_and_mrs, title: 'project milestone') } context 'when anonymous user' do diff --git a/spec/controllers/groups/releases_controller_spec.rb b/spec/controllers/groups/releases_controller_spec.rb new file mode 100644 index 00000000000..0925548f60a --- /dev/null +++ b/spec/controllers/groups/releases_controller_spec.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Groups::ReleasesController do + let(:group) { create(:group) } + let!(:project) { create(:project, :repository, :public, namespace: group) } + let!(:private_project) { create(:project, :repository, :private, namespace: group) } + let(:developer) { create(:user) } + let!(:release_1) { create(:release, project: project, tag: 'v1', released_at: Time.zone.parse('2020-02-15')) } + let!(:release_2) { create(:release, project: project, tag: 'v2', released_at: Time.zone.parse('2020-02-20')) } + let!(:private_release_1) { create(:release, project: private_project, tag: 'p1', released_at: Time.zone.parse('2020-03-01')) } + let!(:private_release_2) { create(:release, project: private_project, tag: 'p2', released_at: Time.zone.parse('2020-03-05')) } + + before do + private_project.add_developer(developer) + end + + describe 'GET #index' do + context 'as json' do + let(:format) { :json } + + subject { get :index, params: { group_id: group }, format: format } + + context 'json_response' do + before do + subject + end + + it 'returns an application/json content_type' do + expect(response.content_type).to eq 'application/json' + end + + it 'returns OK' do + expect(response).to have_gitlab_http_status(:ok) + end + end + + context 'the user is not authorized' do + before do + subject + end + + it 'does not return any releases' do + expect(json_response.map {|r| r['tag'] } ).to match_array(%w(v2 v1)) + end + + it 'returns OK' do + expect(response).to have_gitlab_http_status(:ok) + end + end + + context 'the user is authorized' do + it "returns all group's public and private project's releases as JSON, ordered by released_at" do + sign_in(developer) + + subject + + expect(json_response.map {|r| r['tag'] } ).to match_array(%w(p2 p1 v2 v1)) + end + end + + context 'N+1 queries' do + it 'avoids N+1 database queries' do + control_count = ActiveRecord::QueryRecorder.new { subject }.count + + create_list(:release, 5, project: project) + create_list(:release, 5, project: private_project) + + expect { subject }.not_to exceed_query_limit(control_count) + end + end + end + end +end diff --git a/spec/controllers/groups/settings/repository_controller_spec.rb b/spec/controllers/groups/settings/repository_controller_spec.rb index 6d0caf6d655..14bbdc05282 100644 --- a/spec/controllers/groups/settings/repository_controller_spec.rb +++ b/spec/controllers/groups/settings/repository_controller_spec.rb @@ -36,6 +36,7 @@ RSpec.describe Groups::Settings::RepositoryController do deploy_token_type: DeployToken.deploy_token_types[:group_type] } end + let(:request_params) do { group_id: group.to_param, @@ -60,7 +61,7 @@ RSpec.describe Groups::Settings::RepositoryController do 'token' => be_a(String), 'scopes' => deploy_token_params.inject([]) do |scopes, kv| key, value = kv - key.to_s.start_with?('read_') && !value.to_i.zero? ? scopes << key.to_s : scopes + key.to_s.start_with?('read_') && value.to_i != 0 ? scopes << key.to_s : scopes end } end diff --git a/spec/controllers/groups/shared_projects_controller_spec.rb b/spec/controllers/groups/shared_projects_controller_spec.rb index dafce094b14..528d5c073b7 100644 --- a/spec/controllers/groups/shared_projects_controller_spec.rb +++ b/spec/controllers/groups/shared_projects_controller_spec.rb @@ -17,9 +17,9 @@ RSpec.describe Groups::SharedProjectsController do ).execute(group) end - let_it_be(:group) { create(:group) } - let_it_be(:user) { create(:user) } - let_it_be(:shared_project) do + let!(:group) { create(:group) } + let!(:user) { create(:user) } + let!(:shared_project) do shared_project = create(:project, namespace: user.namespace) share_project(shared_project) -- cgit v1.2.1