diff --git a/lib/auth/result.rb b/lib/auth/result.rb index d825758433f..0e715bd6758 100644 --- a/lib/auth/result.rb +++ b/lib/auth/result.rb @@ -19,7 +19,7 @@ class Auth::Result end def email - @email.downcase + @email&.downcase end def failed? diff --git a/spec/components/auth/managed_authenticator_spec.rb b/spec/components/auth/managed_authenticator_spec.rb index 84889de712f..ad1ac40a00f 100644 --- a/spec/components/auth/managed_authenticator_spec.rb +++ b/spec/components/auth/managed_authenticator_spec.rb @@ -140,6 +140,17 @@ describe Auth::ManagedAuthenticator do result = authenticator.after_authenticate(hash) expect(result.user.id).to eq(user.id) end + + it 'works if there is no email' do + expect { + result = authenticator.after_authenticate(hash.deep_merge(info: { email: nil })) + expect(result.user).to eq(nil) + expect(result.username).to eq("IAmGroot") + expect(result.email).to eq(nil) + }.to change { UserAssociatedAccount.count }.by(1) + expect(UserAssociatedAccount.last.user).to eq(nil) + expect(UserAssociatedAccount.last.info["nickname"]).to eq("IAmGroot") + end end describe "avatar on update" do