summaryrefslogtreecommitdiff
path: root/spec/controllers/import/bulk_imports_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/import/bulk_imports_controller_spec.rb')
-rw-r--r--spec/controllers/import/bulk_imports_controller_spec.rb85
1 files changed, 81 insertions, 4 deletions
diff --git a/spec/controllers/import/bulk_imports_controller_spec.rb b/spec/controllers/import/bulk_imports_controller_spec.rb
index a0bb39f3e98..a0d5b576e74 100644
--- a/spec/controllers/import/bulk_imports_controller_spec.rb
+++ b/spec/controllers/import/bulk_imports_controller_spec.rb
@@ -2,10 +2,12 @@
require 'spec_helper'
-RSpec.describe Import::BulkImportsController do
+RSpec.describe Import::BulkImportsController, feature_category: :importers do
let_it_be(:user) { create(:user) }
before do
+ stub_application_setting(bulk_import_enabled: true)
+
sign_in(user)
end
@@ -16,6 +18,13 @@ RSpec.describe Import::BulkImportsController do
end
describe 'POST configure' do
+ before do
+ allow_next_instance_of(BulkImports::Clients::HTTP) do |instance|
+ allow(instance).to receive(:validate_instance_version!).and_return(true)
+ allow(instance).to receive(:validate_import_scopes!).and_return(true)
+ end
+ end
+
context 'when no params are passed in' do
it 'clears out existing session' do
post :configure
@@ -28,8 +37,57 @@ RSpec.describe Import::BulkImportsController do
end
end
+ context 'when URL is invalid' do
+ it 'redirects to initial import page' do
+ token = 'token'
+ url = 'http://192.168.0.1'
+
+ post :configure, params: { bulk_import_gitlab_access_token: token, bulk_import_gitlab_url: url }
+
+ expect(response).to redirect_to new_group_path(anchor: 'import-group-pane')
+ expect(flash[:alert]).to include('Specified URL cannot be used')
+ end
+ end
+
+ context 'when token scope is invalid' do
+ before do
+ allow_next_instance_of(BulkImports::Clients::HTTP) do |instance|
+ allow(instance).to receive(:validate_instance_version!).and_return(true)
+ allow(instance).to receive(:validate_import_scopes!).and_raise(BulkImports::Error.new('Error!'))
+ end
+ end
+
+ it 'redirects to initial import page' do
+ token = 'token'
+ url = 'https://gitlab.example'
+
+ post :configure, params: { bulk_import_gitlab_access_token: token, bulk_import_gitlab_url: url }
+
+ expect(response).to redirect_to new_group_path(anchor: 'import-group-pane')
+ expect(flash[:alert]).to include('Error!')
+ end
+ end
+
+ context 'when instance version is incompatible' do
+ before do
+ allow_next_instance_of(BulkImports::Clients::HTTP) do |instance|
+ allow(instance).to receive(:validate_instance_version!).and_raise(BulkImports::Error.new('Error!'))
+ end
+ end
+
+ it 'redirects to initial import page' do
+ token = 'token'
+ url = 'https://gitlab.example'
+
+ post :configure, params: { bulk_import_gitlab_access_token: token, bulk_import_gitlab_url: url }
+
+ expect(response).to redirect_to new_group_path(anchor: 'import-group-pane')
+ expect(flash[:alert]).to include('Error!')
+ end
+ end
+
it 'sets the session variables' do
- token = 'token'
+ token = 'invalid token'
url = 'https://gitlab.example'
post :configure, params: { bulk_import_gitlab_access_token: token, bulk_import_gitlab_url: url }
@@ -100,6 +158,18 @@ RSpec.describe Import::BulkImportsController do
)
end
+ let(:source_version) do
+ Gitlab::VersionInfo.new(::BulkImport::MIN_MAJOR_VERSION,
+ ::BulkImport::MIN_MINOR_VERSION_FOR_PROJECT)
+ end
+
+ before do
+ allow_next_instance_of(BulkImports::Clients::HTTP) do |instance|
+ allow(instance).to receive(:instance_version).and_return(source_version)
+ allow(instance).to receive(:instance_enterprise).and_return(false)
+ end
+ end
+
it 'returns serialized group data' do
get_status
@@ -201,8 +271,15 @@ RSpec.describe Import::BulkImportsController do
end
context 'when connection error occurs' do
+ let(:source_version) do
+ Gitlab::VersionInfo.new(::BulkImport::MIN_MAJOR_VERSION,
+ ::BulkImport::MIN_MINOR_VERSION_FOR_PROJECT)
+ end
+
before do
allow_next_instance_of(BulkImports::Clients::HTTP) do |instance|
+ allow(instance).to receive(:instance_version).and_return(source_version)
+ allow(instance).to receive(:instance_enterprise).and_return(false)
allow(instance).to receive(:get).and_raise(BulkImports::Error)
end
end
@@ -326,9 +403,9 @@ RSpec.describe Import::BulkImportsController do
end
end
- context 'when bulk_import feature flag is disabled' do
+ context 'when feature is disabled' do
before do
- stub_feature_flags(bulk_import: false)
+ stub_application_setting(bulk_import_enabled: false)
end
context 'POST configure' do