85 lines
2.1 KiB
TypeScript
85 lines
2.1 KiB
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { assert } from 'chai';
|
|
|
|
import { toWebSafeBase64, fromWebSafeBase64 } from '../../util/webSafeBase64';
|
|
|
|
describe('both/util/webSafeBase64', () => {
|
|
it('roundtrips with all elements', () => {
|
|
const base64 = 'X0KjoAj3h7Tu9YjJ++PamFc4kAg//D4FKommANpP41I=';
|
|
|
|
const webSafe = toWebSafeBase64(base64);
|
|
const actual = fromWebSafeBase64(webSafe);
|
|
|
|
assert.strictEqual(base64, actual);
|
|
});
|
|
|
|
describe('#toWebSafeBase64', () => {
|
|
it('replaces +', () => {
|
|
const base64 = 'X++y';
|
|
const expected = 'X--y';
|
|
const actual = toWebSafeBase64(base64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
|
|
it('replaces /', () => {
|
|
const base64 = 'X//y';
|
|
const expected = 'X__y';
|
|
const actual = toWebSafeBase64(base64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
|
|
it('removes =', () => {
|
|
const base64 = 'X===';
|
|
const expected = 'X';
|
|
const actual = toWebSafeBase64(base64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
});
|
|
|
|
describe('#fromWebSafeBase64', () => {
|
|
it('replaces -', () => {
|
|
const webSafeBase64 = 'X--y';
|
|
const expected = 'X++y';
|
|
const actual = fromWebSafeBase64(webSafeBase64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
|
|
it('replaces _', () => {
|
|
const webSafeBase64 = 'X__y';
|
|
const expected = 'X//y';
|
|
const actual = fromWebSafeBase64(webSafeBase64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
|
|
it('adds ===', () => {
|
|
const webSafeBase64 = 'X';
|
|
const expected = 'X===';
|
|
const actual = fromWebSafeBase64(webSafeBase64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
|
|
it('adds ==', () => {
|
|
const webSafeBase64 = 'Xy';
|
|
const expected = 'Xy==';
|
|
const actual = fromWebSafeBase64(webSafeBase64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
|
|
it('adds =', () => {
|
|
const webSafeBase64 = 'XyZ';
|
|
const expected = 'XyZ=';
|
|
const actual = fromWebSafeBase64(webSafeBase64);
|
|
|
|
assert.strictEqual(expected, actual);
|
|
});
|
|
});
|
|
});
|