UNPKG

@viyet/magento-client

Version:

Sotheby's Home Custom Magento API Client

128 lines (88 loc) 4.35 kB
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); }); }); });