summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/jira_import/user_mapper_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/jira_import/user_mapper_spec.rb')
-rw-r--r--spec/lib/gitlab/jira_import/user_mapper_spec.rb80
1 files changed, 80 insertions, 0 deletions
diff --git a/spec/lib/gitlab/jira_import/user_mapper_spec.rb b/spec/lib/gitlab/jira_import/user_mapper_spec.rb
new file mode 100644
index 00000000000..c8c8bd3c5b0
--- /dev/null
+++ b/spec/lib/gitlab/jira_import/user_mapper_spec.rb
@@ -0,0 +1,80 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::JiraImport::UserMapper do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, group: group) }
+ let_it_be(:user) { create(:user, email: 'user@example.com') }
+ let_it_be(:email) { create(:email, user: user, email: 'second_email@example.com', confirmed_at: nil) }
+
+ let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => 'user@example.com' } }
+
+ describe '#execute' do
+ subject { described_class.new(project, jira_user).execute }
+
+ context 'when jira_user is nil' do
+ let(:jira_user) { nil }
+
+ it 'returns nil' do
+ expect(subject).to be_nil
+ end
+ end
+
+ context 'when Gitlab user is not found by email' do
+ let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => 'other@example.com' } }
+
+ it 'returns nil' do
+ expect(subject).to be_nil
+ end
+ end
+
+ context 'when jira_user emailAddress is nil' do
+ let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => nil } }
+
+ it 'returns nil' do
+ expect(subject).to be_nil
+ end
+ end
+
+ context 'when jira_user emailAddress key is missing' do
+ let(:jira_user) { { 'acountId' => '1a2b' } }
+
+ it 'returns nil' do
+ expect(subject).to be_nil
+ end
+ end
+
+ context 'when found user is not a project member' do
+ it 'returns nil' do
+ expect(subject).to be_nil
+ end
+ end
+
+ context 'when found user is a project member' do
+ it 'returns the found user' do
+ project.add_developer(user)
+
+ expect(subject).to eq(user)
+ end
+ end
+
+ context 'when user found by unconfirmd secondary address is a project member' do
+ let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => 'second_email@example.com' } }
+
+ it 'returns the found user' do
+ project.add_developer(user)
+
+ expect(subject).to eq(user)
+ end
+ end
+
+ context 'when user is a group member' do
+ it 'returns the found user' do
+ group.add_developer(user)
+
+ expect(subject).to eq(user)
+ end
+ end
+ end
+end