Time slots app prototype
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
3.3 KiB

import CipherBase from "./";
import test from "tape";
import { inherits as inherits$0 } from "util";
var inherits = { inherits: inherits$0 }.inherits;
test('basic version', function (t) {
function Cipher() {
CipherBase.call(this);
}
inherits(Cipher, CipherBase);
Cipher.prototype._update = function (input) {
t.ok(Buffer.isBuffer(input));
return input;
};
Cipher.prototype._final = function () {
// noop
};
var cipher = new Cipher();
var utf8 = 'abc123abcd';
var update = cipher.update(utf8, 'utf8', 'base64') + cipher.final('base64');
var string = (Buffer.from(update, 'base64')).toString();
t.equals(utf8, string);
t.end();
});
test('hash mode', function (t) {
function Cipher() {
CipherBase.call(this, 'finalName');
this._cache = [];
}
inherits(Cipher, CipherBase);
Cipher.prototype._update = function (input) {
t.ok(Buffer.isBuffer(input));
this._cache.push(input);
};
Cipher.prototype._final = function () {
return Buffer.concat(this._cache);
};
var cipher = new Cipher();
var utf8 = 'abc123abcd';
var update = cipher.update(utf8, 'utf8').finalName('base64');
var string = (Buffer.from(update, 'base64')).toString();
t.equals(utf8, string);
t.end();
});
test('hash mode as stream', function (t) {
function Cipher() {
CipherBase.call(this, 'finalName');
this._cache = [];
}
inherits(Cipher, CipherBase);
Cipher.prototype._update = function (input) {
t.ok(Buffer.isBuffer(input));
this._cache.push(input);
};
Cipher.prototype._final = function () {
return Buffer.concat(this._cache);
};
var cipher = new Cipher();
cipher.on('error', function (e) {
t.notOk(e);
});
var utf8 = 'abc123abcd';
cipher.end(utf8, 'utf8');
var update = cipher.read().toString('base64');
var string = (Buffer.from(update, 'base64')).toString();
t.equals(utf8, string);
t.end();
});
test('encodings', function (t) {
inherits(Cipher, CipherBase);
function Cipher() {
CipherBase.call(this);
}
Cipher.prototype._update = function (input) {
return input;
};
Cipher.prototype._final = function () {
// noop
};
t.test('mix and match encoding', function (t) {
t.plan(2);
var cipher = new Cipher();
cipher.update('foo', 'utf8', 'utf8');
t.throws(function () {
cipher.update('foo', 'utf8', 'base64');
});
cipher = new Cipher();
cipher.update('foo', 'utf8', 'base64');
t.doesNotThrow(function () {
cipher.update('foo', 'utf8');
cipher.final('base64');
});
});
t.test('handle long uft8 plaintexts', function (t) {
t.plan(1);
var txt = 'ふっかつ あきる すぶり はやい つける まゆげ たんさん みんぞく ねほりはほり せまい たいまつばな ひはん';
var cipher = new Cipher();
var decipher = new Cipher();
var enc = decipher.update(cipher.update(txt, 'utf8', 'base64'), 'base64', 'utf8');
enc += decipher.update(cipher.final('base64'), 'base64', 'utf8');
enc += decipher.final('utf8');
t.equals(txt, enc);
});
});