1
1
import { describe , expect , test , vi } from 'vitest'
2
2
import { setup , $fetch } from '@nuxt/test-utils-edge'
3
3
import { v4 as uuidv4 } from 'uuid'
4
-
5
-
6
-
7
- // testing this way is neither fast or intuitive. Revisit when . . .
8
- // useFetch and other composeables are availble within this context
4
+ import useErrorMapper from '../../composables/useErrorMapper'
9
5
10
6
describe ( 'Test Registration' , async ( ) => {
11
7
@@ -20,66 +16,100 @@ describe('Test Registration', async () => {
20
16
method : 'POST' ,
21
17
responseType : 'json' ,
22
18
body : {
23
- data : {
24
- username : 'testUsername' ,
25
- name : 'test_name' ,
26
- email : givenEmail ,
27
- password : '12345678'
28
- }
19
+ username : 'testUsername' ,
20
+ name : 'test_name' ,
21
+ email : givenEmail ,
22
+ password : '12345678'
29
23
} ,
30
24
} ) . catch ( error => {
31
- const res = JSON . parse ( error . data . data )
32
-
33
- console . log ( '/////////////////////////////--->>>' , res )
34
- const emailError : InputValidation = res . email . check
25
+ const errorMap = useErrorMapper ( error . data . data )
26
+ expect ( errorMap . hasErrors ) . toBe ( true )
27
+ expect ( errorMap . errors . has ( 'email' ) ) . toBe ( true )
28
+ expect ( errorMap . errors . get ( 'email' ) ?. message ) . toBe ( 'valid email required' )
29
+ expect ( error . message ) . toContain ( `422 Invalid Data Provided` )
35
30
36
- expect ( emailError . hasError ) . toBe ( true )
37
- expect ( error . message ) . toContain ( `422 Unprocessable Entity` )
38
31
} )
39
32
} )
40
33
41
34
test ( 'already used email returns error' , async ( ) => {
42
- const givenEmail = uuidv4 ( ) . replaceAll ( '-' , '' ) + '@fullstackjack.dev'
43
35
const givenUsername2 = uuidv4 ( ) . replaceAll ( '-' , '' )
44
36
const givenUsername = uuidv4 ( ) . replaceAll ( '-' , '' )
45
37
const givenName = uuidv4 ( ) . replaceAll ( '-' , '' )
46
38
const givenName2 = uuidv4 ( ) . replaceAll ( '-' , '' )
47
-
39
+
48
40
await $fetch ( '/api/auth/register' ,
49
41
{
50
42
method : 'POST' ,
51
43
responseType : 'json' ,
52
44
body : {
53
- data : {
54
- username : givenUsername ,
55
- name : givenName ,
56
-
57
- password : '12345678'
58
- }
45
+ username : givenUsername ,
46
+ name : givenName ,
47
+
48
+ password : '12345678'
59
49
} ,
60
50
} ) . catch ( error => {
61
- console . log ( 'EEEEEEE 2a >>>' , error )
62
51
} )
63
52
64
53
await $fetch ( '/api/auth/register' ,
65
54
{
66
55
method : 'POST' ,
67
56
responseType : 'json' ,
68
57
body : {
69
- data : {
70
- username : givenUsername2 ,
71
- name : givenName2 ,
72
-
73
- password : '12345678'
74
- }
58
+ username : givenUsername2 ,
59
+ name : givenName2 ,
60
+
61
+ password : '12345678'
75
62
} ,
76
63
} ) . catch ( error => {
77
- console . log ( 'EEEEEEE 2b >>>' , error )
64
+ const errorMap = useErrorMapper ( error . data . data )
65
+ expect ( errorMap . hasErrors ) . toBe ( true )
66
+ expect ( errorMap . errors . has ( 'email' ) ) . toBe ( true )
67
+ expect ( errorMap . errors . get ( 'email' ) ?. message ) . toBe ( 'Email is invalid or already taken' )
78
68
expect ( error . message ) . toContain ( `422 Unprocessable Entity` )
79
69
} )
80
70
} )
81
71
72
+
82
73
test ( 'already used name returns error' , async ( ) => {
74
+ const givenEmail = uuidv4 ( ) . replaceAll ( '-' , '' ) + '@fullstackjack.dev'
75
+ const givenEmail2 = uuidv4 ( ) . replaceAll ( '-' , '' ) + '@fullstackjack.dev'
76
+ const givenName = uuidv4 ( ) . replaceAll ( '-' , '' )
77
+ const givenName2 = uuidv4 ( ) . replaceAll ( '-' , '' )
78
+
79
+ await $fetch ( '/api/auth/register' ,
80
+ {
81
+ method : 'POST' ,
82
+ responseType : 'json' ,
83
+ body : {
84
+ username : 'duplicateUsername' ,
85
+ name : givenName ,
86
+ email : givenEmail ,
87
+ password : '12345678'
88
+ } ,
89
+ } ) . catch ( error => {
90
+ } )
91
+
92
+ await $fetch ( '/api/auth/register' ,
93
+ {
94
+ method : 'POST' ,
95
+ responseType : 'json' ,
96
+ body : {
97
+ username : 'duplicateUsername' ,
98
+ name : givenName2 ,
99
+ email : givenEmail2 ,
100
+ password : '12345678'
101
+ } ,
102
+ } ) . catch ( error => {
103
+ const errorMap = useErrorMapper ( error . data . data )
104
+ expect ( errorMap . hasErrors ) . toBe ( true )
105
+ expect ( errorMap . errors . has ( 'username' ) ) . toBe ( true )
106
+ expect ( errorMap . errors . get ( 'username' ) ?. message ) . toBe ( 'Username is invalid or already taken' )
107
+ expect ( error . message ) . toContain ( `422 Unprocessable Entity` )
108
+ } )
109
+ } )
110
+
111
+
112
+ test ( 'vaild data registers new user' , async ( ) => {
83
113
const givenEmail = uuidv4 ( ) . replaceAll ( '-' , '' ) + '@fullstackjack.dev'
84
114
const givenUsername = uuidv4 ( ) . replaceAll ( '-' , '' )
85
115
const givenName = uuidv4 ( ) . replaceAll ( '-' , '' )
@@ -89,12 +119,10 @@ describe('Test Registration', async () => {
89
119
method : 'POST' ,
90
120
responseType : 'json' ,
91
121
body : {
92
- data : {
93
- username : givenUsername ,
94
- name : givenName ,
95
- email : givenEmail ,
96
- password : '12345678'
97
- }
122
+ username : givenUsername ,
123
+ name : givenName ,
124
+ email : givenEmail ,
125
+ password : '12345678'
98
126
} ,
99
127
} ) . then ( res => {
100
128
console . log ( '****** 3 >>>>> ' , res )
0 commit comments