From 6f40037ba551e6e495e6f51263940b574721e66a Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 13 Mar 2018 18:39:39 -0400 Subject: [PATCH] Add test guarding against the SSO logic I broke --- spec/models/discourse_single_sign_on_spec.rb | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/models/discourse_single_sign_on_spec.rb b/spec/models/discourse_single_sign_on_spec.rb index a85806e9379..d204ae5d37d 100644 --- a/spec/models/discourse_single_sign_on_spec.rb +++ b/spec/models/discourse_single_sign_on_spec.rb @@ -187,6 +187,32 @@ describe DiscourseSingleSignOn do expect(user.username).to eq "TestUser" end + it 'behaves properly when sso_overrides_username is set but username is missing or blank' do + SiteSetting.sso_overrides_username = true + + sso = DiscourseSingleSignOn.new + sso.username = "testuser" + sso.name = "test user" + sso.email = "test@test.com" + sso.external_id = "100" + sso.bio = "This **is** the bio" + sso.suppress_welcome_message = true + + # create the original user + user = sso.lookup_or_create_user(ip_address) + expect(user.username).to eq "testuser" + + # remove username from payload + sso.username = nil + user = sso.lookup_or_create_user(ip_address) + expect(user.username).to eq "testuser" + + # set username in payload to blank + sso.username = '' + user = sso.lookup_or_create_user(ip_address) + expect(user.username).to eq "testuser" + end + it "can override name / email / username" do admin = Fabricate(:admin)