You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
demo-graphql-oauth/src/server.spec.ts

85 lines
2.0 KiB

import ApolloClient, { gql } from "apollo-boost"
import fetch from "node-fetch"
import { createConnection } from "typeorm"
import { createServer } from "./server"
import {
initializeRollbackTransactions,
runInRollbackTransaction,
testingConnectionOptions,
} from "./server/testing"
const port = 4001
beforeAll(async () => {
initializeRollbackTransactions()
await createConnection(testingConnectionOptions())
await createServer(port)
})
describe("server should", () => {
it(
"handle auth user me request",
runInRollbackTransaction(async () => {
const uri = `http://localhost:${port}/graphql`
let client = new ApolloClient({ uri, fetch })
const createUserMutation = gql`
mutation {
createUser(email: "email@email.com", password: "password") {
email
}
}
`
await client.mutate({ mutation: createUserMutation })
const loginTokensQuery = gql`
query {
loginTokens(email: "email@email.com", password: "password") {
accessToken
}
}
`
const tokens = await client.query({ query: loginTokensQuery })
const accessToken = tokens.data.loginTokens.accessToken
client = new ApolloClient({
uri,
fetch,
request: operation => {
operation.setContext({
headers: {
authorization: "Bearer " + accessToken,
},
})
},
})
const meQuery = gql`
query {
me {
email
}
}
`
const meResponse = await client.query({ query: meQuery })
const meEmail = meResponse.data.me.email
expect(meEmail).toBe("email@email.com")
})
)
it(
"receive no refresh token without auth header",
runInRollbackTransaction(async () => {
const uri = `http://localhost:${port}/refresh_token`
const response = await fetch(uri, { method: "POST" })
const jsonResponse = await response.json()
expect(jsonResponse.data).toBeNull()
expect(jsonResponse.errors).not.toBeUndefined()
})
)
})