1
1
import * as env from "dotenv" ;
2
- env . config ( ) ;
3
-
4
- import { prisma } from "../src/generated/prisma-client" ;
2
+ import { User } from "../src/generated/prisma-client" ;
5
3
import testServer from "../src/server" ;
6
4
import { createTestClient } from "apollo-server-testing" ;
5
+ import { createTestServerWithToken } from "./utils/server" ;
6
+ import { generateToken } from "../src/utils/authToken" ;
7
+ import { GraphQLResponse } from "apollo-server-types" ;
8
+ import { createUser , createUserSession , deleteUsers } from "./utils/users" ;
7
9
8
- const createUser = async user => {
9
- await prisma . createUser ( user ) ;
10
- } ;
11
-
12
- const deleteUsers = async ( ) => {
13
- await prisma . deleteManyBookings ( { } ) ;
14
- await prisma . deleteManyRooms ( { } ) ;
15
- return prisma . deleteManyUsers ( { } ) ;
16
- } ;
10
+ env . config ( ) ;
17
11
18
12
const testUserInfo = {
19
13
username : "test123" ,
20
- email : "test@gmail.com " ,
14
+ email : "test@connect.hku.hk " ,
21
15
image_url : "http://url" ,
22
16
phone : "12345678" ,
23
17
first_name : "Test" ,
@@ -26,10 +20,15 @@ const testUserInfo = {
26
20
} ;
27
21
28
22
beforeAll ( async ( ) => await deleteUsers ( ) ) ;
23
+
29
24
describe ( "User query and mutations" , ( ) => {
30
- test ( "can query user" , async done => {
25
+ /**
26
+ * @author utkarsh867
27
+ */
28
+ test ( "can query user" , async ( ) => {
31
29
await deleteUsers ( ) ;
32
30
await createUser ( testUserInfo ) ;
31
+
33
32
const client = createTestClient ( testServer ) ;
34
33
const userQuery = `{
35
34
user (username: "${ testUserInfo . username } ") {
@@ -38,7 +37,7 @@ describe("User query and mutations", () => {
38
37
last_name,
39
38
room_no
40
39
}}` ;
41
- const result = await client . query ( { query : userQuery } ) ;
40
+ const result : GraphQLResponse = await client . query ( { query : userQuery } ) ;
42
41
expect ( result . data ) . toEqual ( {
43
42
user : {
44
43
username : testUserInfo . username ,
@@ -48,49 +47,40 @@ describe("User query and mutations", () => {
48
47
} ,
49
48
} ) ;
50
49
await deleteUsers ( ) ;
51
- done ( ) ;
52
50
} ) ;
53
- test ( "can add user" , async done => {
54
- await deleteUsers ( ) ;
55
- const client = createTestClient ( testServer ) ;
56
- const userMutation = `mutation addUser
57
- {
58
- createUser(
59
- username: "${ testUserInfo . username } ",
60
- email: "${ testUserInfo . email } ",
61
- image_url:"${ testUserInfo . image_url } ",
62
- phone: "${ testUserInfo . phone } ",
63
- first_name:"${ testUserInfo . first_name } ",
64
- last_name:"${ testUserInfo . last_name } ",
65
- room_no:"${ testUserInfo . room_no } "
66
- ){
67
- username
68
- }
69
- }` ;
70
- await client . mutate ( { mutation : userMutation } ) ;
71
- const userQueryResult = await prisma . user ( {
72
- username : testUserInfo . username ,
73
- } ) ;
74
- expect ( userQueryResult ) . toMatchObject ( testUserInfo ) ;
75
- await deleteUsers ( ) ;
76
- done ( ) ;
77
- } ) ;
78
- test ( "can delete user" , async done => {
51
+
52
+ /**
53
+ * @author utkarsh867
54
+ */
55
+ test ( "can resolve user from the session" , async ( ) => {
79
56
await deleteUsers ( ) ;
57
+ // Create user in the database
58
+ const user : User = await createUser ( testUserInfo ) ;
59
+ // Create the user session (bypass login)
60
+ const userSession = await createUserSession ( user ) ;
61
+ // Generate a token for the session
62
+ const token = generateToken ( userSession ) ;
63
+ // Create a test server from the token
64
+ const testServer = createTestServerWithToken ( token ) ;
65
+ // Create a test client connected to the test server
80
66
const client = createTestClient ( testServer ) ;
81
- await createUser ( testUserInfo ) ;
82
- const userDeleteMutation = `
83
- mutation delete{
84
- deleteUser(username: "${ testUserInfo . username } "){
85
- username
86
- }
87
- }` ;
88
- await client . mutate ( { mutation : userDeleteMutation } ) ;
89
- const userQueryResult = await prisma . user ( {
90
- username : testUserInfo . username ,
67
+
68
+ // Make a request to resolve the user
69
+ const query = `{
70
+ me {
71
+ id
72
+ }
73
+ }` ;
74
+ const response : GraphQLResponse = await client . query ( { query } ) ;
75
+
76
+ // Check if the user from the query is correct
77
+ expect ( response . data ) . toEqual ( {
78
+ me : {
79
+ id : user . id ,
80
+ } ,
91
81
} ) ;
92
- expect ( userQueryResult ) . toEqual ( null ) ;
82
+
83
+ // Cleanup after the test
93
84
await deleteUsers ( ) ;
94
- done ( ) ;
95
85
} ) ;
96
86
} ) ;
0 commit comments