feat(SW-2116): Use refId instead of confirmationNumber

This commit is contained in:
Michael Zetterberg
2025-05-04 11:11:15 +02:00
parent f681fa7675
commit b910b6a313
59 changed files with 491 additions and 310 deletions

View File

@@ -14,18 +14,32 @@ import type { Guest } from "@/server/routers/booking/output"
describe("Access booking", () => {
describe("for logged in booking", () => {
it("should enable access if all is provided", () => {
expect(accessBooking(loggedIn, "Booking", user)).toBe(ACCESS_GRANTED)
expect(accessBooking(loggedInGuest, "Booking", authenticatedUser)).toBe(
ACCESS_GRANTED
)
})
it("should enable access if all is provided and be case-insensitive", () => {
expect(accessBooking(loggedIn, "BoOkInG", user)).toBe(ACCESS_GRANTED)
expect(accessBooking(loggedInGuest, "BoOkInG", authenticatedUser)).toBe(
ACCESS_GRANTED
)
})
it("should prompt to login", () => {
expect(accessBooking(loggedIn, "Booking", null)).toBe(ERROR_UNAUTHORIZED)
it("should prompt to login without user", () => {
expect(accessBooking(loggedInGuest, "Booking", null)).toBe(
ERROR_UNAUTHORIZED
)
})
it("should deny access", () => {
expect(accessBooking(loggedIn, "NotBooking", user)).toBe(ERROR_NOT_FOUND)
it("should prompt to login if user mismatch", () => {
expect(
accessBooking(loggedInGuest, "Booking", badAuthenticatedUser)
).toBe(ERROR_UNAUTHORIZED)
})
it("should deny access if refId mismatch", () => {
expect(
accessBooking(loggedInGuest, "NotBooking", authenticatedUser)
).toBe(ERROR_UNAUTHORIZED)
})
})
describe("for anonymous booking", () => {
it("should enable access if all is provided", () => {
const cookieString = new URLSearchParams({
@@ -34,7 +48,7 @@ describe("Access booking", () => {
lastName: "Booking",
email: "logged+out@scandichotels.com",
}).toString()
expect(accessBooking(loggedOut, "Booking", null, cookieString)).toBe(
expect(accessBooking(loggedOutGuest, "Booking", null, cookieString)).toBe(
ACCESS_GRANTED
)
})
@@ -45,7 +59,7 @@ describe("Access booking", () => {
lastName: "Booking",
email: "logged+out@scandichotels.com",
}).toString()
expect(accessBooking(loggedOut, "Booking", null, cookieString)).toBe(
expect(accessBooking(loggedOutGuest, "Booking", null, cookieString)).toBe(
ACCESS_GRANTED
)
})
@@ -56,7 +70,7 @@ describe("Access booking", () => {
lastName: "Booking",
email: "logged+out@scandichotels.com",
}).toString()
expect(accessBooking(loggedOut, "BoOkInG", null, cookieString)).toBe(
expect(accessBooking(loggedOutGuest, "BoOkInG", null, cookieString)).toBe(
ACCESS_GRANTED
)
})
@@ -67,7 +81,7 @@ describe("Access booking", () => {
lastName: "Booking",
email: "LOGGED+out@scandichotels.com",
}).toString()
expect(accessBooking(loggedOut, "Booking", null, cookieString)).toBe(
expect(accessBooking(loggedOutGuest, "Booking", null, cookieString)).toBe(
ACCESS_GRANTED
)
})
@@ -78,9 +92,14 @@ describe("Access booking", () => {
lastName: "Booking",
email: "logged+out@scandichotels.com",
}).toString()
expect(accessBooking(loggedOut, "Booking", user, cookieString)).toBe(
ERROR_FORBIDDEN
)
expect(
accessBooking(
loggedOutGuest,
"Booking",
authenticatedUser,
cookieString
)
).toBe(ERROR_FORBIDDEN)
})
it("should prompt for more if first name is missing", () => {
const cookieString = new URLSearchParams({
@@ -88,7 +107,7 @@ describe("Access booking", () => {
lastName: "Booking",
email: "logged+out@scandichotels.com",
}).toString()
expect(accessBooking(loggedOut, "Booking", null, cookieString)).toBe(
expect(accessBooking(loggedOutGuest, "Booking", null, cookieString)).toBe(
ERROR_BAD_REQUEST
)
})
@@ -98,23 +117,25 @@ describe("Access booking", () => {
firstName: "Anonymous",
lastName: "Booking",
}).toString()
expect(accessBooking(loggedOut, "Booking", null, cookieString)).toBe(
expect(accessBooking(loggedOutGuest, "Booking", null, cookieString)).toBe(
ERROR_BAD_REQUEST
)
})
it("should prompt for more if cookie is invalid", () => {
const cookieString = new URLSearchParams({}).toString()
expect(accessBooking(loggedOut, "Booking", null, cookieString)).toBe(
expect(accessBooking(loggedOutGuest, "Booking", null, cookieString)).toBe(
ERROR_BAD_REQUEST
)
})
it("should deny access", () => {
expect(accessBooking(loggedOut, "NotBooking", null)).toBe(ERROR_NOT_FOUND)
it("should deny access if refId mismatch", () => {
expect(accessBooking(loggedOutGuest, "NotBooking", null)).toBe(
ERROR_NOT_FOUND
)
})
})
})
const user: SafeUser = {
const authenticatedUser: SafeUser = {
address: {
city: undefined,
country: "Sweden",
@@ -124,10 +145,10 @@ const user: SafeUser = {
},
dateOfBirth: "",
email: "",
firstName: "",
firstName: "Authenticated",
language: undefined,
lastName: "",
membershipNumber: "",
lastName: "Booking",
membershipNumber: "01234567890123",
membership: undefined,
loyalty: {
memberships: [],
@@ -145,7 +166,38 @@ const user: SafeUser = {
profileId: "",
}
const loggedOut: Guest = {
const badAuthenticatedUser: SafeUser = {
address: {
city: undefined,
country: "Sweden",
countryCode: "SE",
streetAddress: undefined,
zipCode: undefined,
},
dateOfBirth: "",
email: "",
firstName: "Authenticated",
language: undefined,
lastName: `Bad name ${Math.random()}`,
membershipNumber: "0987654321",
membership: undefined,
loyalty: {
memberships: [],
pointExpirations: [],
points: {
earned: 0,
spent: 0,
spendable: 0,
},
tier: "L1",
tierExpires: "",
},
name: "",
phoneNumber: undefined,
profileId: "",
}
const loggedOutGuest: Guest = {
email: "logged+out@scandichotels.com",
firstName: "Anonymous",
lastName: "Booking",
@@ -154,7 +206,7 @@ const loggedOut: Guest = {
countryCode: "SE",
}
const loggedIn: Guest = {
const loggedInGuest: Guest = {
email: "logged+in@scandichotels.com",
firstName: "Authenticated",
lastName: "Booking",