File size: 2,586 Bytes
98fbc6d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import {
  registerRequestSchema,
  loginRequestSchema,
  forgotPasswordRequestSchema,
  resetPasswordRequestSchema,
  changePasswordRequestSchema,
  mfaVerifyLoginRequestSchema,
  mfaEnableRequestSchema,
  mcpTokenCreateRequestSchema,
} from './auth.schema';

import { describe, it, expect } from 'vitest';

describe('registerRequestSchema', () => {
  it('requires email + password; username/invite optional', () => {
    expect(
      registerRequestSchema.safeParse({ email: 'a@b.c', password: 'pw' })
        .success,
    ).toBe(true);
    expect(
      registerRequestSchema.safeParse({
        email: 'a@b.c',
        password: 'pw',
        invite_token: 't',
      }).success,
    ).toBe(true);
    expect(registerRequestSchema.safeParse({ email: 'a@b.c' }).success).toBe(
      false,
    );
  });
});

describe('loginRequestSchema', () => {
  it('requires email + password', () => {
    expect(
      loginRequestSchema.safeParse({ email: 'a@b.c', password: 'pw' }).success,
    ).toBe(true);
    expect(loginRequestSchema.safeParse({ email: 'a@b.c' }).success).toBe(
      false,
    );
  });
});

describe('forgot/reset/change password schemas', () => {
  it('validate their required fields', () => {
    expect(
      forgotPasswordRequestSchema.safeParse({ email: 'a@b.c' }).success,
    ).toBe(true);
    expect(
      resetPasswordRequestSchema.safeParse({ token: 't', new_password: 'pw' })
        .success,
    ).toBe(true);
    expect(
      resetPasswordRequestSchema.safeParse({
        token: 't',
        new_password: 'pw',
        mfa_code: '123456',
      }).success,
    ).toBe(true);
    expect(
      resetPasswordRequestSchema.safeParse({ new_password: 'pw' }).success,
    ).toBe(false);
    expect(
      changePasswordRequestSchema.safeParse({
        current_password: 'a',
        new_password: 'b',
      }).success,
    ).toBe(true);
    expect(
      changePasswordRequestSchema.safeParse({ new_password: 'b' }).success,
    ).toBe(false);
  });
});

describe('mfa + mcp-token schemas', () => {
  it('validate their fields', () => {
    expect(
      mfaVerifyLoginRequestSchema.safeParse({ mfa_token: 't', code: '123456' })
        .success,
    ).toBe(true);
    expect(
      mfaVerifyLoginRequestSchema.safeParse({ mfa_token: 't' }).success,
    ).toBe(false);
    expect(mfaEnableRequestSchema.safeParse({ code: '123456' }).success).toBe(
      true,
    );
    expect(mcpTokenCreateRequestSchema.safeParse({ name: 'CLI' }).success).toBe(
      true,
    );
    expect(mcpTokenCreateRequestSchema.safeParse({}).success).toBe(true);
  });
});