qpa-client/server/src/Auth/__tests__/authContext.ts

68 lines
1.6 KiB
TypeScript

import {createTestClient} from 'apollo-server-testing'
import {createServer} from "../../graphql"
import {Connection, createConnection} from "typeorm"
import {testConfig} from "../../ormconfig"
import gql from "graphql-tag"
import {PostOffice, sendEmail} from "../../post_office"
import {User} from "../User.entity"
import {Session, SessionInvite} from "../Session.entity"
import SessionManager from "../SessionManager"
jest.setTimeout(10000)
let testClient
let connection: Connection = null
describe('Authentication', () => {
beforeAll(async () => {
connection = await createConnection({
...testConfig,
logging: null
})
})
afterAll(async () => {
await connection.close()
})
it('API Identifies user from auth header', async () => {
const testyUser = new User()
testyUser.email = 'testy@user.com'
testyUser.username = 'mrtesty'
testyUser.name = 'test man'
await testyUser.save()
const server = await createServer({
typeormConnection: connection,
sessionManager: {} as SessionManager,
sendEmail: jest.fn(() => Promise.resolve(true)) as PostOffice,
domain: 'example.com',
customContext: {
user: testyUser
}
})
testClient = await createTestClient(server as any)
const session = new Session()
session.user = testyUser
session.hash = 'testy-user-secret-hash-token'
session.save()
const meQuery = gql`
query {
me {
username
}
}
`
const result = await testClient.query({
query: meQuery,
sdf: 1
})
expect(result.data.me.username).toEqual('mrtesty')
})
})