Bump path-parse from 1.0.6 to 1.0.7
[KisSync.git] / test / camo.js
blob48bf1d02b22a17449f14ba737a5c3891b2f632b3
1 const assert = require('assert');
2 const Camo = require('../lib/camo');
3 const CamoConfig = require('../lib/configuration/camoconfig').CamoConfig;
5 describe('Camo', () => {
6 const config = new CamoConfig({
7 camo: {
8 server: 'http://localhost:8081',
9 key: '9LKC7708ZHOVRCTLOLE3G2YJ0U1T8F96',
10 'whitelisted-domains': ['def.xyz', 'tii.kzz.qqq'],
11 encoding: 'hex'
13 });
15 describe('#camoify', () => {
16 it('constructs a camo url', () => {
17 const result = Camo.camoify(config, 'http://abc.xyz/image.jpeg');
18 assert.strictEqual(result, 'http://localhost:8081/a9c295dd7d8dcbc8247dec97ac5d9b4ee8baeb31/687474703a2f2f6162632e78797a2f696d6167652e6a706567');
19 });
21 it('constructs a camo url using url encoding', () => {
22 const config = new CamoConfig({
23 camo: {
24 server: 'http://localhost:8081',
25 key: '9LKC7708ZHOVRCTLOLE3G2YJ0U1T8F96',
26 'whitelisted-domains': ['def.xyz'],
27 encoding: 'url'
29 });
31 const result = Camo.camoify(config, 'http://abc.xyz/image.jpeg');
32 assert.strictEqual(result, 'http://localhost:8081/a9c295dd7d8dcbc8247dec97ac5d9b4ee8baeb31?url=http%3A%2F%2Fabc.xyz%2Fimage.jpeg');
33 });
35 it('bypasses camo for whitelisted domains', () => {
36 const result = Camo.camoify(config, 'http://def.xyz/image.jpeg');
37 assert.strictEqual(result, 'https://def.xyz/image.jpeg');
38 });
40 it('bypasses camo for whitelisted domains subdomains', () => {
41 const result = Camo.camoify(config, 'http://abc.def.xyz/image.jpeg');
42 assert.strictEqual(result, 'https://abc.def.xyz/image.jpeg');
43 });
45 it('does not bypass camo for a non-subdomain match', () => {
46 const result = Camo.camoify(config, 'http://abcdef.xyz/image.jpeg');
47 assert.strictEqual(result, 'http://localhost:8081/19f53f65e8081a064cff54fbd665e8bb08612aa6/687474703a2f2f6162636465662e78797a2f696d6167652e6a706567');
48 });
50 it('does not bypass camo when no whitelist is configured', () => {
51 const config = new CamoConfig({
52 camo: {
53 server: 'http://localhost:8081',
54 key: '9LKC7708ZHOVRCTLOLE3G2YJ0U1T8F96',
55 encoding: 'hex'
57 });
58 const result = Camo.camoify(config, 'http://abcdef.xyz/image.jpeg');
59 assert.strictEqual(result, 'http://localhost:8081/19f53f65e8081a064cff54fbd665e8bb08612aa6/687474703a2f2f6162636465662e78797a2f696d6167652e6a706567');
60 });
61 });
63 describe('#transformImgTags', () => {
64 it('transforms an img tag with a src', () => {
65 const attribs = {
66 src: 'http://abc.xyz/image.jpeg',
67 'class': 'some-image'
69 const expectedAttribs = {
70 src: 'http://localhost:8081/a9c295dd7d8dcbc8247dec97ac5d9b4ee8baeb31/687474703a2f2f6162632e78797a2f696d6167652e6a706567',
71 'class': 'some-image'
73 const result = Camo.transformImgTags(config, 'img', attribs);
74 assert.deepStrictEqual(result, { tagName: 'img', attribs: expectedAttribs });
75 });
77 it('skips img tags with no src', () => {
78 const attribs = { 'class': 'some-image' };
79 const result = Camo.transformImgTags(config, 'img', attribs);
80 assert.deepStrictEqual(result, { tagName: 'img', attribs: attribs });
81 });
83 it('fails gracefully', () => {
84 const attribs = { src: 'http://abc.xyz/image.jpeg' };
85 const config = new CamoConfig({ camo: { enabled: true }});
86 config.getKey = () => { throw new Error('something happened'); };
87 const result = Camo.transformImgTags(config, 'img', attribs);
88 assert.deepStrictEqual(result, { tagName: 'img', attribs: attribs });
89 });
90 });
91 });