summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorAsh McKenzie <amckenzie@gitlab.com>2018-08-01 13:47:33 +1000
committerAsh McKenzie <amckenzie@gitlab.com>2018-08-01 15:08:45 +1000
commit3f421a018e918865a3a36300a4dcefc5d1c8676a (patch)
tree65c018b25b0c274b4911c0b754b3b5f1c2e3d59e /spec
parent5663f7a16f210bdcd6f0f884c790670fd8a9549f (diff)
downloadgitlab-shell-3f421a018e918865a3a36300a4dcefc5d1c8676a.tar.gz
Update Actor::Username, add specs
Diffstat (limited to 'spec')
-rw-r--r--spec/actor/username_spec.rb79
-rw-r--r--spec/actor_spec.rb6
2 files changed, 85 insertions, 0 deletions
diff --git a/spec/actor/username_spec.rb b/spec/actor/username_spec.rb
new file mode 100644
index 0000000..a02bf12
--- /dev/null
+++ b/spec/actor/username_spec.rb
@@ -0,0 +1,79 @@
+require_relative '../spec_helper'
+require_relative '../../lib/actor/username'
+
+describe Actor::Username do
+ let(:username) { 'testuser' }
+ let(:api) { double(GitlabNet) }
+
+ let(:discover_payload) { { 'username' => username } }
+ let(:audit_usernames) { nil }
+
+ before do
+ allow(GitlabNet).to receive(:new).and_return(api)
+ allow(api).to receive(:discover).with(subject).and_return(discover_payload)
+ end
+
+ describe '.from' do
+ it 'returns an instance of Actor::Username' do
+ expect(described_class.from("username-#{username}")).to be_a(Actor::Username)
+ end
+
+ it 'has an id == 1' do
+ expect(described_class.from('username-1').id).to eq '1'
+ end
+ end
+
+ describe '.identifier_prefix' do
+ it "returns 'user'" do
+ expect(described_class.identifier_prefix).to eql 'username'
+ end
+ end
+
+ describe '.identifier_key' do
+ it "returns 'username'" do
+ expect(described_class.identifier_key).to eql 'username'
+ end
+ end
+
+ subject { described_class.new(username, audit_usernames: audit_usernames) }
+
+ describe '#username' do
+ context 'without a valid user' do
+ it "returns '@testuser'" do
+ expect(subject.username).to eql "@#{username}"
+ end
+ end
+
+ context 'without a valid user' do
+ let(:discover_payload) { nil }
+
+ it "returns 'Anonymous'" do
+ expect(subject.username).to eql 'Anonymous'
+ end
+ end
+ end
+
+ describe '#identifier' do
+ it "returns 'username-testuser'" do
+ expect(subject.identifier).to eql 'username-testuser'
+ end
+ end
+
+ describe '#log_username' do
+ context 'when audit_usernames is true' do
+ let(:audit_usernames) { true }
+
+ it "returns '@testuser'" do
+ expect(subject.log_username).to eql "@#{username}"
+ end
+ end
+
+ context 'when audit_usernames is false' do
+ let(:audit_usernames) { false }
+
+ it "returns 'user with identifier username-testuser'" do
+ expect(subject.log_username).to eql "user with identifier username-#{username}"
+ end
+ end
+ end
+end
diff --git a/spec/actor_spec.rb b/spec/actor_spec.rb
index c88c405..57cc718 100644
--- a/spec/actor_spec.rb
+++ b/spec/actor_spec.rb
@@ -23,6 +23,12 @@ describe Actor do
expect(described_class.new_from('user-1')).to be_a(Actor::User)
end
end
+
+ context 'of Username' do
+ it 'returns an instance of Username' do
+ expect(described_class.new_from('username-john1')).to be_a(Actor::Username)
+ end
+ end
end
end
end