mirror of
https://github.com/we-promise/sure.git
synced 2026-09-06 15:14:19 +00:00
Fix SSO JIT new family creator role (#3024)
* Fix SSO JIT new family creator role * Preserve super admin SSO creator defaults * Update new family creator role test
This commit is contained in:
@@ -705,6 +705,66 @@ class Api::V1::AuthControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_nil Rails.cache.read("mobile_sso_link:#{linking_code}")
|
||||
end
|
||||
|
||||
test "sso_create_account makes new family creator admin even when provider default role is member" do
|
||||
Rails.configuration.x.auth.stubs(:sso_providers).returns([
|
||||
{ name: "google_oauth2", settings: { default_role: "member" } }
|
||||
])
|
||||
linking_code = SecureRandom.urlsafe_base64(32)
|
||||
Rails.cache.write("mobile_sso_link:#{linking_code}", {
|
||||
provider: "google_oauth2",
|
||||
uid: "google-uid-member-default",
|
||||
email: "member-default@example.com",
|
||||
first_name: "Member",
|
||||
last_name: "Default",
|
||||
name: "Member Default",
|
||||
device_info: @device_info.stringify_keys,
|
||||
allow_account_creation: true
|
||||
}, expires_in: 10.minutes)
|
||||
|
||||
assert_difference([ "User.count", "OidcIdentity.count", "Family.count" ], 1) do
|
||||
post "/api/v1/auth/sso_create_account", params: {
|
||||
linking_code: linking_code,
|
||||
first_name: "Member",
|
||||
last_name: "Default"
|
||||
}
|
||||
end
|
||||
|
||||
assert_response :success
|
||||
new_user = User.find_by!(email: "member-default@example.com")
|
||||
assert_equal "admin", new_user.role
|
||||
assert new_user.admin?
|
||||
end
|
||||
|
||||
test "sso_create_account preserves super admin provider default for new family creator" do
|
||||
Rails.configuration.x.auth.stubs(:sso_providers).returns([
|
||||
{ name: "google_oauth2", settings: { default_role: "super_admin" } }
|
||||
])
|
||||
linking_code = SecureRandom.urlsafe_base64(32)
|
||||
Rails.cache.write("mobile_sso_link:#{linking_code}", {
|
||||
provider: "google_oauth2",
|
||||
uid: "google-uid-super-admin-default",
|
||||
email: "super-admin-default@example.com",
|
||||
first_name: "Super",
|
||||
last_name: "Default",
|
||||
name: "Super Default",
|
||||
device_info: @device_info.stringify_keys,
|
||||
allow_account_creation: true
|
||||
}, expires_in: 10.minutes)
|
||||
|
||||
assert_difference([ "User.count", "OidcIdentity.count", "Family.count" ], 1) do
|
||||
post "/api/v1/auth/sso_create_account", params: {
|
||||
linking_code: linking_code,
|
||||
first_name: "Super",
|
||||
last_name: "Default"
|
||||
}
|
||||
end
|
||||
|
||||
assert_response :success
|
||||
new_user = User.find_by!(email: "super-admin-default@example.com")
|
||||
assert_equal "super_admin", new_user.role
|
||||
assert new_user.admin?
|
||||
end
|
||||
|
||||
test "should reject SSO create account when not allowed" do
|
||||
linking_code = SecureRandom.urlsafe_base64(32)
|
||||
Rails.cache.write("mobile_sso_link:#{linking_code}", {
|
||||
|
||||
Reference in New Issue
Block a user