mirror of
https://github.com/lux-tel/session-desktop.git
synced 2026-10-30 20:33:24 +00:00
154 lines
4.4 KiB
TypeScript
154 lines
4.4 KiB
TypeScript
import { expect } from 'chai';
|
|
import { ProWrapperNode } from 'libsession_util_nodejs';
|
|
import Sinon from 'sinon';
|
|
import { getSodiumNode } from '../../../../node/sodiumNode';
|
|
|
|
const masterPrivKey = '4d3ffd1e98982ee64b86990901a73d3627536b4103ce8d006cb836d45a525c51';
|
|
const rotatingPrivKey = '3e6933de326f5647769f7b3e6db2ca6469c768141be9384276a3692ea04cbee7';
|
|
|
|
describe('libsession_pro', () => {
|
|
afterEach(() => {
|
|
Sinon.restore();
|
|
});
|
|
|
|
describe('proFeaturesForMessage', () => {
|
|
it('no need for 10k limit', async () => {
|
|
expect(
|
|
ProWrapperNode.proFeaturesForMessage({
|
|
utf16: 'hello',
|
|
})
|
|
).to.deep.eq({
|
|
proMessageBitset: 0n,
|
|
status: 'SUCCESS',
|
|
error: null,
|
|
codepointCount: 5,
|
|
});
|
|
});
|
|
|
|
it('expects 10K_CHARACTER_LIMIT to be added if need for 10k limit', async () => {
|
|
expect(
|
|
ProWrapperNode.proFeaturesForMessage({
|
|
utf16: '012345678'.repeat(1000), // 1000 * 9 chars = 9000 codepoints
|
|
})
|
|
).to.deep.eq({
|
|
proMessageBitset: 1n,
|
|
status: 'SUCCESS',
|
|
error: null,
|
|
codepointCount: 9000,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('proRevocationsRequestBody', () => {
|
|
it('throws if invalid input', async () => {
|
|
expect(() =>
|
|
ProWrapperNode.proRevocationsRequestBody({
|
|
requestVersion: 0,
|
|
ticket: 'randomstr' as any as number,
|
|
})
|
|
).to.throw;
|
|
|
|
expect(() =>
|
|
ProWrapperNode.proRevocationsRequestBody({
|
|
requestVersion: 'randomstr' as any as number,
|
|
ticket: 0,
|
|
})
|
|
).to.throw;
|
|
});
|
|
|
|
it('passes if valid input', async () => {
|
|
expect(
|
|
ProWrapperNode.proRevocationsRequestBody({
|
|
ticket: 0,
|
|
requestVersion: 0,
|
|
})
|
|
).to.be.deep.eq('{"ticket":0,"version":0}');
|
|
|
|
expect(
|
|
ProWrapperNode.proRevocationsRequestBody({
|
|
ticket: 1234,
|
|
requestVersion: 255,
|
|
})
|
|
).to.be.deep.eq('{"ticket":1234,"version":255}');
|
|
|
|
expect(
|
|
ProWrapperNode.proRevocationsRequestBody({
|
|
ticket: 1265893200,
|
|
requestVersion: 123,
|
|
})
|
|
).to.be.deep.eq('{"ticket":1265893200,"version":123}');
|
|
});
|
|
});
|
|
|
|
describe('proProofRequestBody', () => {
|
|
it('generates a valid request body', async () => {
|
|
const validContent = {
|
|
version: 0,
|
|
master_pkey: '3ec4ff1928220d599cccbf8d76002e80191c286906bc18987f46fd9688418852',
|
|
rotating_pkey: '574b0063d782e6b56beac6c1b67766f0f81ecacf66ab7efefd2c9a65d6c8de88',
|
|
unix_ts_ms: 1761884113627,
|
|
master_sig:
|
|
'd1f0da92e22df8f285da4fe0fc92322ef0155c0c5ed2586532458a5758995b9b7bf98a3a0772af11e162e78ceba13ab936041fee4a59f04b3d28a77d17b0b603',
|
|
rotating_sig:
|
|
'cb1a3a4e5037c30bf662be6e3b33025b64612edd668d4494c7190e93629c2c0591c2dbbb2e6930732eadbbb9b7fcf98df3d085fddfb7fed58c75901b50c12506',
|
|
};
|
|
|
|
await getSodiumNode();
|
|
expect(
|
|
JSON.parse(
|
|
ProWrapperNode.proProofRequestBody({
|
|
requestVersion: 0,
|
|
masterPrivKeyHex: masterPrivKey,
|
|
rotatingPrivKeyHex: rotatingPrivKey,
|
|
unixTsMs: 1761884113627,
|
|
})
|
|
)
|
|
).to.deep.eq(validContent);
|
|
});
|
|
});
|
|
|
|
describe('proStatusRequestBody', () => {
|
|
it('generates a valid request body', async () => {
|
|
const validContent = {
|
|
version: 0,
|
|
count: 10,
|
|
master_pkey: '3ec4ff1928220d599cccbf8d76002e80191c286906bc18987f46fd9688418852',
|
|
unix_ts_ms: 1761884113627,
|
|
master_sig:
|
|
'f9065b20b5162b58e5580e855f979521ff02826b25b72b68a1c6c44c4eeb74e5e626e783de4ae715d7ef4438827f858221eb06aae2e7c4eea6ef3cd31e0e1c0f',
|
|
};
|
|
|
|
await getSodiumNode();
|
|
expect(
|
|
JSON.parse(
|
|
ProWrapperNode.proStatusRequestBody({
|
|
requestVersion: 0,
|
|
masterPrivKeyHex: masterPrivKey,
|
|
unixTsMs: 1761884113627,
|
|
count: 10,
|
|
})
|
|
)
|
|
).to.deep.eq(validContent);
|
|
});
|
|
});
|
|
|
|
describe('proRevocationsRequestBody', () => {
|
|
it('generates a valid request body', async () => {
|
|
const validContent = {
|
|
version: 0,
|
|
ticket: 0,
|
|
};
|
|
|
|
await getSodiumNode();
|
|
expect(
|
|
JSON.parse(
|
|
ProWrapperNode.proRevocationsRequestBody({
|
|
requestVersion: 0,
|
|
ticket: 0,
|
|
})
|
|
)
|
|
).to.deep.eq(validContent);
|
|
});
|
|
});
|
|
});
|