feat: add admin auth identity repair binding
This commit is contained in:
@@ -25,6 +25,7 @@ func setupAdminRouter() (*gin.Engine, *stubAdminService) {
|
||||
router.GET("/api/v1/admin/users/auth-identity-migration-reports/summary", userHandler.GetAuthIdentityMigrationReportSummary)
|
||||
router.GET("/api/v1/admin/users/auth-identity-migration-reports", userHandler.ListAuthIdentityMigrationReports)
|
||||
router.GET("/api/v1/admin/users/:id", userHandler.GetByID)
|
||||
router.POST("/api/v1/admin/users/:id/auth-identities", userHandler.BindAuthIdentity)
|
||||
router.POST("/api/v1/admin/users", userHandler.Create)
|
||||
router.PUT("/api/v1/admin/users/:id", userHandler.Update)
|
||||
router.DELETE("/api/v1/admin/users/:id", userHandler.Delete)
|
||||
@@ -87,8 +88,26 @@ func TestUserHandlerEndpoints(t *testing.T) {
|
||||
router.ServeHTTP(rec, req)
|
||||
require.Equal(t, http.StatusOK, rec.Code)
|
||||
|
||||
bindBody := map[string]any{
|
||||
"provider_type": "wechat",
|
||||
"provider_key": "wechat-main",
|
||||
"provider_subject": "union-123",
|
||||
"metadata": map[string]any{"source": "admin-repair"},
|
||||
"channel": map[string]any{
|
||||
"channel": "open",
|
||||
"channel_app_id": "wx-open",
|
||||
"channel_subject": "openid-123",
|
||||
},
|
||||
}
|
||||
body, _ := json.Marshal(bindBody)
|
||||
rec = httptest.NewRecorder()
|
||||
req = httptest.NewRequest(http.MethodPost, "/api/v1/admin/users/1/auth-identities", bytes.NewReader(body))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
router.ServeHTTP(rec, req)
|
||||
require.Equal(t, http.StatusOK, rec.Code)
|
||||
|
||||
createBody := map[string]any{"email": "new@example.com", "password": "pass123", "balance": 1, "concurrency": 2}
|
||||
body, _ := json.Marshal(createBody)
|
||||
body, _ = json.Marshal(createBody)
|
||||
rec = httptest.NewRecorder()
|
||||
req = httptest.NewRequest(http.MethodPost, "/api/v1/admin/users", bytes.NewReader(body))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
@@ -125,6 +144,33 @@ func TestUserHandlerEndpoints(t *testing.T) {
|
||||
require.Equal(t, http.StatusOK, rec.Code)
|
||||
}
|
||||
|
||||
func TestUserHandlerBindAuthIdentityMapsRequest(t *testing.T) {
|
||||
router, adminSvc := setupAdminRouter()
|
||||
|
||||
body, err := json.Marshal(map[string]any{
|
||||
"provider_type": "oidc",
|
||||
"provider_key": "https://issuer.example",
|
||||
"provider_subject": "subject-123",
|
||||
"issuer": "https://issuer.example",
|
||||
"metadata": map[string]any{"report_id": 12},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
rec := httptest.NewRecorder()
|
||||
req := httptest.NewRequest(http.MethodPost, "/api/v1/admin/users/9/auth-identities", bytes.NewReader(body))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
router.ServeHTTP(rec, req)
|
||||
|
||||
require.Equal(t, http.StatusOK, rec.Code)
|
||||
require.Equal(t, int64(9), adminSvc.boundAuthIdentityFor)
|
||||
require.NotNil(t, adminSvc.boundAuthIdentity)
|
||||
require.Equal(t, "oidc", adminSvc.boundAuthIdentity.ProviderType)
|
||||
require.Equal(t, "https://issuer.example", adminSvc.boundAuthIdentity.ProviderKey)
|
||||
require.Equal(t, "subject-123", adminSvc.boundAuthIdentity.ProviderSubject)
|
||||
require.Nil(t, adminSvc.boundAuthIdentity.Channel)
|
||||
require.Equal(t, float64(12), adminSvc.boundAuthIdentity.Metadata["report_id"])
|
||||
}
|
||||
|
||||
func TestGroupHandlerEndpoints(t *testing.T) {
|
||||
router, _ := setupAdminRouter()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user