diff options
Diffstat (limited to 'spec/requests/api/bulk_imports_spec.rb')
-rw-r--r-- | spec/requests/api/bulk_imports_spec.rb | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/spec/requests/api/bulk_imports_spec.rb b/spec/requests/api/bulk_imports_spec.rb index 8aad56c9fc3..d3d4a723616 100644 --- a/spec/requests/api/bulk_imports_spec.rb +++ b/spec/requests/api/bulk_imports_spec.rb @@ -18,8 +18,26 @@ RSpec.describe API::BulkImports, feature_category: :importers do end shared_examples 'disabled feature' do - it 'returns 404' do + before do stub_application_setting(bulk_import_enabled: false) + stub_feature_flags(override_bulk_import_disabled: false) + end + + it_behaves_like '404 response' do + let(:message) { '404 Not Found' } + end + + it 'enables the feature when override flag is enabled for the user' do + stub_feature_flags(override_bulk_import_disabled: user) + + request + + expect(response).not_to have_gitlab_http_status(:not_found) + end + + it 'does not enable the feature when override flag is enabled for another user' do + other_user = create(:user) + stub_feature_flags(override_bulk_import_disabled: other_user) request @@ -71,7 +89,7 @@ RSpec.describe API::BulkImports, feature_category: :importers do end end - include_examples 'disabled feature' + it_behaves_like 'disabled feature' end describe 'POST /bulk_imports' do @@ -262,26 +280,7 @@ RSpec.describe API::BulkImports, feature_category: :importers do end context 'when the destination_slug is invalid' do - it 'returns invalid error when restricting special characters is disabled' do - Feature.disable(:restrict_special_characters_in_namespace_path) - - params[:entities][0][:destination_slug] = 'des?tin?atoi-slugg' - - request - expect(response).to have_gitlab_http_status(:bad_request) - expect(json_response['error']).to include("entities[0][destination_slug] cannot start with " \ - "a non-alphanumeric character except for periods or " \ - "underscores, can contain only alphanumeric characters, " \ - "periods, and underscores, cannot end with a period or " \ - "forward slash, and has no leading or trailing forward " \ - "slashes. It can only contain alphanumeric characters, " \ - "periods, underscores, and dashes. For example, " \ - "'destination_namespace' not 'destination/namespace'") - end - - it 'returns invalid error when restricting special characters is enabled' do - Feature.enable(:restrict_special_characters_in_namespace_path) - + it 'returns invalid error' do params[:entities][0][:destination_slug] = 'des?tin?atoi-slugg' request @@ -347,7 +346,7 @@ RSpec.describe API::BulkImports, feature_category: :importers do end end - include_examples 'disabled feature' + it_behaves_like 'disabled feature' context 'when request exceeds rate limits' do it 'prevents user from starting a new migration' do @@ -371,7 +370,7 @@ RSpec.describe API::BulkImports, feature_category: :importers do expect(json_response.pluck('id')).to contain_exactly(entity_1.id, entity_2.id, entity_3.id) end - include_examples 'disabled feature' + it_behaves_like 'disabled feature' end describe 'GET /bulk_imports/:id' do @@ -384,7 +383,7 @@ RSpec.describe API::BulkImports, feature_category: :importers do expect(json_response['id']).to eq(import_1.id) end - include_examples 'disabled feature' + it_behaves_like 'disabled feature' end describe 'GET /bulk_imports/:id/entities' do @@ -398,7 +397,7 @@ RSpec.describe API::BulkImports, feature_category: :importers do expect(json_response.first['failures'].first['exception_class']).to eq(failure_3.exception_class) end - include_examples 'disabled feature' + it_behaves_like 'disabled feature' end describe 'GET /bulk_imports/:id/entities/:entity_id' do @@ -411,7 +410,7 @@ RSpec.describe API::BulkImports, feature_category: :importers do expect(json_response['id']).to eq(entity_2.id) end - include_examples 'disabled feature' + it_behaves_like 'disabled feature' end context 'when user is unauthenticated' do |