Skip to content

Commit 97d2fad

Browse files
Add tests
1 parent 8d81c3e commit 97d2fad

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed

package.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "tc-string-parse",
3+
"description": "Simple parser for transparency and consent strings compatible with TCF2.0.",
4+
"version": "1.0.0",
5+
"repository": {
6+
"type": "git",
7+
"url": "https://github.com/audienceproject/tc-string-parse"
8+
},
9+
"license": "Apache-2.0",
10+
"main": "tc-string-parse.js",
11+
"scripts": {
12+
"test": "ava"
13+
},
14+
"dependencies": {
15+
"ava": "3.5.1",
16+
"eslint": "6.8.0"
17+
}
18+
}

tc-string-parse.test.js

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/* eslint-env es6, node */
2+
3+
"use strict";
4+
5+
const ava = require("ava");
6+
const parse = require(".");
7+
8+
ava("not string", (test) => {
9+
const error = test.throws(() => parse());
10+
test.is(error.message, "Invalid transparency and consent string specified");
11+
});
12+
13+
ava("invalid consent version", (test) => {
14+
const error = test.throws(() => parse("BOwxS1NOwxS1UAAAAAAADAAAAAAuiAAA"));
15+
test.is(error.message, "Unsupported transparency and consent version");
16+
});
17+
18+
ava.before((test) => {
19+
const emptyConsent = "COwxIfeOwxIfeALAWhDAAcCAAAAAAAAAAAAAAAAAAAAA.IF0EWSQgAYWwho0QUBzBAIYAfJgSCAMgSAAQIoCkFQICERBAEKiAQHAEQJAAAGBAAkACAAQAoHCBMCQABgAARiRCEQECIDRNABIBAggAKYQFAAARmikHC3ZCY702yOmQ.YAAAAAAAAAAAAAAAAAA";
20+
test.context.empty = parse(emptyConsent);
21+
22+
const givenConsent = "COwxNijOwxNijALAWhDAAcCIAIBAAAAAAAAADFQAQDFAAAAA.IF0EWSQgAYWwho0QUBzBAIYAfJgSCAMgSAAQIoCkFQICERBAEKiAQHAEQJAAAGBAAkACAAQAoHCBMCQABgAARiRCEQECIDRNABIBAggAKYQFAAARmikHC3ZCY702yOmQ.YAAAAAAAAAAAAAAAAAA";
23+
test.context.given = parse(givenConsent);
24+
});
25+
26+
ava("version", (test) => {
27+
test.is(test.context.given.core.version, 2);
28+
});
29+
30+
ava("created", (test) => {
31+
test.true(test.context.given.core.created instanceof Date);
32+
});
33+
34+
ava("last updated", (test) => {
35+
test.true(test.context.given.core.lastUpdated instanceof Date);
36+
});
37+
38+
ava("cmp id", (test) => {
39+
test.is(test.context.given.core.cmpId, 11);
40+
});
41+
42+
ava("cmp version", (test) => {
43+
test.is(test.context.given.core.cmpVersion, 22);
44+
});
45+
46+
ava("consent screen", (test) => {
47+
test.is(test.context.given.core.consentScreen, 33);
48+
});
49+
50+
ava("consent language", (test) => {
51+
test.is(test.context.given.core.consentLanguage, "DA");
52+
});
53+
54+
ava("vendor list version", (test) => {
55+
test.is(test.context.given.core.vendorListVersion, 28);
56+
});
57+
58+
ava("tcf policy version", (test) => {
59+
test.is(test.context.given.core.policyVersion, 2);
60+
});
61+
62+
ava("is service specified", (test) => {
63+
test.false(test.context.given.core.isServiceSpecified);
64+
});
65+
66+
ava("use non standard stacks", (test) => {
67+
test.false(test.context.given.core.useNonStandardStacks);
68+
});
69+
70+
ava("special feature opt ins", (test) => {
71+
test.deepEqual(test.context.empty.core.specialFeatureOptIns, {});
72+
test.deepEqual(test.context.given.core.specialFeatureOptIns, {
73+
1: true
74+
});
75+
});
76+
77+
ava("purpose consents", (test) => {
78+
test.deepEqual(test.context.empty.core.purposesConsents, {});
79+
test.deepEqual(test.context.given.core.purposesConsents, {
80+
1: true,
81+
10: true
82+
});
83+
});
84+
85+
ava("purpose legitimate interests", (test) => {
86+
test.deepEqual(test.context.empty.core.purposeLegitimateInterests, {});
87+
test.deepEqual(test.context.given.core.purposeLegitimateInterests, {});
88+
});

0 commit comments

Comments
 (0)