Skip to content

Commit

Permalink
feat: 🎸 Added getter for logged in personal number (kolplattformen#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
JohanObrink authored Jan 18, 2021
1 parent db0faf2 commit a860d12
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 1 deletion.
43 changes: 43 additions & 0 deletions lib/api.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,34 @@ describe('api', () => {
done()
})
})
it('remembers used personal number', async () => {
const data = {
token: '9462cf77-bde9-4029-bb41-e599f3094613',
order: '5fe57e4c-9ad2-4b52-b794-48adef2f6663',
}
response.json.mockResolvedValue(data)

const personalNumber = 'my personal number'
await api.login(personalNumber)

expect(api.getPersonalNumber()).toEqual(personalNumber)
})
it('forgets used personal number if sign in is unsuccessful', async (done) => {
const data = {
token: '9462cf77-bde9-4029-bb41-e599f3094613',
order: '5fe57e4c-9ad2-4b52-b794-48adef2f6663',
}
response.json.mockResolvedValue(data)
response.text.mockResolvedValueOnce('ERROR')

const personalNumber = 'my personal number'
const status = await api.login(personalNumber)

status.on('ERROR', () => {
expect(api.getPersonalNumber()).toEqual(undefined)
done()
})
})
})
describe('#logout', () => {
it('clears cookies', async () => {
Expand All @@ -102,6 +130,21 @@ describe('api', () => {
await api.logout()
expect(api.isLoggedIn).toBe(false)
})
it('forgets personalNumber', async () => {
const data = {
token: '9462cf77-bde9-4029-bb41-e599f3094613',
order: '5fe57e4c-9ad2-4b52-b794-48adef2f6663',
}
response.json.mockResolvedValue(data)

const pnr = 'my personal number'
await api.login(pnr)
api.isLoggedIn = true

await api.logout()

expect(api.getPersonalNumber()).toEqual(undefined)
})
})
describe('fake', () => {
it('sets fake mode for the correct pnr:s', async () => {
Expand Down
13 changes: 12 additions & 1 deletion lib/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import * as fake from './fakeData'
export class Api extends EventEmitter {
private fetch: Fetcher

private personalNumber?: string

private session?: RequestInit

private clearCookies: AsyncishFunction
Expand All @@ -39,6 +41,10 @@ export class Api extends EventEmitter {
this.clearCookies = clearCookies
}

getPersonalNumber() {
return this.personalNumber
}

getSessionCookie() {
return this.session?.headers?.Cookie
}
Expand All @@ -63,13 +69,17 @@ export class Api extends EventEmitter {
const ticketResponse = await this.fetch('auth-ticket', ticketUrl)
const ticket: AuthTicket = await ticketResponse.json()

// login was initiated - store personal number
this.personalNumber = personalNumber

const status = checkStatus(this.fetch, ticket)
status.on('OK', async () => {
const cookieUrl = routes.loginCookie
const cookieResponse = await this.fetch('login-cookie', cookieUrl)
const cookie = cookieResponse.headers.get('set-cookie') || ''
this.setSessionCookie(cookie)
})
status.on('ERROR', () => { this.personalNumber = undefined })

return status
}
Expand Down Expand Up @@ -162,8 +172,9 @@ export class Api extends EventEmitter {
async logout() {
this.isFake = false
this.session = undefined
await this.clearCookies()
this.personalNumber = undefined
this.isLoggedIn = false
try { await this.clearCookies() } catch (_) { /* do nothing */ }
this.emit('logout')
}
}

0 comments on commit a860d12

Please sign in to comment.