diff --git a/jest/__mocks__/encoding.js b/jest/__mocks__/encoding.js index 16f9ef6..062deab 100644 --- a/jest/__mocks__/encoding.js +++ b/jest/__mocks__/encoding.js @@ -1,44 +1,54 @@ export const mock_TextEncoder_encode = jest.fn(); export const TextEncoder = jest.fn().mockImplementation(() => { - return { - encoding: "utf-8", - encode: mock_TextEncoder_encode, - }; + return { + encoding: "utf-8", + encode: mock_TextEncoder_encode + }; }); export const mock_TextDecoder_decode = jest.fn(); -export const TextDecoder = jest.fn().mockImplementation( () => { - return { - fatal: false, - ignoreBOM: false, - encoding: "utf-8", - decode: mock_TextDecoder_decode - }; +export const TextDecoder = jest.fn().mockImplementation(() => { + return { + fatal: false, + ignoreBOM: false, + encoding: "utf-8", + decode: mock_TextDecoder_decode + }; }); export const atob = jest.fn(); export const btoa = jest.fn(); export const mock_base64_decode = jest.fn(); -const Base64 = jest.fn().mockImplementation( () => { - return { - decode: mock_base64_decode, - }; +export const mock_base64_encode = jest.fn(); + +const Base64 = jest.fn().mockImplementation(() => { + return { + decode: mock_base64_decode, + encode: mock_base64_encode + }; }); + export const base64 = new Base64(); export const mock_base64url_decode = jest.fn(); -const Base64url = jest.fn().mockImplementation( () => { - return { - decode: mock_base64url_decode, - }; +export const mock_base64url_encode = jest.fn(); + +const Base64url = jest.fn().mockImplementation(() => { + return { + decode: mock_base64url_decode, + encode: mock_base64url_encode + }; }); export const base64url = new Base64url(); export const mock_base16_decode = jest.fn(); -const Base16 = jest.fn().mockImplementation( () => { - return { - decode: mock_base16_decode, - }; +export const mock_base16_encode = jest.fn(); + +const Base16 = jest.fn().mockImplementation(() => { + return { + decode: mock_base16_decode, + encode: mock_base16_encode + }; }); export const base16 = new Base16(); diff --git a/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json b/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json index 61b5349..cd7f709 100644 --- a/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json +++ b/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json @@ -1,4 +1,4 @@ { - "edgeworker-version": "0.1", - "description" : "Examples of atob, btoa, baseX.decode usage." + "edgeworker-version": "0.2", + "description" : "Examples of atob, btoa, baseX.decode, baseX.encode usage." } \ No newline at end of file diff --git a/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js b/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js index 90c259b..ee06361 100644 --- a/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js +++ b/jest/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js @@ -1,16 +1,37 @@ import { atob, btoa, base64, base64url, base16 } from "encoding"; export function onClientRequest(request) { - let result = base64.decode("SGVsbG8=", "String"); //decodes to "Hello" - let dec = atob("V29ybGQ="); //decodes to "World" + let encoded = base64.encode( + new Uint8Array([ + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 119, + 111, + 114, + 108, + 100, + 33 + ]) + ); + let result = base64.decode("SGVsbG8=", "String"); // Decodes to "Hello" + let dec = atob("V29ybGQ="); // Decodes to "World" } export function onOriginRequest(request) { let enc = btoa("Hello"); + let encoded = base64url.encode( + new Uint8Array([72, 101, 108, 108, 111, 32, 116, 104, 101, 114, 101]) + ); let result1 = base64url.decode(enc, "String"); - let result2 = base16.decode("576F726C64", "String"); //decodes to "World" + let result2 = base16.decode("576F726C64", "String"); // Decodes to "World" + let enc3 = base16.encode(new Uint8Array([72, 101, 108, 108, 111])); // "Hello" } export function onOriginResponse(request, response) { - let result = base64.decode("SGVsbG8sIHdvcmxk", "Uint8Array"); //decodes to "[72,101,108,108,111,44,32,119,111,114,108,100]" -} \ No newline at end of file + let result = base64.decode("SGVsbG8sIHdvcmxk", "Uint8Array"); // Decodes to "[72,101,108,108,111,44,32,119,111,114,108,100]" +} diff --git a/jest/package-lock.json b/jest/package-lock.json index 6b52415..f97c6b9 100644 --- a/jest/package-lock.json +++ b/jest/package-lock.json @@ -1,12 +1,12 @@ { "name": "edgeworkers-jest-mocks", - "version": "1.0.25", + "version": "1.0.26", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "edgeworkers-jest-mocks", - "version": "1.0.25", + "version": "1.0.26", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.17.8", diff --git a/jest/package.json b/jest/package.json index 20a9f61..fa3a073 100644 --- a/jest/package.json +++ b/jest/package.json @@ -1,6 +1,6 @@ { "name": "edgeworkers-jest-mocks", - "version": "1.0.25", + "version": "1.0.26", "description": "Akamai EdgeWorkers Jest mocks", "dependencies": { "@babel/core": "^7.17.8", diff --git a/jest/test/examples/encoding/main.test.js b/jest/test/examples/encoding/main.test.js index 5735f10..2817abc 100644 --- a/jest/test/examples/encoding/main.test.js +++ b/jest/test/examples/encoding/main.test.js @@ -1,42 +1,81 @@ -import {onClientRequest, onOriginResponse, onOriginRequest} from "../../../edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main"; +import { + onClientRequest, + onOriginResponse, + onOriginRequest +} from "../../../edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main"; import Request from "request"; import Response from "response"; -import {atob, btoa, mock_base16_decode, mock_base64_decode, mock_base64url_decode} from "../../../__mocks__/encoding"; +import { + atob, + btoa, + mock_base16_decode, + mock_base16_encode, + mock_base64_decode, + mock_base64_encode, + mock_base64url_decode, + mock_base64url_encode +} from "../../../__mocks__/encoding"; +describe("EdgeWorker that has atob, btoa, baseX.decode, baseX.encode usage", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); -describe('EdgeWorker that has atob, btoa, baseX.decode usage', () => { + test("onClientRequest decodes hello World by using decode and atob ", () => { + let requestMock = new Request(); + onClientRequest(requestMock); + expect(mock_base64_decode).toHaveBeenCalledTimes(1); + expect(mock_base64_encode).toHaveBeenCalledTimes(1); + expect(atob).toHaveBeenCalledTimes(1); + expect(mock_base64_decode).toHaveBeenCalledWith("SGVsbG8=", "String"); + expect(mock_base64_encode).toHaveBeenCalledWith( + new Uint8Array([ + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 119, + 111, + 114, + 108, + 100, + 33 + ]) + ); + expect(atob).toBeCalledWith("V29ybGQ="); + }); - beforeEach(() => { - jest.clearAllMocks(); - }); + test("onOriginRequest decodes Hello World by using btoa, base64url.decode, base64url.encode, base16.encode and base16.decode", () => { + let requestMock = new Request(); + onOriginRequest(requestMock); + expect(btoa).toHaveBeenCalledTimes(1); + expect(mock_base64url_decode).toHaveBeenCalledTimes(1); + expect(mock_base64url_encode).toHaveBeenCalledTimes(1); + expect(mock_base16_decode).toHaveBeenCalledTimes(1); + expect(mock_base16_encode).toHaveBeenCalledTimes(1); - test("onClientRequest decodes hello World by using decode and atob ", () => { - let requestMock = new Request(); - onClientRequest(requestMock); - expect(mock_base64_decode).toHaveBeenCalledTimes(1); - expect(atob).toHaveBeenCalledTimes(1); - expect(mock_base64_decode).toHaveBeenCalledWith("SGVsbG8=", "String"); - expect(atob).toBeCalledWith("V29ybGQ="); - }); + expect(btoa).toHaveBeenCalledWith("Hello"); + expect(mock_base16_decode).toHaveBeenCalledWith("576F726C64", "String"); + expect(mock_base16_encode).toHaveBeenCalledWith( + new Uint8Array([72, 101, 108, 108, 111]) + ); + expect(mock_base64url_encode).toHaveBeenCalledWith( + new Uint8Array([72, 101, 108, 108, 111, 32, 116, 104, 101, 114, 101]) + ); + }); - test("onOriginRequest decodes Hello World by using btoa, base64url.decode and base16.decode", () => { - let requestMock = new Request(); - onOriginRequest(requestMock); - expect(btoa).toHaveBeenCalledTimes(1); - expect(mock_base64url_decode).toHaveBeenCalledTimes(1); - expect(mock_base16_decode).toHaveBeenCalledTimes(1); + test("onOriginResponse decodes to Uint8Array using base64.decode", () => { + let requestMock = new Request(); + let responseMock = new Response(); + onOriginResponse(requestMock, responseMock); + expect(mock_base64_decode).toHaveBeenCalledTimes(1); - expect(btoa).toHaveBeenCalledWith("Hello"); - expect(mock_base16_decode).toHaveBeenCalledWith("576F726C64", "String"); - }); - - test("onOriginResponse decodes to Uint8Array using base64.decode", () => { - let requestMock = new Request(); - let responseMock = new Response(); - onOriginResponse(requestMock, responseMock); - expect(mock_base64_decode).toHaveBeenCalledTimes(1); - - expect(mock_base64_decode).toHaveBeenCalledWith("SGVsbG8sIHdvcmxk", "Uint8Array"); - }); + expect(mock_base64_decode).toHaveBeenCalledWith( + "SGVsbG8sIHdvcmxk", + "Uint8Array" + ); + }); }); - diff --git a/mocha/__mocks__/encoding.js b/mocha/__mocks__/encoding.js index f132b3f..e8c6ecb 100644 --- a/mocha/__mocks__/encoding.js +++ b/mocha/__mocks__/encoding.js @@ -22,26 +22,32 @@ export const atob = sinon.stub(); export const btoa = sinon.stub(); export const mock_base64_decode = sinon.stub(); +export const mock_base64_encode = sinon.stub(); class Base64 { constructor() { this.decode = mock_base64_decode; + this.encode = mock_base64_encode; } } export const base64 = new Base64(); export const mock_base64url_decode = sinon.stub(); +export const mock_base64url_encode = sinon.stub(); class Base64url { constructor() { this.decode = mock_base64url_decode; + this.encode = mock_base64url_encode; } } export const base64url = new Base64url(); export const mock_base16_decode = sinon.stub(); +export const mock_base16_encode = sinon.stub(); class Base16 { constructor() { this.decode = mock_base16_decode; + this.encode = mock_base16_encode; } } export const base16 = new Base16(); \ No newline at end of file diff --git a/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json b/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json index 61b5349..cd7f709 100644 --- a/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json +++ b/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/bundle.json @@ -1,4 +1,4 @@ { - "edgeworker-version": "0.1", - "description" : "Examples of atob, btoa, baseX.decode usage." + "edgeworker-version": "0.2", + "description" : "Examples of atob, btoa, baseX.decode, baseX.encode usage." } \ No newline at end of file diff --git a/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js b/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js index 90c259b..1cb0f1c 100644 --- a/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js +++ b/mocha/edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main.js @@ -1,14 +1,35 @@ import { atob, btoa, base64, base64url, base16 } from "encoding"; export function onClientRequest(request) { + let encoded = base64.encode( + new Uint8Array([ + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 119, + 111, + 114, + 108, + 100, + 33 + ]) + ); let result = base64.decode("SGVsbG8=", "String"); //decodes to "Hello" let dec = atob("V29ybGQ="); //decodes to "World" } export function onOriginRequest(request) { let enc = btoa("Hello"); + let encoded = base64url.encode( + new Uint8Array([72, 101, 108, 108, 111, 32, 116, 104, 101, 114, 101]) + ); let result1 = base64url.decode(enc, "String"); let result2 = base16.decode("576F726C64", "String"); //decodes to "World" + let enc3 = base16.encode(new Uint8Array([72, 101, 108, 108, 111])); // "Hello" } export function onOriginResponse(request, response) { diff --git a/mocha/package-lock.json b/mocha/package-lock.json index 0fe49dc..ddf76ab 100644 --- a/mocha/package-lock.json +++ b/mocha/package-lock.json @@ -1,12 +1,12 @@ { "name": "edgeworkers-mocha-mocks", - "version": "1.0.25", + "version": "1.0.26", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "edgeworkers-mocha-mocks", - "version": "1.0.25", + "version": "1.0.26", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.17.8", diff --git a/mocha/package.json b/mocha/package.json index fd33b8a..bda643a 100644 --- a/mocha/package.json +++ b/mocha/package.json @@ -1,6 +1,6 @@ { "name": "edgeworkers-mocha-mocks", - "version": "1.0.25", + "version": "1.0.26", "description": "Akamai EdgeWorkers Mocha mocks", "dependencies": { "@babel/core": "^7.17.8", diff --git a/mocha/test/examples/encoding/main.test.js b/mocha/test/examples/encoding/main.test.js index 5bea824..267f55b 100644 --- a/mocha/test/examples/encoding/main.test.js +++ b/mocha/test/examples/encoding/main.test.js @@ -1,52 +1,80 @@ -import {onClientRequest, onOriginResponse, onOriginRequest} from "../../../edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main"; +import { + onClientRequest, + onOriginRequest, + onOriginResponse +} from "../../../edgeworkers/examples/respond-from-edgeworkers/encoding/encoding/main"; import Request from "request"; import Response from "response"; import { atob, btoa, - mock_base16_decode, + mock_base16_decode, mock_base16_encode, mock_base64_decode, + mock_base64_encode, mock_base64url_decode, - mock_TextEncoder_encode + mock_base64url_encode } from "../../../__mocks__/encoding"; -const expect = require('expect.js'); + +const expect = require("expect.js"); const sinon = require("sinon"); -describe('EdgeWorker that has atob, btoa, baseX.decode usage', () => { +describe("EdgeWorker that has atob, btoa, baseX.decode usage", () => { - afterEach(() => { - sinon.reset(); - }); + afterEach(() => { + sinon.reset(); + }); - it("onClientRequest decodes hello World by using decode and atob ", () => { - let requestMock = new Request(); - onClientRequest(requestMock); - expect(mock_base64_decode.callCount).to.be(1); - expect(atob.callCount).to.be(1); + it("onClientRequest decodes hello World by using decode and atob ", () => { + let requestMock = new Request(); + onClientRequest(requestMock); + expect(mock_base64_decode.callCount).to.be(1); + expect(mock_base64_encode.callCount).to.be(1); + expect(atob.callCount).to.be(1); - expect(mock_base64_decode.calledWith("SGVsbG8=", "String")).to.be(true); - expect(atob.calledWith("V29ybGQ=")).to.be(true); + expect(mock_base64_decode.calledWith("SGVsbG8=", "String")).to.be(true); + expect(mock_base64_encode.calledWith(new Uint8Array([ + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 119, + 111, + 114, + 108, + 100, + 33 + ]))).to.be(true); + expect(atob.calledWith("V29ybGQ=")).to.be(true); - }); + }); - it("onOriginRequest decodes Hello World by using btoa, base64url.decode and base16.decode", () => { - let requestMock = new Request(); - onOriginRequest(requestMock); + it("onOriginRequest decodes Hello World by using btoa, base64url.decode and base16.decode", () => { + let requestMock = new Request(); + onOriginRequest(requestMock); - expect(mock_base64url_decode.callCount).to.be(1); - expect(btoa.callCount).to.be(1); - expect(mock_base16_decode.callCount).to.be(1); + expect(mock_base64url_decode.callCount).to.be(1); + expect(mock_base64url_encode.callCount).to.be(1); + expect(btoa.callCount).to.be(1); + expect(mock_base16_decode.callCount).to.be(1); + expect(mock_base16_encode.callCount).to.be(1); - expect(mock_base16_decode.calledWith("576F726C64", "String")).to.be(true); - expect(btoa.calledWith("Hello")).to.be(true); - }); + expect(mock_base64url_encode.calledWith( + new Uint8Array([72, 101, 108, 108, 111, 32, 116, 104, 101, 114, 101]))) + .to.be(true); + expect(mock_base16_decode.calledWith("576F726C64", "String")).to.be(true); + expect(mock_base16_encode.calledWith(new Uint8Array([72, 101, 108, 108, 111]))).to.be(true); + expect(btoa.calledWith("Hello")).to.be(true); + }); - it("onOriginResponse decodes to Uint8Array using base64.decode", () => { - let requestMock = new Request(); - let responseMock = new Response(); - onOriginResponse(requestMock, responseMock); - expect(mock_base64_decode.callCount).to.be(1); + it("onOriginResponse decodes to Uint8Array using base64.decode", () => { + let requestMock = new Request(); + let responseMock = new Response(); + onOriginResponse(requestMock, responseMock); + expect(mock_base64_decode.callCount).to.be(1); - expect(mock_base64_decode.calledWith("SGVsbG8sIHdvcmxk", "Uint8Array")).to.be(true); - }); + expect(mock_base64_decode.calledWith("SGVsbG8sIHdvcmxk", "Uint8Array")).to.be(true); + }); });