diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-20 15:26:25 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-20 15:26:25 +0300 |
commit | a09983ae35713f5a2bbb100981116d31ce99826e (patch) | |
tree | 2ee2af7bd104d57086db360a7e6d8c9d5d43667a /spec/services/import | |
parent | 18c5ab32b738c0b6ecb4d0df3994000482f34bd8 (diff) |
Add latest changes from gitlab-org/gitlab@13-2-stable-ee
Diffstat (limited to 'spec/services/import')
-rw-r--r-- | spec/services/import/bitbucket_server_service_spec.rb | 113 | ||||
-rw-r--r-- | spec/services/import/github_service_spec.rb | 2 |
2 files changed, 114 insertions, 1 deletions
diff --git a/spec/services/import/bitbucket_server_service_spec.rb b/spec/services/import/bitbucket_server_service_spec.rb new file mode 100644 index 00000000000..c548e87b040 --- /dev/null +++ b/spec/services/import/bitbucket_server_service_spec.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Import::BitbucketServerService do + let_it_be(:user) { create(:user) } + let(:base_uri) { "https://test:7990" } + let(:token) { "asdasd12345" } + let(:secret) { "sekrettt" } + let(:project_key) { 'TES' } + let(:repo_slug) { 'vim' } + let(:repo) do + { + name: 'vim', + description: 'test', + visibility_level: Gitlab::VisibilityLevel::PUBLIC, + browse_url: 'http://repo.com/repo/repo', + clone_url: 'http://repo.com/repo/repo.git' + } + end + + let(:client) { double(BitbucketServer::Client) } + + let(:credentials) { { base_uri: base_uri, user: user, password: token } } + let(:params) { { bitbucket_server_url: base_uri, bitbucket_server_username: user, personal_access_token: token, bitbucket_server_project: project_key, bitbucket_server_repo: repo_slug } } + + subject { described_class.new(client, user, params) } + + before do + allow(subject).to receive(:authorized?).and_return(true) + end + + context 'when no repo is found' do + before do + allow(subject).to receive(:authorized?).and_return(true) + allow(client).to receive(:repo).and_return(nil) + end + + it 'returns an error' do + result = subject.execute(credentials) + + expect(result).to include( + message: "Project #{project_key}/#{repo_slug} could not be found", + status: :error, + http_status: :unprocessable_entity + ) + end + end + + context 'when user is unauthorized' do + before do + allow(subject).to receive(:authorized?).and_return(false) + end + + it 'returns an error' do + result = subject.execute(credentials) + + expect(result).to include( + message: "You don't have permissions to create this project", + status: :error, + http_status: :unauthorized + ) + end + end + + context 'verify url' do + shared_examples 'denies local request' do + before do + allow(client).to receive(:repo).with(project_key, repo_slug).and_return(double(repo)) + end + + it 'does not allow requests' do + result = subject.execute(credentials) + expect(result[:status]).to eq(:error) + expect(result[:message]).to include("Invalid URL:") + end + end + + context 'when host is localhost' do + before do + allow(subject).to receive(:url).and_return('https://localhost:3000') + end + + include_examples 'denies local request' + end + + context 'when host is on local network' do + before do + allow(subject).to receive(:url).and_return('https://192.168.0.191') + end + + include_examples 'denies local request' + end + + context 'when host is ftp protocol' do + before do + allow(subject).to receive(:url).and_return('ftp://testing') + end + + include_examples 'denies local request' + end + end + + it 'raises an exception for unknown error causes' do + exception = StandardError.new('Not Implemented') + + allow(client).to receive(:repo).and_raise(exception) + + expect(Gitlab::Import::Logger).not_to receive(:error) + + expect { subject.execute(credentials) }.to raise_error(exception) + end +end diff --git a/spec/services/import/github_service_spec.rb b/spec/services/import/github_service_spec.rb index 461b17e0e33..266ff309662 100644 --- a/spec/services/import/github_service_spec.rb +++ b/spec/services/import/github_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Import::GithubService do +RSpec.describe Import::GithubService do let_it_be(:user) { create(:user) } let_it_be(:token) { 'complex-token' } let_it_be(:access_params) { { github_access_token: 'github-complex-token' } } |