Skip to content

Instantly share code, notes, and snippets.

@pzmudzinski
Created October 4, 2019 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pzmudzinski/e91628d257175fa9cf45e6fe6984da97 to your computer and use it in GitHub Desktop.
Save pzmudzinski/e91628d257175fa9cf45e6fe6984da97 to your computer and use it in GitHub Desktop.
Custom jest expect extension for GraphQL auth tests
expect.extend({
toBeForbidden(received) {
const forbiddenErrorCode = 'FORBIDDEN';
if (!received.errors || received.errors.length === 0) {
return {
message: `No errors in response`,
pass: false
}
}
const {extensions} = received.errors[0];
if (!extensions) {
return {
message: `No extensions in response`,
pass: false
}
}
const {code} = extensions;
if (forbiddenErrorCode === code) {
return {
message: 'Returns FORBIDDEN',
pass: true
}
} else {
return {
message: `Expected ${forbiddenErrorCode}, received ${code}`,
pass: false
}
}
}
});
// Sample usage
// Helper method for checking forbidden mutations
const expectForbiddenMutationForUser = async (mutation, params) => {
const {server} = createServer({
accessToken: 'ACCESS_TOKEN',
user: {
role: ROLE_USER
}
});
const {mutate} = createTestClient(server);
const res = await mutate({
mutation,
variables: params
});
expect(res).toBeForbidden();
};
// Sample usage:
it('cannot create new user while having USER role', async () => {
await expectForbiddenMutationForUser(MUTATION_CREATE_USER, {
userBody: {
email: 'wayne@gmail.com',
address1: 'addr1',
city: 'city',
state: 'CA',
postalCode: '94608',
country: 'USA',
lastName: 'Gretzky',
firstName: 'Wayne',
birthDate: '2005-05-05',
password: '123456'
}
})
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment