[QA] Use public_email instead of email since it's available

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Rémy Coutable 2019-01-21 17:24:56 +01:00
parent cae2330b54
commit cbc3d1f911
No known key found for this signature in database
GPG key ID: 98DFFD1C0C62B70B
4 changed files with 134 additions and 4 deletions

View file

@ -17,11 +17,11 @@ module QA
end
def username
@username ||= "qa-user-#{unique_id}"
@username || "qa-user-#{unique_id}"
end
def password
@password ||= 'password'
@password || 'password'
end
def name
@ -29,7 +29,15 @@ module QA
end
def email
@email ||= api_resource&.dig(:email) || "#{username}@example.com"
@email ||= "#{username}@example.com"
end
def public_email
@public_email ||= begin
api_public_email = api_resource&.dig(:public_email)
api_public_email && api_public_email != '' ? api_public_email : Runtime::User.default_email
end
end
def credentials_given?

View file

@ -7,6 +7,10 @@ module QA
'root'
end
def default_email
'admin@example.com'
end
def default_password
'5iveL!fe'
end

View file

@ -47,7 +47,7 @@ module QA
Page::Project::Commit::Show.perform(&:select_email_patches)
expect(page).to have_content("From: #{user.name} <#{user.email}>")
expect(page).to have_content("From: #{user.name} <#{user.public_email}>")
expect(page).to have_content('Subject: [PATCH] Add second file')
expect(page).to have_content('diff --git a/second b/second')
end

View file

@ -0,0 +1,118 @@
# frozen_string_literal: true
describe QA::Resource::User do
let(:api_resource) do
{
name: "GitLab QA",
username: "gitlab-qa",
web_url: "https://staging.gitlab.com/gitlab-qa",
public_email: "1614863-gitlab-qa@users.noreply.staging.gitlab.com"
}
end
describe '#username' do
it 'generates a default username' do
expect(subject.username).to match(/qa-user-\w+/)
end
it 'is possible to set the username' do
subject.username = 'johndoe'
expect(subject.username).to eq('johndoe')
end
end
describe '#password' do
it 'generates a default password' do
expect(subject.password).to eq('password')
end
it 'is possible to set the password' do
subject.password = 'secret'
expect(subject.password).to eq('secret')
end
end
describe '#name' do
it 'defaults to the username' do
expect(subject.name).to eq(subject.username)
end
it 'retrieves the name from the api_resource if present' do
subject.__send__(:api_resource=, api_resource)
expect(subject.name).to eq(api_resource[:name])
end
it 'is possible to set the name' do
subject.name = 'John Doe'
expect(subject.name).to eq('John Doe')
end
end
describe '#email' do
it 'defaults to the <username>@example.com' do
expect(subject.email).to eq("#{subject.username}@example.com")
end
it 'is possible to set the email' do
subject.email = 'johndoe@example.org'
expect(subject.email).to eq('johndoe@example.org')
end
end
describe '#public_email' do
it 'defaults to QA::Runtime::User.default_email' do
expect(subject.public_email).to eq(QA::Runtime::User.default_email)
end
it 'retrieves the public_email from the api_resource if present' do
subject.__send__(:api_resource=, api_resource)
expect(subject.public_email).to eq(api_resource[:public_email])
end
it 'defaults to QA::Runtime::User.default_email if the public_email from the api_resource is blank' do
subject.__send__(:api_resource=, api_resource.merge(public_email: ''))
expect(subject.public_email).to eq(QA::Runtime::User.default_email)
end
end
describe '#credentials_given?' do
it 'returns false when username and email have not been overridden' do
expect(subject).not_to be_credentials_given
end
it 'returns false even after username and email have been called' do
# Call #username and #password to ensure this doesn't set their respective
# instance variable.
subject.username
subject.password
expect(subject).not_to be_credentials_given
end
it 'returns false if only the username has been overridden' do
subject.username = 'johndoe'
expect(subject).not_to be_credentials_given
end
it 'returns false if only the password has been overridden' do
subject.password = 'secret'
expect(subject).not_to be_credentials_given
end
it 'returns true if both the username and password have been overridden' do
subject.username = 'johndoe'
subject.password = 'secret'
expect(subject).to be_credentials_given
end
end
end