diff --git a/CHANGELOG.md b/CHANGELOG.md index 61d8883..5da8b35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,9 @@ Changelog 0.2.0 (in progress) ------------------- - - Added PayPal account endpoint - Added transfer endpoint +- Added client token endpoint - Added Layer 7 encryption - Added payment status transition endpoint - Added paper check endpoint diff --git a/src/Hyperwallet.js b/src/Hyperwallet.js index 8749adc..e0e9a31 100644 --- a/src/Hyperwallet.js +++ b/src/Hyperwallet.js @@ -558,6 +558,25 @@ export default class Hyperwallet { this.client.doGet(`users/${encodeURIComponent(userToken)}/bank-cards/${encodeURIComponent(bankCardToken)}/status-transitions`, options, Hyperwallet.handle204Response(callback)); } + //-------------------------------------- + // Client Token + //-------------------------------------- + + /** + * Get client token + * + * @param {string} userToken - The user token + * @param {api-callback} callback - The callback for this call + * + * @throws Will throw an error if userToken is not provided + */ + getClientToken(userToken, callback) { + if (!userToken) { + throw new Error("userToken is required"); + } + this.client.doPost(`users/${encodeURIComponent(userToken)}/client-token`, {}, {}, callback); + } + //-------------------------------------- // Paper Checks //-------------------------------------- diff --git a/test/Hyperwallet.spec.js b/test/Hyperwallet.spec.js index d8fc598..1d02464 100644 --- a/test/Hyperwallet.spec.js +++ b/test/Hyperwallet.spec.js @@ -761,6 +761,42 @@ describe("Hyperwallet", () => { }); }); + //-------------------------------------- + // Client Token + //-------------------------------------- + + /** @test {Hyperwallet#getClientToken} */ + describe("getClientToken()", () => { + let client; + let apiClientSpy; + + beforeEach(() => { + apiClientSpy = sinon.spy(); + client = new Hyperwallet({ + username: "test-username", + password: "test-password", + }); + client.client = { + doPost: apiClientSpy, + }; + }); + + /** @test {Hyperwallet#getClientToken} */ + it("should throw error if userToken is missing", () => { + const callback = () => null; + expect(() => client.getClientToken(undefined, callback)).to.throw("userToken is required"); + }); + + /** @test {Hyperwallet#getClientToken} */ + it("should do post call to client token endpoint", () => { + const callback = () => null; + client.getClientToken("test-user-token", callback); + + apiClientSpy.should.have.been.calledOnce(); + apiClientSpy.should.have.been.calledWith("users/test-user-token/client-token", {}, {}, callback); + }); + }); + //-------------------------------------- // Paper Checks //--------------------------------------