test(web): guard auth user contract normalization
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { normalizeUser } from './auth';
|
||||
|
||||
describe('normalizeUser', () => {
|
||||
it('normalizes canonical API current-user fields', () => {
|
||||
expect(
|
||||
normalizeUser({
|
||||
user_id: 'user-1',
|
||||
email: 'user@example.com',
|
||||
username: 'user',
|
||||
display_name: 'User',
|
||||
email_verified: true,
|
||||
})
|
||||
).toEqual({
|
||||
id: 'user-1',
|
||||
user_id: 'user-1',
|
||||
email: 'user@example.com',
|
||||
username: 'user',
|
||||
display_name: 'User',
|
||||
is_email_verified: true,
|
||||
email_verified: true,
|
||||
created_at: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it('keeps compatibility with legacy UI-shaped user fields', () => {
|
||||
expect(
|
||||
normalizeUser({
|
||||
id: 'user-2',
|
||||
email: 'legacy@example.com',
|
||||
username: 'legacy',
|
||||
display_name: 'Legacy',
|
||||
is_email_verified: false,
|
||||
created_at: '2026-06-22T00:00:00Z',
|
||||
})
|
||||
).toEqual({
|
||||
id: 'user-2',
|
||||
user_id: 'user-2',
|
||||
email: 'legacy@example.com',
|
||||
username: 'legacy',
|
||||
display_name: 'Legacy',
|
||||
is_email_verified: false,
|
||||
email_verified: false,
|
||||
created_at: '2026-06-22T00:00:00Z',
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -38,7 +38,7 @@ export interface User {
|
||||
created_at?: string;
|
||||
}
|
||||
|
||||
interface UserResponse {
|
||||
export interface UserResponse {
|
||||
id?: string;
|
||||
user_id?: string;
|
||||
email: string;
|
||||
@@ -49,7 +49,7 @@ interface UserResponse {
|
||||
created_at?: string;
|
||||
}
|
||||
|
||||
const normalizeUser = (data: UserResponse): User => {
|
||||
export const normalizeUser = (data: UserResponse): User => {
|
||||
const userId = data.id ?? data.user_id ?? '';
|
||||
const emailVerified = data.is_email_verified ?? data.email_verified ?? false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user