diff options
Diffstat (limited to 'spec/lib/atlassian/jira_connect/client_spec.rb')
-rw-r--r-- | spec/lib/atlassian/jira_connect/client_spec.rb | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/spec/lib/atlassian/jira_connect/client_spec.rb b/spec/lib/atlassian/jira_connect/client_spec.rb index dd3130c78bf..0ae0f02c46e 100644 --- a/spec/lib/atlassian/jira_connect/client_spec.rb +++ b/spec/lib/atlassian/jira_connect/client_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' RSpec.describe Atlassian::JiraConnect::Client do include StubRequests - subject { described_class.new('https://gitlab-test.atlassian.net', 'sample_secret') } + subject(:client) { described_class.new('https://gitlab-test.atlassian.net', 'sample_secret') } let_it_be(:project) { create_default(:project, :repository) } let_it_be(:mrs_by_title) { create_list(:merge_request, 4, :unique_branches, :jira_title) } @@ -413,4 +413,41 @@ RSpec.describe Atlassian::JiraConnect::Client do expect { subject.send(:store_dev_info, project: project, merge_requests: merge_requests) }.not_to exceed_query_limit(control_count) end end + + describe '#user_info' do + let(:account_id) { '12345' } + let(:response_body) do + { + groups: { + items: [ + { name: 'site-admins' } + ] + } + }.to_json + end + + before do + stub_full_request("https://gitlab-test.atlassian.net/rest/api/3/user?accountId=#{account_id}&expand=groups") + .to_return(status: response_status, body: response_body, headers: { 'Content-Type': 'application/json' }) + end + + context 'with a successful response' do + let(:response_status) { 200 } + + it 'returns a JiraUser instance' do + jira_user = client.user_info(account_id) + + expect(jira_user).to be_a(Atlassian::JiraConnect::JiraUser) + expect(jira_user).to be_site_admin + end + end + + context 'with a failed response' do + let(:response_status) { 401 } + + it 'returns nil' do + expect(client.user_info(account_id)).to be_nil + end + end + end end |