forked from signalapp/Signal-Desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstickers_test.js
153 lines (139 loc) · 5.29 KB
/
stickers_test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
/* global Signal */
const { Stickers } = Signal;
describe('Stickers', () => {
describe('getDataFromLink', () => {
it('returns undefined for invalid URLs', () => {
assert.isUndefined(Stickers.getDataFromLink('https://'));
assert.isUndefined(Stickers.getDataFromLink('signal.art/addstickers/'));
});
it("returns undefined for URLs that don't have a hash", () => {
assert.isUndefined(
Stickers.getDataFromLink('https://signal.art/addstickers/')
);
assert.isUndefined(
Stickers.getDataFromLink('https://signal.art/addstickers/#')
);
});
it('returns undefined when no key or pack ID is found', () => {
assert.isUndefined(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id=c8c83285b547872ac4c589d64a6edd6a'
)
);
assert.isUndefined(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id=c8c83285b547872ac4c589d64a6edd6a&pack_key='
)
);
assert.isUndefined(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_key=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e'
)
);
assert.isUndefined(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_key=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e&pack_id='
)
);
});
it('returns undefined when the pack ID is invalid', () => {
assert.isUndefined(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id=garbage&pack_key=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e'
)
);
});
it('returns undefined if the ID or key are passed as arrays', () => {
assert.isUndefined(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id[]=c8c83285b547872ac4c589d64a6edd6a&pack_key=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e'
)
);
assert.isUndefined(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id=c8c83285b547872ac4c589d64a6edd6a&pack_key[]=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e'
)
);
});
it('parses the ID and key from the hash', () => {
assert.deepEqual(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id=c8c83285b547872ac4c589d64a6edd6a&pack_key=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e'
),
{
id: 'c8c83285b547872ac4c589d64a6edd6a',
key:
'59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e',
}
);
});
it('ignores additional hash parameters', () => {
assert.deepEqual(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id=c8c83285b547872ac4c589d64a6edd6a&pack_key=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e&pack_foo=bar'
),
{
id: 'c8c83285b547872ac4c589d64a6edd6a',
key:
'59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e',
}
);
});
it('only parses the first ID and key from the hash if more than one is supplied', () => {
assert.deepEqual(
Stickers.getDataFromLink(
'https://signal.art/addstickers/#pack_id=c8c83285b547872ac4c589d64a6edd6a&pack_key=59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e&pack_id=extra&pack_key=extra'
),
{
id: 'c8c83285b547872ac4c589d64a6edd6a',
key:
'59bb3a8860f0e6a5a83a5337a015c8d55ecd2193f82d77202f3b8112a845636e',
}
);
});
});
describe('isPackIdValid', () => {
it('returns false for non-strings', () => {
assert.isFalse(Stickers.isPackIdValid(undefined));
assert.isFalse(Stickers.isPackIdValid(null));
assert.isFalse(Stickers.isPackIdValid(123));
assert.isFalse(Stickers.isPackIdValid(123));
assert.isFalse(
Stickers.isPackIdValid(['b9439fa5fdc8b9873fe64f01b88b8ccf'])
);
assert.isFalse(
// eslint-disable-next-line no-new-wrappers
Stickers.isPackIdValid(new String('b9439fa5fdc8b9873fe64f01b88b8ccf'))
);
});
it('returns false for invalid pack IDs', () => {
assert.isFalse(Stickers.isPackIdValid(''));
assert.isFalse(
Stickers.isPackIdValid('x9439fa5fdc8b9873fe64f01b88b8ccf')
);
assert.isFalse(
// This is one character too short.
Stickers.isPackIdValid('b9439fa5fdc8b9873fe64f01b88b8cc')
);
assert.isFalse(
// This is one character too long.
Stickers.isPackIdValid('b9439fa5fdc8b9873fe64f01b88b8ccfa')
);
});
it('returns true for valid pack IDs', () => {
assert.isTrue(Stickers.isPackIdValid('b9439fa5fdc8b9873fe64f01b88b8ccf'));
assert.isTrue(Stickers.isPackIdValid('3eff225a1036a58a7530b312dd92f8d8'));
assert.isTrue(Stickers.isPackIdValid('DDFD48B8097DA7A4E928192B10963F6A'));
});
});
describe('redactPackId', () => {
it('redacts pack IDs', () => {
assert.strictEqual(
Stickers.redactPackId('b9439fa5fdc8b9873fe64f01b88b8ccf'),
'[REDACTED]ccf'
);
});
});
});