Files
openfoodnetwork/spec/models/oidc_account_spec.rb
2025-05-21 09:41:00 +02:00

49 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe OidcAccount do
describe "associations and validations" do
subject {
OidcAccount.new(
user: build(:user),
provider: "openid_connect",
uid: "user@example.net"
)
}
it { is_expected.to belong_to :user }
it { is_expected.to validate_uniqueness_of :uid }
end
describe ".link" do
let(:user) { create(:user, email: "user@example.com") }
let(:auth) {
OmniAuth::AuthHash.new(
JSON.parse(file_fixture("omniauth.auth.json").read)
)
}
it "creates or updates an account record" do
expect { OidcAccount.link(user, auth) }
.to change { OidcAccount.count }.by(1)
account = OidcAccount.last
expect(account.user).to eq user
expect(account.provider).to eq "openid_connect"
expect(account.token).to match /^ey/
expect(account.refresh_token).to match /^ey/
auth.uid = "user@example.org"
expect {
OidcAccount.link(user, auth)
account.reload
}
.to change { OidcAccount.count }.by(0)
.and change { account.uid }
.from("ofn@example.com").to("user@example.org")
end
end
end