瀏覽代碼

adding more tests

d98762625 7 年之前
父節點
當前提交
50c916216c
共有 4 個文件被更改,包括 162 次插入15 次删除
  1. 4 0
      src/node/api.mjs
  2. 3 0
      src/node/config/excludedOperations.mjs
  3. 0 15
      src/node/index.mjs
  4. 155 0
      test/tests/nodeApi/ops.mjs

+ 4 - 0
src/node/api.mjs

@@ -81,6 +81,10 @@ function transformArgs(originalArgs, newArgs) {
  * @param input
  */
 const ensureIsDish = function ensureIsDish(input) {
+    if (!input) {
+        return new SyncDish();
+    }
+
     let dish;
     if (input instanceof SyncDish) {
         dish = input;

+ 3 - 0
src/node/config/excludedOperations.mjs

@@ -22,4 +22,7 @@ export default  [
     // Also uses files
     "DetectFileType",
     "ExtractEXIF",
+
+    // Relies on state of recipe.
+    // "Magic",
 ];

+ 0 - 15
src/node/index.mjs

@@ -57,7 +57,6 @@ import {
     DecodeText as core_DecodeText,
     DeriveEVPKey as core_DeriveEVPKey,
     DerivePBKDF2Key as core_DerivePBKDF2Key,
-    DetectFileType as core_DetectFileType,
     Diff as core_Diff,
     DisassembleX86 as core_DisassembleX86,
     Divide as core_Divide,
@@ -70,7 +69,6 @@ import {
     ExpandAlphabetRange as core_ExpandAlphabetRange,
     ExtractDates as core_ExtractDates,
     ExtractDomains as core_ExtractDomains,
-    ExtractEXIF as core_ExtractEXIF,
     ExtractEmailAddresses as core_ExtractEmailAddresses,
     ExtractFilePaths as core_ExtractFilePaths,
     ExtractIPAddresses as core_ExtractIPAddresses,
@@ -129,7 +127,6 @@ import {
     MD4 as core_MD4,
     MD5 as core_MD5,
     MD6 as core_MD6,
-    Magic as core_Magic,
     Mean as core_Mean,
     Median as core_Median,
     MicrosoftScriptDecoder as core_MicrosoftScriptDecoder,
@@ -320,7 +317,6 @@ function generateChef() {
         "decodeText": wrap(core_DecodeText),
         "deriveEVPKey": wrap(core_DeriveEVPKey),
         "derivePBKDF2Key": wrap(core_DerivePBKDF2Key),
-        "detectFileType": wrap(core_DetectFileType),
         "diff": wrap(core_Diff),
         "disassembleX86": wrap(core_DisassembleX86),
         "divide": wrap(core_Divide),
@@ -333,7 +329,6 @@ function generateChef() {
         "expandAlphabetRange": wrap(core_ExpandAlphabetRange),
         "extractDates": wrap(core_ExtractDates),
         "extractDomains": wrap(core_ExtractDomains),
-        "extractEXIF": wrap(core_ExtractEXIF),
         "extractEmailAddresses": wrap(core_ExtractEmailAddresses),
         "extractFilePaths": wrap(core_ExtractFilePaths),
         "extractIPAddresses": wrap(core_ExtractIPAddresses),
@@ -392,7 +387,6 @@ function generateChef() {
         "MD4": wrap(core_MD4),
         "MD5": wrap(core_MD5),
         "MD6": wrap(core_MD6),
-        "magic": wrap(core_Magic),
         "mean": wrap(core_Mean),
         "median": wrap(core_Median),
         "microsoftScriptDecoder": wrap(core_MicrosoftScriptDecoder),
@@ -567,7 +561,6 @@ const decodeNetBIOSName = chef.decodeNetBIOSName;
 const decodeText = chef.decodeText;
 const deriveEVPKey = chef.deriveEVPKey;
 const derivePBKDF2Key = chef.derivePBKDF2Key;
-const detectFileType = chef.detectFileType;
 const diff = chef.diff;
 const disassembleX86 = chef.disassembleX86;
 const divide = chef.divide;
@@ -580,7 +573,6 @@ const escapeUnicodeCharacters = chef.escapeUnicodeCharacters;
 const expandAlphabetRange = chef.expandAlphabetRange;
 const extractDates = chef.extractDates;
 const extractDomains = chef.extractDomains;
-const extractEXIF = chef.extractEXIF;
 const extractEmailAddresses = chef.extractEmailAddresses;
 const extractFilePaths = chef.extractFilePaths;
 const extractIPAddresses = chef.extractIPAddresses;
@@ -639,7 +631,6 @@ const MD2 = chef.MD2;
 const MD4 = chef.MD4;
 const MD5 = chef.MD5;
 const MD6 = chef.MD6;
-const magic = chef.magic;
 const mean = chef.mean;
 const median = chef.median;
 const microsoftScriptDecoder = chef.microsoftScriptDecoder;
@@ -812,7 +803,6 @@ const operations = [
     decodeText,
     deriveEVPKey,
     derivePBKDF2Key,
-    detectFileType,
     diff,
     disassembleX86,
     divide,
@@ -825,7 +815,6 @@ const operations = [
     expandAlphabetRange,
     extractDates,
     extractDomains,
-    extractEXIF,
     extractEmailAddresses,
     extractFilePaths,
     extractIPAddresses,
@@ -884,7 +873,6 @@ const operations = [
     MD4,
     MD5,
     MD6,
-    magic,
     mean,
     median,
     microsoftScriptDecoder,
@@ -1060,7 +1048,6 @@ export {
     decodeText,
     deriveEVPKey,
     derivePBKDF2Key,
-    detectFileType,
     diff,
     disassembleX86,
     divide,
@@ -1073,7 +1060,6 @@ export {
     expandAlphabetRange,
     extractDates,
     extractDomains,
-    extractEXIF,
     extractEmailAddresses,
     extractFilePaths,
     extractIPAddresses,
@@ -1132,7 +1118,6 @@ export {
     MD4,
     MD5,
     MD6,
-    magic,
     mean,
     median,
     microsoftScriptDecoder,

+ 155 - 0
test/tests/nodeApi/ops.mjs

@@ -8,6 +8,9 @@
  * Aim of these tests is to ensure each arg type is
  * handled correctly by the wrapper.
  *
+ * Generally just checking operations that use external dependencies to ensure
+ * it behaves as expected in Node.
+ *
  * @author d98762625 [d98762625@gmail.com]
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
@@ -553,6 +556,158 @@ Top Drawer`, {
         assert.strictEqual(chef.fromUNIXTimestamp("978346800").toString(), "Mon 1 January 2001 11:00:00 UTC");
     }),
 
+    it("Generate HOTP", () => {
+        const result = chef.generateHOTP("Cut The Mustard", {
+            name: "colonel",
+        });
+        const expected = `URI: otpauth://hotp/colonel?secret=IN2XIICUNBSSATLVON2GC4TE
+
+Password: 034148`;
+        assert.strictEqual(result.toString(), expected);
+    }),
+
+    it("Generate PGP Key Pair", () => {
+        const result = chef.generatePGPKeyPair("Back To the Drawing Board", {
+            keyType: "ECC-256",
+        });
+        const expected = `-----BEGIN PGP PRIVATE KEY BLOCK-----
+Version: Keybase OpenPGP v2.0.77
+Comment: https://keybase.io/crypto
+
+xYgEW3KciQEBAK96Lx9G0WZiw1yhC35IogdumoxEJXsLdAVIjmskXeAfABEBAAEA
+AP4wK+OZu3AqojwtRoyIK1pHKU93OAuam1iaLCOGCwCckQCA5PjU0aLNZqy/eKyX
+T3rpKQCAxDDT5hHGAUfFPUu73KWABwB/WKpeUp7KwurMSbYVhgr1TijszQDCVAQT
+AQoAHgUCW3KciQIbLwMLCQcDFQoIAh4BAheAAxYCAQIZAQAKCRD0VeyUMgmpz3OE
+AP9qsnhhoK85Tnu6VKwKm1iMiJAssDQnFztDaMmmVdrN/MeIBFtynIkBAQDDhjIw
+fxOprqVMYLk6aC45JyPAA2POzu0Zb/rx0tKeBwARAQABAAD/XAr66oiP9ZORHiT0
+XZH4m7vwZt7AHuq4pYtVlMQXk60AgPw2Mno/wStvE/SBa9R7AtsAgMZ2BkJjvNPZ
+9YA6cl4lW0UAgI1+kJVLZ5VR9fPENfJR80EtncKDBBgBCgAPBQJbcpyJBQkPCZwA
+AhsuAEgJEPRV7JQyCanPPSAEGQEKAAYFAltynIkACgkQrewgWMQZ/b2blwD/dbwh
+/3F9xv+YGAwq8i1mzzswg4qBct6LoSIjGglULT9RIQD/cYd31YfKrEnbSBWD5PLi
+zcSsxtBGKphwXiPAlQJ1Q5DHiARbcpyJAQEAs8V418lf1T74PpAwdBTiViEUX9jB
+e+ZrAEVaq5nu1C8AEQEAAQAA/iPWhS23hnRTllealR4/H5OofZRwxvIQrxAJp6z1
+ICRxAIDayRpCAbK5EC3DzRU2z4VpAIDSWYSs9inI1VTfamJPMWHXAIC3aaukzCP4
+GEGeFobX/thnKhnCgwQYAQoADwUCW3KciQUJA8JnAAIbLgBICRD0VeyUMgmpzz0g
+BBkBCgAGBQJbcpyJAAoJEB4jzL1hmQIXamUA/0c1M6BSqVtxNowPcOAXKYIxMca1
+VFcRWolHnZqdZQ7k/J8A/3HvNLRS3p1HvjQEfXl/qKoRRn843Py09ptDHh+xpGKh
+=d+Vp
+-----END PGP PRIVATE KEY BLOCK-----
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: Keybase OpenPGP v2.0.77
+Comment: https://keybase.io/crypto
+
+xi0EW3KciQEBAK96Lx9G0WZiw1yhC35IogdumoxEJXsLdAVIjmskXeAfABEBAAHN
+AMJUBBMBCgAeBQJbcpyJAhsvAwsJBwMVCggCHgECF4ADFgIBAhkBAAoJEPRV7JQy
+CanPc4QA/2qyeGGgrzlOe7pUrAqbWIyIkCywNCcXO0NoyaZV2s38zi0EW3KciQEB
+AMOGMjB/E6mupUxguTpoLjknI8ADY87O7Rlv+vHS0p4HABEBAAHCgwQYAQoADwUC
+W3KciQUJDwmcAAIbLgBICRD0VeyUMgmpzz0gBBkBCgAGBQJbcpyJAAoJEK3sIFjE
+Gf29m5cA/3W8If9xfcb/mBgMKvItZs87MIOKgXLei6EiIxoJVC0/USEA/3GHd9WH
+yqxJ20gVg+Ty4s3ErMbQRiqYcF4jwJUCdUOQzi0EW3KciQEBALPFeNfJX9U++D6Q
+MHQU4lYhFF/YwXvmawBFWquZ7tQvABEBAAHCgwQYAQoADwUCW3KciQUJA8JnAAIb
+LgBICRD0VeyUMgmpzz0gBBkBCgAGBQJbcpyJAAoJEB4jzL1hmQIXamUA/0c1M6BS
+qVtxNowPcOAXKYIxMca1VFcRWolHnZqdZQ7k/J8A/3HvNLRS3p1HvjQEfXl/qKoR
+Rn843Py09ptDHh+xpGKh
+=ySwG
+-----END PGP PUBLIC KEY BLOCK-----`;
+        assert.strictEqual(result.toString(), expected);
+    }),
+
+    it("Generate UUID", () => {
+        const result = chef.generateUUID();
+        assert.ok(result.toString());
+        assert.strictEqual(result.toString().length, 36);
+    }),
+
+    it("Gzip, Gunzip", () => {
+        assert.strictEqual(chef.gunzip(chef.gzip("Down To The Wire")).toString(), "Down To The Wire");
+    }),
+
+    it("Hex to Object Identifier", () => {
+        assert.strictEqual(
+            chef.hexToObjectIdentifier(chef.toHex("You Can't Teach an Old Dog New Tricks")).toString(),
+            "2.9.111.117.32.67.97.110.39.116.32.84.101.97.99.104.32.97.110.32.79.108.100.32.68.111.103.32.78.101.119.32.84.114.105.99.107.115");
+    }),
+
+    it("Hex to PEM", () => {
+        const result = chef.hexToPEM(chef.toHex("Yada Yada"));
+        const expected = `-----BEGIN CERTIFICATE-----\r
+WWFkYSBZYWRh\r
+-----END CERTIFICATE-----\r\n`;
+        assert.strictEqual(result.toString(), expected);
+    }),
+
+    it("HMAC", () => {
+        assert.strictEqual(chef.HMAC("On Cloud Nine", {key: "idea"}).toString(), "b128b48ec0d6b0f1a27220c396d0f3e5");
+    }),
+
+    it("Javascript beautify", () => {
+        const result = chef.javaScriptBeautify("const b = 2, g = 7;const fun = (a) => {return a*a};");
+        const expected = `const b = 2, g = 7;
+const fun = a => {
+    return a * a;'
+};`;
+        assert.strictEqual(result.toString(), expected);
+    }),
+
+    it("JavaScript Minify", () => {
+        const result = chef.javaScriptMinify(`const b = 2, g = 7;
+const fun = a => {
+    return a * a;
+};`);
+        const expected = "const b = 2, g = 7;const fun = (a) => {return a*a};";
+        assert.strictEqual(result.toString(), expected);
+    }),
+
+    it("JavaScript Parse", () => {
+        const result = chef.javaScriptParser("const b = 2;");
+        const expected = `{
+"type": "Program",
+"body": [
+    {
+    "type": "VariableDeclaration",
+    "declarations": [
+        {
+        "type": "VariableDeclarator",
+        "id": {
+            "type": "Identifier",
+            "name": "b"
+        },
+        "init": {
+            "type": "Literal",
+            "value": 2,
+            "raw": "2"
+        }
+        }
+    ],
+    "kind": "const"
+    }
+],
+"sourceType": "script"
+}`;
+        assert.strictEqual(result.toString(), expected);
+    }),
+
+    it("JPathExpression", () => {
+        assert.strictEqual(chef.JPathExpression("{\"key\" : \"value\"}", {query: "$.key"}).toString(), "\"value\"");
+    }),
+
+    it("JSON Beautify", () => {
+        assert.strictEqual(
+            chef.JSONBeautify("{\"key\" : \"value\"}").toString(),
+            `{
+\\t"key": "value"
+}`);
+    }),
+
+    it("Keccak", () => {
+        assert.strictEqual(chef.keccak("Flea Market").toString(), "c2a06880b19e453ee5440e8bd4c2024bedc15a6630096aa3f609acfd2b8f15f27cd293e1cc73933e81432269129ce954a6138889ce87831179d55dcff1cc7587");
+    }),
+
+    it("MD6", () => {
+        assert.strictEqual(chef.MD6("Head Over Heels", {key: "arty"}).toString(), "d8f7fe4931fbaa37316f76283d5f615f50ddd54afdc794b61da522556aee99ad");
+    }),
+
     it("toBase64: editableOption", () => {
         const result = toBase64("some input", {
             alphabet: {