forked from baron/baron-sso
merge: integrate origin dev into dev
Includes Worksmobile SSOT sync comparison updates, UUID import conflict resolution, and Playwright route mock stabilization.
This commit is contained in:
68
backend/internal/handler/user_handler_uuid_test.go
Normal file
68
backend/internal/handler/user_handler_uuid_test.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"baron-sso-backend/internal/domain"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
func TestUserHandler_BulkCreateUsers_UUIDImportPolicy(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
field string
|
||||
}{
|
||||
{name: "id 필드 차단", field: "id"},
|
||||
{name: "uuid 필드 차단", field: "uuid"},
|
||||
{name: "userId 필드 차단", field: "userId"},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
app := fiber.New()
|
||||
mockKratos := new(MockKratosAdmin)
|
||||
mockOry := new(MockOryProvider)
|
||||
|
||||
h := &UserHandler{
|
||||
KratosAdmin: mockKratos,
|
||||
OryProvider: mockOry,
|
||||
}
|
||||
app.Post("/users/bulk", h.BulkCreateUsers)
|
||||
|
||||
mockOry.On("GetPasswordPolicy").Return(&domain.PasswordPolicy{MinLength: 8}, nil).Once()
|
||||
|
||||
payload := map[string]any{
|
||||
"users": []map[string]any{
|
||||
{
|
||||
"email": "uuid-import@test.com",
|
||||
"name": "UUID Import User",
|
||||
tt.field: "550e8400-e29b-41d4-a716-446655440000",
|
||||
"metadata": map[string]any{},
|
||||
},
|
||||
},
|
||||
}
|
||||
body, _ := json.Marshal(payload)
|
||||
req := httptest.NewRequest("POST", "/users/bulk", bytes.NewReader(body))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
resp, _ := app.Test(req)
|
||||
assert.Equal(t, 200, resp.StatusCode)
|
||||
|
||||
var result struct {
|
||||
Results []bulkUserResult `json:"results"`
|
||||
}
|
||||
assert.NoError(t, json.NewDecoder(resp.Body).Decode(&result))
|
||||
assert.Len(t, result.Results, 1)
|
||||
assert.False(t, result.Results[0].Success)
|
||||
assert.Contains(t, result.Results[0].Message, "사용자 UUID 가져오기는 지원하지 않습니다")
|
||||
|
||||
mockOry.AssertExpectations(t)
|
||||
mockKratos.AssertNotCalled(t, "FindIdentityIDByIdentifier", mock.Anything, mock.Anything)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user