diff options
Diffstat (limited to 'spec/requests/api/projects_spec.rb')
-rw-r--r-- | spec/requests/api/projects_spec.rb | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 3831e8e1dfe..6e8168c0ee1 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.shared_examples 'languages and percentages JSON response' do +RSpec.shared_examples 'languages and percentages JSON response', feature_category: :projects do let(:expected_languages) { project.repository.languages.to_h { |language| language.values_at(:label, :value) } } before do @@ -231,14 +231,16 @@ RSpec.describe API::Projects do include_examples 'includes container_registry_access_level' end - it 'includes releases_access_level', :aggregate_failures do - project.project_feature.update!(releases_access_level: ProjectFeature::DISABLED) - + it 'includes various project feature fields', :aggregate_failures do get api('/projects', user) project_response = json_response.find { |p| p['id'] == project.id } expect(response).to have_gitlab_http_status(:ok) - expect(project_response['releases_access_level']).to eq('disabled') + expect(project_response['releases_access_level']).to eq('enabled') + expect(project_response['environments_access_level']).to eq('enabled') + expect(project_response['feature_flags_access_level']).to eq('enabled') + expect(project_response['infrastructure_access_level']).to eq('enabled') + expect(project_response['monitor_access_level']).to eq('enabled') end context 'when some projects are in a group' do @@ -1192,6 +1194,10 @@ RSpec.describe API::Projects do attrs[:container_registry_access_level] = 'private' attrs[:security_and_compliance_access_level] = 'private' attrs[:releases_access_level] = 'disabled' + attrs[:environments_access_level] = 'disabled' + attrs[:feature_flags_access_level] = 'disabled' + attrs[:infrastructure_access_level] = 'disabled' + attrs[:monitor_access_level] = 'disabled' end post api('/projects', user), params: project @@ -1201,7 +1207,8 @@ RSpec.describe API::Projects do project.each_pair do |k, v| next if %i[ has_external_issue_tracker has_external_wiki issues_enabled merge_requests_enabled wiki_enabled storage_version - container_registry_access_level releases_access_level + container_registry_access_level releases_access_level environments_access_level feature_flags_access_level + infrastructure_access_level monitor_access_level ].include?(k) expect(json_response[k.to_s]).to eq(v) @@ -1217,6 +1224,10 @@ RSpec.describe API::Projects do expect(project.project_feature.container_registry_access_level).to eq(ProjectFeature::PRIVATE) expect(project.project_feature.security_and_compliance_access_level).to eq(ProjectFeature::PRIVATE) expect(project.project_feature.releases_access_level).to eq(ProjectFeature::DISABLED) + expect(project.project_feature.environments_access_level).to eq(ProjectFeature::DISABLED) + expect(project.project_feature.feature_flags_access_level).to eq(ProjectFeature::DISABLED) + expect(project.project_feature.infrastructure_access_level).to eq(ProjectFeature::DISABLED) + expect(project.project_feature.monitor_access_level).to eq(ProjectFeature::DISABLED) end it 'assigns container_registry_enabled to project', :aggregate_failures do @@ -2356,6 +2367,10 @@ RSpec.describe API::Projects do expect(json_response['operations_access_level']).to be_present expect(json_response['security_and_compliance_access_level']).to be_present expect(json_response['releases_access_level']).to be_present + expect(json_response['environments_access_level']).to be_present + expect(json_response['feature_flags_access_level']).to be_present + expect(json_response['infrastructure_access_level']).to be_present + expect(json_response['monitor_access_level']).to be_present end it 'exposes all necessary attributes' do @@ -2426,6 +2441,10 @@ RSpec.describe API::Projects do expect(json_response['operations_access_level']).to be_present expect(json_response['security_and_compliance_access_level']).to be_present expect(json_response['releases_access_level']).to be_present + expect(json_response['environments_access_level']).to be_present + expect(json_response['feature_flags_access_level']).to be_present + expect(json_response['infrastructure_access_level']).to be_present + expect(json_response['monitor_access_level']).to be_present expect(json_response).to have_key('emails_disabled') expect(json_response['resolve_outdated_diff_discussions']).to eq(project.resolve_outdated_diff_discussions) expect(json_response['remove_source_branch_after_merge']).to be_truthy @@ -3410,12 +3429,14 @@ RSpec.describe API::Projects do expect(Project.find_by(path: project[:path]).analytics_access_level).to eq(ProjectFeature::PRIVATE) end - it 'sets releases_access_level', :aggregate_failures do - put api("/projects/#{project.id}", user), params: { releases_access_level: 'private' } + %i(releases_access_level environments_access_level feature_flags_access_level infrastructure_access_level monitor_access_level).each do |field| + it "sets #{field}", :aggregate_failures do + put api("/projects/#{project.id}", user), params: { field => 'private' } - expect(response).to have_gitlab_http_status(:ok) - expect(json_response['releases_access_level']).to eq('private') - expect(Project.find_by(path: project[:path]).releases_access_level).to eq(ProjectFeature::PRIVATE) + expect(response).to have_gitlab_http_status(:ok) + expect(json_response[field.to_s]).to eq('private') + expect(Project.find_by(path: project[:path]).public_send(field)).to eq(ProjectFeature::PRIVATE) + end end it 'returns 400 when nothing sent' do @@ -4687,6 +4708,7 @@ RSpec.describe API::Projects do end end end + describe 'PUT /projects/:id/transfer' do context 'when authenticated as owner' do let(:group) { create :group } |