From f1479b56b71bef63517b90fcde99e6508e9c54af Mon Sep 17 00:00:00 2001 From: Jeroen van Baarsen Date: Mon, 9 May 2016 18:00:28 +0200 Subject: Remove the annotate gem and delete old annotations In 8278b763d96ef10c6494409b18b7eb541463af29 the default behaviour of annotation has changes, which was causing a lot of noise in diffs. We decided in #17382 that it is better to get rid of the whole annotate gem, and instead let people look at schema.rb for the columns in a table. Fixes: #17382 --- spec/models/user_spec.rb | 63 ------------------------------------------------ 1 file changed, 63 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 8b2fb77e28e..26d4e139396 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,66 +1,3 @@ -# == Schema Information -# -# Table name: users -# -# id :integer not null, primary key -# email :string(255) default(""), not null -# encrypted_password :string(255) default(""), not null -# reset_password_token :string(255) -# reset_password_sent_at :datetime -# remember_created_at :datetime -# sign_in_count :integer default(0) -# current_sign_in_at :datetime -# last_sign_in_at :datetime -# current_sign_in_ip :string(255) -# last_sign_in_ip :string(255) -# created_at :datetime -# updated_at :datetime -# name :string(255) -# admin :boolean default(FALSE), not null -# projects_limit :integer default(10) -# skype :string(255) default(""), not null -# linkedin :string(255) default(""), not null -# twitter :string(255) default(""), not null -# authentication_token :string(255) -# theme_id :integer default(1), not null -# bio :string(255) -# failed_attempts :integer default(0) -# locked_at :datetime -# username :string(255) -# can_create_group :boolean default(TRUE), not null -# can_create_team :boolean default(TRUE), not null -# state :string(255) -# color_scheme_id :integer default(1), not null -# notification_level :integer default(1), not null -# password_expires_at :datetime -# created_by_id :integer -# last_credential_check_at :datetime -# avatar :string(255) -# confirmation_token :string(255) -# confirmed_at :datetime -# confirmation_sent_at :datetime -# unconfirmed_email :string(255) -# hide_no_ssh_key :boolean default(FALSE) -# website_url :string(255) default(""), not null -# notification_email :string(255) -# hide_no_password :boolean default(FALSE) -# password_automatically_set :boolean default(FALSE) -# location :string(255) -# encrypted_otp_secret :string(255) -# encrypted_otp_secret_iv :string(255) -# encrypted_otp_secret_salt :string(255) -# otp_required_for_login :boolean default(FALSE), not null -# otp_backup_codes :text -# public_email :string(255) default(""), not null -# dashboard :integer default(0) -# project_view :integer default(0) -# consumed_timestep :integer -# layout :integer default(0) -# hide_project_limit :boolean default(FALSE) -# unlock_token :string -# otp_grace_period_started_at :datetime -# - require 'spec_helper' describe User, models: true do -- cgit v1.2.1 From dccf8a9fc8d4dde91942944f6b47387bfb13c380 Mon Sep 17 00:00:00 2001 From: Zeger-Jan van de Weg Date: Mon, 25 Apr 2016 20:10:20 +0200 Subject: Add tests on Awardables and Award Emoji --- spec/models/user_spec.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 8b2fb77e28e..de1a233dfff 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -93,6 +93,7 @@ describe User, models: true do it { is_expected.to have_one(:abuse_report) } it { is_expected.to have_many(:spam_logs).dependent(:destroy) } it { is_expected.to have_many(:todos).dependent(:destroy) } + it { is_expected.to have_many(:award_emoji).dependent(:destroy) } end describe 'validations' do -- cgit v1.2.1 From 97424ea544d0954e582a356586270e983d3bbb7a Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Tue, 10 May 2016 18:03:55 +0100 Subject: Restrict starred projects to viewable ones `User#starred_projects` doesn't perform any visibility checks. This has a couple of problems: 1. It assumes a user can always view all of their starred projects in perpetuity (project not changed to private, access revoked, etc.). 2. It assumes that we'll only ever allow a user to star a project they can view. This is currently the case, but bugs happen. Add `User#viewable_starred_projects` to filter the starred projects by those the user either has explicit access to, or are public or internal. Then use that in all places where we list the user's starred projects. --- spec/models/user_spec.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 26d4e139396..06d1ca3b7da 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -233,6 +233,8 @@ describe User, models: true do @project = create :project, namespace: @user.namespace @project_2 = create :project, group: create(:group) # Grant MASTER access to the user @project_3 = create :project, group: create(:group) # Grant DEVELOPER access to the user + @project_4 = create :project, group: create(:group) + @project_5 = create :project, group: create(:group) @project_2.team << [@user, :master] @project_3.team << [@user, :developer] @@ -782,4 +784,26 @@ describe User, models: true do it { is_expected.to eq([private_project]) } end + + describe '#viewable_starred_projects' do + let(:user) { create(:user) } + let(:public_project) { create(:project, :public) } + let(:private_project) { create(:project, :private) } + let(:private_viewable_project) { create(:project, :private) } + let(:viewable?) { -> (project) { user.can?(:read_project, project) } } + let(:projects) { [public_project, private_project, private_viewable_project] } + + before do + private_viewable_project.team << [user, Gitlab::Access::MASTER] + projects.each { |project| user.toggle_star(project) } + end + + it 'returns only starred projects the user can view' do + expect(user.viewable_starred_projects).to all(satisfy(&viewable?)) + end + + it 'rejects only starred projects the user can not view' do + expect(projects - user.viewable_starred_projects).not_to include(satisfy(&viewable?)) + end + end end -- cgit v1.2.1 From acd8930c46c06312f87c5ea0bb549b5435feece8 Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Wed, 11 May 2016 09:03:23 +0100 Subject: Tidy up user project specs --- spec/models/user_spec.rb | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 06d1ca3b7da..10e7e693571 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -233,8 +233,6 @@ describe User, models: true do @project = create :project, namespace: @user.namespace @project_2 = create :project, group: create(:group) # Grant MASTER access to the user @project_3 = create :project, group: create(:group) # Grant DEVELOPER access to the user - @project_4 = create :project, group: create(:group) - @project_5 = create :project, group: create(:group) @project_2.team << [@user, :master] @project_3.team << [@user, :developer] @@ -787,23 +785,20 @@ describe User, models: true do describe '#viewable_starred_projects' do let(:user) { create(:user) } - let(:public_project) { create(:project, :public) } - let(:private_project) { create(:project, :private) } - let(:private_viewable_project) { create(:project, :private) } - let(:viewable?) { -> (project) { user.can?(:read_project, project) } } - let(:projects) { [public_project, private_project, private_viewable_project] } + let(:public_project) { create(:empty_project, :public) } + let(:private_project) { create(:empty_project, :private) } + let(:private_viewable_project) { create(:empty_project, :private) } before do private_viewable_project.team << [user, Gitlab::Access::MASTER] - projects.each { |project| user.toggle_star(project) } - end - it 'returns only starred projects the user can view' do - expect(user.viewable_starred_projects).to all(satisfy(&viewable?)) + [public_project, private_project, private_viewable_project].each do |project| + user.toggle_star(project) + end end - it 'rejects only starred projects the user can not view' do - expect(projects - user.viewable_starred_projects).not_to include(satisfy(&viewable?)) + it 'returns only starred projects the user can view' do + expect(user.viewable_starred_projects).not_to include(private_project) end end end -- cgit v1.2.1 From c5526a2d9a946d99d7b4a72fc488fe6e0a9ad60b Mon Sep 17 00:00:00 2001 From: Felipe Artur Date: Thu, 28 Apr 2016 17:09:15 -0300 Subject: Change skip_user_confirmation_email to send_user_confirmation_email --- spec/models/user_spec.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 10e7e693571..9581990666b 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -141,6 +141,7 @@ describe User, models: true do end describe '#confirm' do + before { allow(current_application_settings).to receive(:send_user_confirmation_email).and_return(true) } let(:user) { create(:user, confirmed_at: nil, unconfirmed_email: 'test@gitlab.com') } it 'returns unconfirmed' do -- cgit v1.2.1 From 7d57b110934f50225142789a93a0d4f54cf446f7 Mon Sep 17 00:00:00 2001 From: DJ Mountney Date: Fri, 27 May 2016 19:05:52 -0700 Subject: Update tests for the current_application_settings request store changes --- spec/models/user_spec.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 9581990666b..548bec364f8 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -67,7 +67,7 @@ describe User, models: true do describe 'email' do context 'when no signup domains listed' do - before { allow(current_application_settings).to receive(:restricted_signup_domains).and_return([]) } + before { allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return([]) } it 'accepts any email' do user = build(:user, email: "info@example.com") expect(user).to be_valid @@ -75,7 +75,7 @@ describe User, models: true do end context 'when a signup domain is listed and subdomains are allowed' do - before { allow(current_application_settings).to receive(:restricted_signup_domains).and_return(['example.com', '*.example.com']) } + before { allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return(['example.com', '*.example.com']) } it 'accepts info@example.com' do user = build(:user, email: "info@example.com") expect(user).to be_valid @@ -93,7 +93,7 @@ describe User, models: true do end context 'when a signup domain is listed and subdomains are not allowed' do - before { allow(current_application_settings).to receive(:restricted_signup_domains).and_return(['example.com']) } + before { allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return(['example.com']) } it 'accepts info@example.com' do user = build(:user, email: "info@example.com") @@ -141,7 +141,7 @@ describe User, models: true do end describe '#confirm' do - before { allow(current_application_settings).to receive(:send_user_confirmation_email).and_return(true) } + before { allow_any_instance_of(ApplicationSetting).to receive(:send_user_confirmation_email).and_return(true) } let(:user) { create(:user, confirmed_at: nil, unconfirmed_email: 'test@gitlab.com') } it 'returns unconfirmed' do -- cgit v1.2.1 From 791cc9138be6ea1783e3c3853370cf0290f4d41e Mon Sep 17 00:00:00 2001 From: Timothy Andrew Date: Mon, 6 Jun 2016 10:08:42 +0530 Subject: Add a `U2fRegistrations` table/model. - To hold registrations from U2F devices, and to authenticate them. - Previously, `User#two_factor_enabled` was aliased to the `otp_required_for_login` column on `users`. - This commit changes things a bit: - `User#two_factor_enabled` is not a method anymore - `User#two_factor_enabled?` checks both the `otp_required_for_login` column, as well as `U2fRegistration`s - Change all instances of `User#two_factor_enabled` to `User#two_factor_enabled?` - Add the `u2f` gem, and implement registration/authentication at the model level. --- spec/models/user_spec.rb | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 528a79bf221..6ea8bf9bbe1 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -121,6 +121,66 @@ describe User, models: true do end end + describe "scopes" do + describe ".with_two_factor" do + it "returns users with 2fa enabled via OTP" do + user_with_2fa = create(:user, :two_factor_via_otp) + user_without_2fa = create(:user) + users_with_two_factor = User.with_two_factor.pluck(:id) + + expect(users_with_two_factor).to include(user_with_2fa.id) + expect(users_with_two_factor).not_to include(user_without_2fa.id) + end + + it "returns users with 2fa enabled via U2F" do + user_with_2fa = create(:user, :two_factor_via_u2f) + user_without_2fa = create(:user) + users_with_two_factor = User.with_two_factor.pluck(:id) + + expect(users_with_two_factor).to include(user_with_2fa.id) + expect(users_with_two_factor).not_to include(user_without_2fa.id) + end + + it "returns users with 2fa enabled via OTP and U2F" do + user_with_2fa = create(:user, :two_factor_via_otp, :two_factor_via_u2f) + user_without_2fa = create(:user) + users_with_two_factor = User.with_two_factor.pluck(:id) + + expect(users_with_two_factor).to eq([user_with_2fa.id]) + expect(users_with_two_factor).not_to include(user_without_2fa.id) + end + end + + describe ".without_two_factor" do + it "excludes users with 2fa enabled via OTP" do + user_with_2fa = create(:user, :two_factor_via_otp) + user_without_2fa = create(:user) + users_without_two_factor = User.without_two_factor.pluck(:id) + + expect(users_without_two_factor).to include(user_without_2fa.id) + expect(users_without_two_factor).not_to include(user_with_2fa.id) + end + + it "excludes users with 2fa enabled via U2F" do + user_with_2fa = create(:user, :two_factor_via_u2f) + user_without_2fa = create(:user) + users_without_two_factor = User.without_two_factor.pluck(:id) + + expect(users_without_two_factor).to include(user_without_2fa.id) + expect(users_without_two_factor).not_to include(user_with_2fa.id) + end + + it "excludes users with 2fa enabled via OTP and U2F" do + user_with_2fa = create(:user, :two_factor_via_otp, :two_factor_via_u2f) + user_without_2fa = create(:user) + users_without_two_factor = User.without_two_factor.pluck(:id) + + expect(users_without_two_factor).to include(user_without_2fa.id) + expect(users_without_two_factor).not_to include(user_with_2fa.id) + end + end + end + describe "Respond to" do it { is_expected.to respond_to(:is_admin?) } it { is_expected.to respond_to(:name) } -- cgit v1.2.1 From e8cf89fa0693df95954339bd7593cd13cbbe2e72 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Wed, 1 Jun 2016 21:00:56 +0800 Subject: Add a test for User#ci_authorized_runners --- spec/models/user_spec.rb | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6ea8bf9bbe1..2802c7e70bd 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -845,6 +845,63 @@ describe User, models: true do it { is_expected.to eq([private_project]) } end + describe '#ci_authorized_runners' do + let(:user) { create(:user) } + let(:runner) { create(:ci_runner) } + + before { project.runners << runner } + + context 'without any projects' do + let(:project) { create(:project) } + + it 'does not load' do + expect(user.ci_authorized_runners).to eq([]) + end + end + + context 'with personal projects runners' do + let(:namespace) { create(:namespace, owner: user) } + let(:project) { create(:project, namespace: namespace) } + + it 'loads' do + expect(user.ci_authorized_runners).to eq([runner]) + end + end + + shared_examples :member do + it 'loads when the user is a master' do + add_user(Gitlab::Access::MASTER) + expect(user.ci_authorized_runners).to eq([runner]) + end + + it 'does not load when the user is a developer' do + add_user(Gitlab::Access::DEVELOPER) + expect(user.ci_authorized_runners).to eq([]) + end + end + + context 'with groups projects runners' do + let(:group) { create(:group) } + let(:project) { create(:project, group: group) } + + def add_user access + group.add_user(user, access) + end + + it_behaves_like :member + end + + context 'with other projects runners' do + let(:project) { create(:project) } + + def add_user access + Member.add_user(project.project_members, user, access) + end + + it_behaves_like :member + end + end + describe '#viewable_starred_projects' do let(:user) { create(:user) } let(:public_project) { create(:empty_project, :public) } -- cgit v1.2.1 From 5360ef2c5bbdd2706361a59310dba84ed11305bb Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Thu, 2 Jun 2016 05:03:00 +0000 Subject: This is easier to write: Feedback from: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4404#note_12194471 --- spec/models/user_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 2802c7e70bd..6f7d5a3c14d 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -895,7 +895,7 @@ describe User, models: true do let(:project) { create(:project) } def add_user access - Member.add_user(project.project_members, user, access) + project.team << [user, access] end it_behaves_like :member -- cgit v1.2.1 From 0c2962eb86c4f6e938ad817372498e6600a19a1c Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Thu, 2 Jun 2016 05:10:59 +0000 Subject: Use subject for more consistent testing style: Feedback from: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4404#note_12194489 --- spec/models/user_spec.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6f7d5a3c14d..d9e65586a8e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -848,6 +848,7 @@ describe User, models: true do describe '#ci_authorized_runners' do let(:user) { create(:user) } let(:runner) { create(:ci_runner) } + subject { user.ci_authorized_runners } before { project.runners << runner } @@ -855,7 +856,7 @@ describe User, models: true do let(:project) { create(:project) } it 'does not load' do - expect(user.ci_authorized_runners).to eq([]) + is_expected.to eq([]) end end @@ -864,19 +865,19 @@ describe User, models: true do let(:project) { create(:project, namespace: namespace) } it 'loads' do - expect(user.ci_authorized_runners).to eq([runner]) + is_expected.to eq([runner]) end end shared_examples :member do it 'loads when the user is a master' do add_user(Gitlab::Access::MASTER) - expect(user.ci_authorized_runners).to eq([runner]) + is_expected.to eq([runner]) end it 'does not load when the user is a developer' do add_user(Gitlab::Access::DEVELOPER) - expect(user.ci_authorized_runners).to eq([]) + is_expected.to eq([]) end end -- cgit v1.2.1 From 2dd60b9b3f400e7709000eb1b4b7b7ab21326d5f Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Thu, 2 Jun 2016 05:15:45 +0000 Subject: Use rspec's matchers and update style: Feedback from: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4404#note_12194552 --- spec/models/user_spec.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index d9e65586a8e..4c213f633de 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -856,7 +856,7 @@ describe User, models: true do let(:project) { create(:project) } it 'does not load' do - is_expected.to eq([]) + is_expected.to be_empty end end @@ -865,19 +865,21 @@ describe User, models: true do let(:project) { create(:project, namespace: namespace) } it 'loads' do - is_expected.to eq([runner]) + is_expected.to contain_exactly(runner) end end shared_examples :member do - it 'loads when the user is a master' do - add_user(Gitlab::Access::MASTER) - is_expected.to eq([runner]) + context 'when the user is a master' do + before { add_user(Gitlab::Access::MASTER) } + + it { is_expected.to contain_exactly(runner) } end - it 'does not load when the user is a developer' do - add_user(Gitlab::Access::DEVELOPER) - is_expected.to eq([]) + context 'when the user is a developer' do + before { add_user(Gitlab::Access::DEVELOPER) } + + it { is_expected.to be_empty } end end -- cgit v1.2.1 From db95704fb484e546ae8cbbb24aa7582a4137b90f Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Thu, 2 Jun 2016 05:27:44 +0000 Subject: Fix method definition style --- spec/models/user_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 4c213f633de..f8c2555d07a 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -887,7 +887,7 @@ describe User, models: true do let(:group) { create(:group) } let(:project) { create(:project, group: group) } - def add_user access + def add_user(access) group.add_user(user, access) end @@ -897,7 +897,7 @@ describe User, models: true do context 'with other projects runners' do let(:project) { create(:project) } - def add_user access + def add_user(access) project.team << [user, access] end -- cgit v1.2.1 From 5f3e647330041cdf588c2def9cba517dd546d365 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Thu, 2 Jun 2016 23:30:27 +0800 Subject: Prefer do and end for before/after: Feedback: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4404#note_12217415 --- spec/models/user_spec.rb | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index f8c2555d07a..84c93dfeb24 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -68,7 +68,9 @@ describe User, models: true do describe 'email' do context 'when no signup domains listed' do - before { allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return([]) } + before do + allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return([]) + end it 'accepts any email' do user = build(:user, email: "info@example.com") expect(user).to be_valid @@ -76,7 +78,9 @@ describe User, models: true do end context 'when a signup domain is listed and subdomains are allowed' do - before { allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return(['example.com', '*.example.com']) } + before do + allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return(['example.com', '*.example.com']) + end it 'accepts info@example.com' do user = build(:user, email: "info@example.com") expect(user).to be_valid @@ -94,7 +98,9 @@ describe User, models: true do end context 'when a signup domain is listed and subdomains are not allowed' do - before { allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return(['example.com']) } + before do + allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return(['example.com']) + end it 'accepts info@example.com' do user = build(:user, email: "info@example.com") @@ -202,7 +208,9 @@ describe User, models: true do end describe '#confirm' do - before { allow_any_instance_of(ApplicationSetting).to receive(:send_user_confirmation_email).and_return(true) } + before do + allow_any_instance_of(ApplicationSetting).to receive(:send_user_confirmation_email).and_return(true) + end let(:user) { create(:user, confirmed_at: nil, unconfirmed_email: 'test@gitlab.com') } it 'returns unconfirmed' do @@ -850,7 +858,9 @@ describe User, models: true do let(:runner) { create(:ci_runner) } subject { user.ci_authorized_runners } - before { project.runners << runner } + before do + project.runners << runner + end context 'without any projects' do let(:project) { create(:project) } @@ -871,13 +881,17 @@ describe User, models: true do shared_examples :member do context 'when the user is a master' do - before { add_user(Gitlab::Access::MASTER) } + before do + add_user(Gitlab::Access::MASTER) + end it { is_expected.to contain_exactly(runner) } end context 'when the user is a developer' do - before { add_user(Gitlab::Access::DEVELOPER) } + before do + add_user(Gitlab::Access::DEVELOPER) + end it { is_expected.to be_empty } end -- cgit v1.2.1 From 4fcdcc36f168bc3791536c20a6168eb7428f623d Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Mon, 6 Jun 2016 14:55:18 +0800 Subject: Avoid using subject and is_expected.to: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4404#note_12274602 --- spec/models/user_spec.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 84c93dfeb24..f727611f7ce 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -856,7 +856,6 @@ describe User, models: true do describe '#ci_authorized_runners' do let(:user) { create(:user) } let(:runner) { create(:ci_runner) } - subject { user.ci_authorized_runners } before do project.runners << runner @@ -866,7 +865,7 @@ describe User, models: true do let(:project) { create(:project) } it 'does not load' do - is_expected.to be_empty + expect(user.ci_authorized_runners).to be_empty end end @@ -875,7 +874,7 @@ describe User, models: true do let(:project) { create(:project, namespace: namespace) } it 'loads' do - is_expected.to contain_exactly(runner) + expect(user.ci_authorized_runners).to contain_exactly(runner) end end @@ -885,7 +884,9 @@ describe User, models: true do add_user(Gitlab::Access::MASTER) end - it { is_expected.to contain_exactly(runner) } + it 'loads' do + expect(user.ci_authorized_runners).to contain_exactly(runner) + end end context 'when the user is a developer' do @@ -893,7 +894,9 @@ describe User, models: true do add_user(Gitlab::Access::DEVELOPER) end - it { is_expected.to be_empty } + it 'does not load' do + expect(user.ci_authorized_runners).to be_empty + end end end -- cgit v1.2.1 From 4f34cf3241fc7ef53d260dace3da20da8cd89c9e Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Tue, 7 Jun 2016 20:32:48 +0800 Subject: Add a blank line between before and it: Feedback from: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4404#note_12301563 --- spec/models/user_spec.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'spec/models/user_spec.rb') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index f727611f7ce..73bee535fe3 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -71,6 +71,7 @@ describe User, models: true do before do allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return([]) end + it 'accepts any email' do user = build(:user, email: "info@example.com") expect(user).to be_valid @@ -81,6 +82,7 @@ describe User, models: true do before do allow_any_instance_of(ApplicationSetting).to receive(:restricted_signup_domains).and_return(['example.com', '*.example.com']) end + it 'accepts info@example.com' do user = build(:user, email: "info@example.com") expect(user).to be_valid @@ -211,6 +213,7 @@ describe User, models: true do before do allow_any_instance_of(ApplicationSetting).to receive(:send_user_confirmation_email).and_return(true) end + let(:user) { create(:user, confirmed_at: nil, unconfirmed_email: 'test@gitlab.com') } it 'returns unconfirmed' do -- cgit v1.2.1