@next-k8s/tickets 1.0.14 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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')