@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.
- package/.vscode/launch.json +20 -0
- package/CHANGELOG.md +40 -0
- package/LICENSE.md +21 -0
- package/coverage/clover.xml +144 -0
- package/coverage/coverage-final.json +11 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +176 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/src/app.ts.html +148 -0
- package/coverage/lcov-report/src/events/publishers/tickets/created.ts.html +106 -0
- package/coverage/lcov-report/src/events/publishers/tickets/index.html +131 -0
- package/coverage/lcov-report/src/events/publishers/tickets/updated.ts.html +106 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/models/index.html +116 -0
- package/coverage/lcov-report/src/models/ticket.ts.html +211 -0
- package/coverage/lcov-report/src/routes/create.ts.html +157 -0
- package/coverage/lcov-report/src/routes/find.ts.html +118 -0
- package/coverage/lcov-report/src/routes/get.ts.html +133 -0
- package/coverage/lcov-report/src/routes/index.html +176 -0
- package/coverage/lcov-report/src/routes/index.ts.html +103 -0
- package/coverage/lcov-report/src/routes/update.ts.html +172 -0
- package/coverage/lcov-report/src/test/index.html +116 -0
- package/coverage/lcov-report/src/test/utils.ts.html +112 -0
- package/coverage/lcov.info +223 -0
- package/package.json +13 -5
- package/pnpm-lock.yaml +50 -19
- package/src/routes/__test__/create.test.ts +7 -6
- package/src/routes/__test__/find.test.ts +7 -3
- package/src/routes/__test__/get.test.ts +5 -3
- package/src/routes/__test__/update.test.ts +15 -13
- package/src/routes/update.ts +1 -1
- 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
|
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
|
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
|
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
|
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', [
|
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', [
|
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
|
})
|
package/src/routes/update.ts
CHANGED
@@ -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')
|