@viyet/magento-client
Version:
Sotheby's Home Custom Magento API Client
128 lines (88 loc) • 4.35 kB
text/typescript
import { expect } from "chai";
import { Auth } from "../../src/modules/Auth";
import { defaultConfig } from "../../src/config/default";
import { Transport } from "../../src/modules/Transport";
import nock from "nock";
import isLoggedInMocks from "../mocks/auth.isLoggedIn.json";
import findLoggedInUserByHeadersMocks from "../mocks/auth.findLoggedInUserByHeaders.json";
import loginMocks from "../mocks/auth.login.json";
import registerMocks from "../mocks/auth.register.json";
describe("Auth", () => {
const transport = new Transport.API(defaultConfig);
it("can be instantiated passing a transport", () => {
const auth = new Auth.API(transport);
expect(auth).to.be.instanceOf(Auth.API);
});
describe("isLoggedIn", () => {
it("should return a Promise that resolves to FALSE if user IS NOT logged in", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.get("/" + defaultConfig.api.routes.auth.sessionData)
.reply(200, isLoggedInMocks.userIsNotLoggedIn);
const auth = new Auth.API(transport);
const result = await auth.isLoggedIn({});
expect(result).to.be.false;
});
it("should return a Promise that resolves to TRUE if user IS logged in", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.get("/" + defaultConfig.api.routes.auth.sessionData)
.reply(200, isLoggedInMocks.userIsLoggedIn);
const auth = new Auth.API(transport);
const result = await auth.isLoggedIn({should: "have", magento: "session", required: "headers"});
expect(result).to.be.true;
});
});
describe("findLoggedInUserByHeaders", () => {
it ("should return false if no logged in user is found", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.get("/" + defaultConfig.api.routes.auth.sessionData)
.reply(200, findLoggedInUserByHeadersMocks.noUserFound);
const auth = new Auth.API(transport);
const result = await auth.findLoggedInUserByHeaders({});
expect(result).to.be.false;
});
it ("should return user data if user is logged in", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.get("/" + defaultConfig.api.routes.auth.sessionData)
.reply(200, findLoggedInUserByHeadersMocks.userData);
const auth = new Auth.API(transport);
const result = await auth.findLoggedInUserByHeaders({should: "have", magento: "session", required: "headers"});
expect(result).to.be.deep.equal(findLoggedInUserByHeadersMocks.userData);
});
});
describe("login", () => {
it ("should return ERROR message if user credentials are WRONG", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.post("/" + defaultConfig.api.routes.auth.login)
.reply(200, loginMocks.error);
const auth = new Auth.API(transport);
const result = await auth.login(loginMocks.credentials);
expect(result.data).to.be.deep.equal(loginMocks.error);
});
it ("should return SUCCESS message if user credentials are OK", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.post("/" + defaultConfig.api.routes.auth.login)
.reply(200, loginMocks.success);
const auth = new Auth.API(transport);
const result = await auth.login(loginMocks.credentials);
expect(result.data).to.be.deep.equal(loginMocks.success);
});
});
describe("register", () => {
it ("should return ERROR message if user registration request is NOT successful", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.post("/" + defaultConfig.api.routes.auth.login)
.reply(200, registerMocks.error);
const auth = new Auth.API(transport);
const result = await auth.login(registerMocks.userData);
expect(result.data).to.be.deep.equal(registerMocks.error);
});
it ("should return SUCCESS message if user registration request IS successful", async () => {
const scope = nock(defaultConfig.api.baseUrl)
.post("/" + defaultConfig.api.routes.auth.login)
.reply(200, registerMocks.success);
const auth = new Auth.API(transport);
const result = await auth.login(registerMocks.userData);
expect(result.data).to.be.deep.equal(registerMocks.success);
});
});
});