@next-k8s/tickets 1.0.14 → 1.0.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. package/.vscode/launch.json +20 -0
  2. package/CHANGELOG.md +40 -0
  3. package/LICENSE.md +21 -0
  4. package/coverage/clover.xml +144 -0
  5. package/coverage/coverage-final.json +11 -0
  6. package/coverage/lcov-report/base.css +224 -0
  7. package/coverage/lcov-report/block-navigation.js +87 -0
  8. package/coverage/lcov-report/favicon.png +0 -0
  9. package/coverage/lcov-report/index.html +176 -0
  10. package/coverage/lcov-report/prettify.css +1 -0
  11. package/coverage/lcov-report/prettify.js +2 -0
  12. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  13. package/coverage/lcov-report/sorter.js +196 -0
  14. package/coverage/lcov-report/src/app.ts.html +148 -0
  15. package/coverage/lcov-report/src/events/publishers/tickets/created.ts.html +106 -0
  16. package/coverage/lcov-report/src/events/publishers/tickets/index.html +131 -0
  17. package/coverage/lcov-report/src/events/publishers/tickets/updated.ts.html +106 -0
  18. package/coverage/lcov-report/src/index.html +116 -0
  19. package/coverage/lcov-report/src/models/index.html +116 -0
  20. package/coverage/lcov-report/src/models/ticket.ts.html +211 -0
  21. package/coverage/lcov-report/src/routes/create.ts.html +157 -0
  22. package/coverage/lcov-report/src/routes/find.ts.html +118 -0
  23. package/coverage/lcov-report/src/routes/get.ts.html +133 -0
  24. package/coverage/lcov-report/src/routes/index.html +176 -0
  25. package/coverage/lcov-report/src/routes/index.ts.html +103 -0
  26. package/coverage/lcov-report/src/routes/update.ts.html +172 -0
  27. package/coverage/lcov-report/src/test/index.html +116 -0
  28. package/coverage/lcov-report/src/test/utils.ts.html +112 -0
  29. package/coverage/lcov.info +223 -0
  30. package/package.json +13 -5
  31. package/pnpm-lock.yaml +50 -19
  32. package/src/routes/__test__/create.test.ts +7 -6
  33. package/src/routes/__test__/find.test.ts +7 -3
  34. package/src/routes/__test__/get.test.ts +5 -3
  35. package/src/routes/__test__/update.test.ts +15 -13
  36. package/src/routes/update.ts +1 -1
  37. package/src/test/utils.ts +0 -9
@@ -1,10 +1,14 @@
1
+
2
+ import mongoose from 'mongoose'
1
3
  import request from 'supertest'
4
+ import { getTokenCookie } from '@next-k8s/common'
5
+
2
6
  import app from '../../app'
3
- import { createTicket, getTokenCookie } from '../../test/utils'
7
+ import { createTicket } from '../../test/utils'
4
8
 
5
- describe('[List Tickets] Route: /api/tickets', () => {
9
+ describe('[List Tickets] Route: GET /api/tickets', () => {
6
10
  it('should return a list of tickets', async () => {
7
- const cookie = await getTokenCookie()
11
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
8
12
  await createTicket(app, cookie)
9
13
  await createTicket(app, cookie, 'Test Event 2', 40000)
10
14
  const list = await request(app)
@@ -1,9 +1,11 @@
1
1
  import request from 'supertest'
2
2
  import mongoose from 'mongoose'
3
+ import { getTokenCookie } from '@next-k8s/common'
4
+
3
5
  import app from '../../app'
4
- import { createTicket, getTokenCookie } from '../../test/utils'
6
+ import { createTicket } from '../../test/utils'
5
7
 
6
- describe('[Get Ticket] Route: /api/tickets/:id', () => {
8
+ describe('[Get Ticket] Route: GET /api/tickets/:id', () => {
7
9
  it('should throw a BadRequestError if ticket ID is invalid', async () => {
8
10
  await request(app)
9
11
  .get('/api/tickets/notarealid')
@@ -20,7 +22,7 @@ describe('[Get Ticket] Route: /api/tickets/:id', () => {
20
22
  })
21
23
 
22
24
  it('should return the fetched ticket', async () => {
23
- const cookie = await getTokenCookie()
25
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
24
26
  const response = await createTicket(app, cookie)
25
27
 
26
28
  const ticket = await request(app)
@@ -1,14 +1,15 @@
1
1
  import request from 'supertest'
2
2
  import mongoose from 'mongoose'
3
+ import { getTokenCookie } from '@next-k8s/common'
3
4
 
4
5
  import app from '../../app'
5
- import { createTicket, getTokenCookie } from '../../test/utils'
6
+ import { createTicket } from '../../test/utils'
6
7
  import natsClient from '../../nats-client'
7
8
 
8
- describe('[Update Ticket] Route: /api/tickets/:id', () => {
9
+ describe('[Update Ticket] Route: PUT /api/tickets/:id', () => {
9
10
  it('should throw a NotFoundError if the ticket does not exist', async () => {
10
11
  const id = new mongoose.Types.ObjectId().toHexString()
11
- const cookie = await getTokenCookie()
12
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
12
13
 
13
14
  await request(app)
14
15
  .put(`/api/tickets/${id}`)
@@ -18,7 +19,7 @@ describe('[Update Ticket] Route: /api/tickets/:id', () => {
18
19
  })
19
20
 
20
21
  it('should throw an UnauthorizedError if not authenticated', async () => {
21
- const cookie = await getTokenCookie()
22
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
22
23
 
23
24
  const response = await request(app)
24
25
  .post(`/api/tickets`)
@@ -33,25 +34,26 @@ describe('[Update Ticket] Route: /api/tickets/:id', () => {
33
34
  })
34
35
 
35
36
  it('should throw an UnauthorizedError if user does not own the ticket', async () => {
36
- const cookie = await getTokenCookie()
37
+ const users = [
38
+ await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() }),
39
+ await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
40
+ ]
37
41
 
38
42
  const response = await request(app)
39
43
  .post(`/api/tickets`)
40
- .set('Cookie', [cookie])
44
+ .set('Cookie', [users[0]])
41
45
  .send({ title: 'Test Event', price: 20000 })
42
46
  .expect(201)
43
47
 
44
- const newCookie = await getTokenCookie()
45
-
46
48
  await request(app)
47
49
  .put(`/api/tickets/${response.body.ticket.id}`)
48
- .set('Cookie', [newCookie])
50
+ .set('Cookie', [users[1]])
49
51
  .send({ title: 'Test Event', price: 23000 })
50
52
  .expect(401)
51
53
  })
52
54
 
53
55
  it('should throw a BadRequestError if an invalid ticket is provided', async () => {
54
- const cookie = await getTokenCookie()
56
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
55
57
 
56
58
  await request(app)
57
59
  .put(`/api/tickets/notarealid`)
@@ -61,7 +63,7 @@ describe('[Update Ticket] Route: /api/tickets/:id', () => {
61
63
  })
62
64
 
63
65
  it('should throw an error on invalid ticket data', async () => {
64
- const cookie = await getTokenCookie()
66
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
65
67
  const response = await createTicket(app, cookie)
66
68
 
67
69
  await request(app)
@@ -78,7 +80,7 @@ describe('[Update Ticket] Route: /api/tickets/:id', () => {
78
80
  })
79
81
 
80
82
  it('should update a ticket', async () => {
81
- const cookie = await getTokenCookie()
83
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
82
84
  const response = await createTicket(app, cookie)
83
85
 
84
86
  const updated = await request(app)
@@ -94,7 +96,7 @@ describe('[Update Ticket] Route: /api/tickets/:id', () => {
94
96
  })
95
97
 
96
98
  it('should publish a ticket:updated event', async () => {
97
- const cookie = await getTokenCookie()
99
+ const cookie = await getTokenCookie({ id: new mongoose.Types.ObjectId().toHexString() })
98
100
  await createTicket(app, cookie)
99
101
  expect(natsClient.client.publish).toHaveBeenCalled()
100
102
  })
@@ -18,7 +18,7 @@ router.put('/api/tickets/:id', requireAuth, validateInput, validateRequest, asyn
18
18
  if (!isValidObjectId(req.params.id)) throw new BadRequestError('Invalid Ticket ID')
19
19
  const ticket = await Ticket.findById(req.params.id)
20
20
  if (!ticket) throw new NotFoundError()
21
- if (ticket.owner !== req.currentUser!.id) throw new UnauthorizedError()
21
+ if (ticket.owner.toHexString() !== req.currentUser!.id) throw new UnauthorizedError()
22
22
  const { title, price } = req.body
23
23
  ticket.set({ title, price })
24
24
  await ticket.save()
package/src/test/utils.ts CHANGED
@@ -1,14 +1,5 @@
1
- import jwt from 'jsonwebtoken'
2
- import mongoose from 'mongoose'
3
1
  import request from 'supertest'
4
2
 
5
- export const getTokenCookie = async () => {
6
- const payload = { id: new mongoose.Types.ObjectId().toHexString(), email: 'test@test.com' }
7
- const token = jwt.sign(payload, process.env.JWT_KEY!)
8
- const cookie = Buffer.from(JSON.stringify({ jwt: token })).toString('base64')
9
- return `session=${cookie}`
10
- }
11
-
12
3
  export const createTicket = (app: Express.Application, cookie?: string, title = 'Test Event', price = 20000, expectedStatusCode = 201) => {
13
4
  return request(app)
14
5
  .post('/api/tickets')