discourse/spec/lib/auth/linkedin_oidc_authenticator_spec.rb
Ted Johansson 9e31135eca
FEATURE: Allow users to sign in using LinkedIn OpenID Connect (#26281)
LinkedIn has grandfathered its old OAuth2 provider. This can only be used by existing apps. New apps have to use the new OIDC provider.

This PR adds a linkedin_oidc provider to core. This will exist alongside the discourse-linkedin-auth plugin, which will be kept for those still using the deprecated provider.
2024-04-19 18:47:30 +08:00

44 lines
1.3 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Auth::LinkedInOidcAuthenticator do
let(:hash) do
OmniAuth::AuthHash.new(
provider: "linkedin_oidc",
extra: {
raw_info: {
email: "100",
email_verified: true,
given_name: "Coding",
family_name: "Horror",
picture:
"https://media.licdn.com/dms/image/C5603AQH7UYSA0m_DNw/profile-displayphoto-shrink_100_100/0/1516350954443?e=1718841600&v=beta&t=1DdwKTzW2QdVuPtnk1C20oaYSkqeEa4ffuI6_NlXbB",
locale: {
country: "US",
language: "en",
},
},
},
info: {
email: "coding@horror.com",
first_name: "Coding",
last_name: "Horror",
image:
"https://media.licdn.com/dms/image/C5603AQH7UYSA0m_DNw/profile-displayphoto-shrink_100_100/0/1516350954443?e=1718841600&v=beta&t=1DdwKTzW2QdVuPtnk1C20oaYSkqeEa4ffuI6_NlXbB",
},
uid: "100",
)
end
let(:authenticator) { described_class.new }
describe "after_authenticate" do
it "works normally" do
result = authenticator.after_authenticate(hash)
expect(result.user).to eq(nil)
expect(result.failed).to eq(false)
expect(result.name).to eq("Coding Horror")
expect(result.email).to eq("coding@horror.com")
end
end
end