fix: 更新邮箱 OAuth 单测契约
This commit is contained in:
parent
93f884b719
commit
480fe27b31
@ -83,10 +83,10 @@ func TestAuthIdentityFoundationSchemas(t *testing.T) {
|
|||||||
require.Equal(t, 1, signupSource.Validators)
|
require.Equal(t, 1, signupSource.Validators)
|
||||||
|
|
||||||
validator := requireStringFieldValidator(t, User{}.Fields(), "signup_source")
|
validator := requireStringFieldValidator(t, User{}.Fields(), "signup_source")
|
||||||
for _, value := range []string{"email", "linuxdo", "wechat", "oidc"} {
|
for _, value := range []string{"email", "linuxdo", "wechat", "oidc", "github", "google"} {
|
||||||
require.NoError(t, validator(value))
|
require.NoError(t, validator(value))
|
||||||
}
|
}
|
||||||
require.Error(t, validator("github"))
|
require.Error(t, validator("unknown"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func requireSchema(t *testing.T, schemas map[string]*load.Schema, name string) *load.Schema {
|
func requireSchema(t *testing.T, schemas map[string]*load.Schema, name string) *load.Schema {
|
||||||
|
|||||||
@ -685,6 +685,16 @@ func TestAPIContracts(t *testing.T) {
|
|||||||
"oidc_connect_userinfo_email_path": "",
|
"oidc_connect_userinfo_email_path": "",
|
||||||
"oidc_connect_userinfo_id_path": "",
|
"oidc_connect_userinfo_id_path": "",
|
||||||
"oidc_connect_userinfo_username_path": "",
|
"oidc_connect_userinfo_username_path": "",
|
||||||
|
"github_oauth_enabled": false,
|
||||||
|
"github_oauth_client_id": "",
|
||||||
|
"github_oauth_client_secret_configured": false,
|
||||||
|
"github_oauth_redirect_url": "",
|
||||||
|
"github_oauth_frontend_redirect_url": "/auth/oauth/callback",
|
||||||
|
"google_oauth_enabled": false,
|
||||||
|
"google_oauth_client_id": "",
|
||||||
|
"google_oauth_client_secret_configured": false,
|
||||||
|
"google_oauth_redirect_url": "",
|
||||||
|
"google_oauth_frontend_redirect_url": "/auth/oauth/callback",
|
||||||
"ops_monitoring_enabled": false,
|
"ops_monitoring_enabled": false,
|
||||||
"ops_realtime_monitoring_enabled": true,
|
"ops_realtime_monitoring_enabled": true,
|
||||||
"ops_query_mode_default": "auto",
|
"ops_query_mode_default": "auto",
|
||||||
@ -700,6 +710,16 @@ func TestAPIContracts(t *testing.T) {
|
|||||||
"auth_source_default_email_subscriptions": [],
|
"auth_source_default_email_subscriptions": [],
|
||||||
"auth_source_default_email_grant_on_signup": false,
|
"auth_source_default_email_grant_on_signup": false,
|
||||||
"auth_source_default_email_grant_on_first_bind": false,
|
"auth_source_default_email_grant_on_first_bind": false,
|
||||||
|
"auth_source_default_github_balance": 0,
|
||||||
|
"auth_source_default_github_concurrency": 5,
|
||||||
|
"auth_source_default_github_subscriptions": [],
|
||||||
|
"auth_source_default_github_grant_on_signup": false,
|
||||||
|
"auth_source_default_github_grant_on_first_bind": false,
|
||||||
|
"auth_source_default_google_balance": 0,
|
||||||
|
"auth_source_default_google_concurrency": 5,
|
||||||
|
"auth_source_default_google_subscriptions": [],
|
||||||
|
"auth_source_default_google_grant_on_signup": false,
|
||||||
|
"auth_source_default_google_grant_on_first_bind": false,
|
||||||
"auth_source_default_linuxdo_balance": 0,
|
"auth_source_default_linuxdo_balance": 0,
|
||||||
"auth_source_default_linuxdo_concurrency": 5,
|
"auth_source_default_linuxdo_concurrency": 5,
|
||||||
"auth_source_default_linuxdo_subscriptions": [],
|
"auth_source_default_linuxdo_subscriptions": [],
|
||||||
@ -898,6 +918,16 @@ func TestAPIContracts(t *testing.T) {
|
|||||||
"oidc_connect_userinfo_email_path": "",
|
"oidc_connect_userinfo_email_path": "",
|
||||||
"oidc_connect_userinfo_id_path": "",
|
"oidc_connect_userinfo_id_path": "",
|
||||||
"oidc_connect_userinfo_username_path": "",
|
"oidc_connect_userinfo_username_path": "",
|
||||||
|
"github_oauth_enabled": false,
|
||||||
|
"github_oauth_client_id": "",
|
||||||
|
"github_oauth_client_secret_configured": false,
|
||||||
|
"github_oauth_redirect_url": "",
|
||||||
|
"github_oauth_frontend_redirect_url": "/auth/oauth/callback",
|
||||||
|
"google_oauth_enabled": false,
|
||||||
|
"google_oauth_client_id": "",
|
||||||
|
"google_oauth_client_secret_configured": false,
|
||||||
|
"google_oauth_redirect_url": "",
|
||||||
|
"google_oauth_frontend_redirect_url": "/auth/oauth/callback",
|
||||||
"site_name": "Sub2API",
|
"site_name": "Sub2API",
|
||||||
"site_logo": "",
|
"site_logo": "",
|
||||||
"site_subtitle": "Subscription to API Conversion Platform",
|
"site_subtitle": "Subscription to API Conversion Platform",
|
||||||
@ -1005,6 +1035,16 @@ func TestAPIContracts(t *testing.T) {
|
|||||||
"auth_source_default_email_subscriptions": [],
|
"auth_source_default_email_subscriptions": [],
|
||||||
"auth_source_default_email_grant_on_signup": false,
|
"auth_source_default_email_grant_on_signup": false,
|
||||||
"auth_source_default_email_grant_on_first_bind": false,
|
"auth_source_default_email_grant_on_first_bind": false,
|
||||||
|
"auth_source_default_github_balance": 0,
|
||||||
|
"auth_source_default_github_concurrency": 5,
|
||||||
|
"auth_source_default_github_subscriptions": [],
|
||||||
|
"auth_source_default_github_grant_on_signup": false,
|
||||||
|
"auth_source_default_github_grant_on_first_bind": false,
|
||||||
|
"auth_source_default_google_balance": 0,
|
||||||
|
"auth_source_default_google_concurrency": 5,
|
||||||
|
"auth_source_default_google_subscriptions": [],
|
||||||
|
"auth_source_default_google_grant_on_signup": false,
|
||||||
|
"auth_source_default_google_grant_on_first_bind": false,
|
||||||
"auth_source_default_linuxdo_balance": 0,
|
"auth_source_default_linuxdo_balance": 0,
|
||||||
"auth_source_default_linuxdo_concurrency": 5,
|
"auth_source_default_linuxdo_concurrency": 5,
|
||||||
"auth_source_default_linuxdo_subscriptions": [],
|
"auth_source_default_linuxdo_subscriptions": [],
|
||||||
|
|||||||
@ -229,6 +229,67 @@ func TestRegisterOAuthEmailAccountSetsNormalizedSignupSourceOnCreatedUser(t *tes
|
|||||||
require.Equal(t, "oidc", userRepo.created[0].SignupSource)
|
require.Equal(t, "oidc", userRepo.created[0].SignupSource)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRegisterOAuthEmailAccountKeepsGitHubAndGoogleSignupSource(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
email string
|
||||||
|
signupSource string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "github",
|
||||||
|
email: "github@example.com",
|
||||||
|
signupSource: " GitHub ",
|
||||||
|
want: "github",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "google",
|
||||||
|
email: "google@example.com",
|
||||||
|
signupSource: " Google ",
|
||||||
|
want: "google",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
userRepo := &userRepoStub{nextID: 43}
|
||||||
|
emailCache := &emailCacheStub{
|
||||||
|
data: &VerificationCodeData{
|
||||||
|
Code: "246810",
|
||||||
|
Attempts: 0,
|
||||||
|
CreatedAt: time.Now().UTC(),
|
||||||
|
ExpiresAt: time.Now().UTC().Add(15 * time.Minute),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
authService := newOAuthEmailFlowAuthService(
|
||||||
|
userRepo,
|
||||||
|
&redeemCodeRepoStub{},
|
||||||
|
&refreshTokenCacheStub{},
|
||||||
|
map[string]string{
|
||||||
|
SettingKeyRegistrationEnabled: "true",
|
||||||
|
SettingKeyEmailVerifyEnabled: "true",
|
||||||
|
},
|
||||||
|
emailCache,
|
||||||
|
)
|
||||||
|
|
||||||
|
tokenPair, user, err := authService.RegisterOAuthEmailAccount(
|
||||||
|
context.Background(),
|
||||||
|
tt.email,
|
||||||
|
"secret-123",
|
||||||
|
"246810",
|
||||||
|
"",
|
||||||
|
tt.signupSource,
|
||||||
|
)
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, tokenPair)
|
||||||
|
require.NotNil(t, user)
|
||||||
|
require.Len(t, userRepo.created, 1)
|
||||||
|
require.Equal(t, tt.want, userRepo.created[0].SignupSource)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRegisterOAuthEmailAccountFallsBackUnknownSignupSourceToEmail(t *testing.T) {
|
func TestRegisterOAuthEmailAccountFallsBackUnknownSignupSourceToEmail(t *testing.T) {
|
||||||
userRepo := &userRepoStub{nextID: 43}
|
userRepo := &userRepoStub{nextID: 43}
|
||||||
emailCache := &emailCacheStub{
|
emailCache := &emailCacheStub{
|
||||||
@ -256,7 +317,7 @@ func TestRegisterOAuthEmailAccountFallsBackUnknownSignupSourceToEmail(t *testing
|
|||||||
"secret-123",
|
"secret-123",
|
||||||
"246810",
|
"246810",
|
||||||
"",
|
"",
|
||||||
"github",
|
"unknown-provider",
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user