Files
webshare-api/__tests__/md5crypt.test.js
Michal Pemcak 3fcadfe973 Initial commit: webshare-api
Torznab + fake qBittorrent proxy for Webshare.cz, with Compose/Docker
packaging, MIT license, and tests.
2026-08-07 08:37:10 +02:00

36 lines
1.1 KiB
JavaScript

const { passwordDigest } = require('../src/md5crypt');
describe('passwordDigest', () => {
it('returns a 40-char hex string', () => {
expect(passwordDigest('password', 'salt')).toMatch(/^[0-9a-f]{40}$/);
});
it('is deterministic', () => {
expect(passwordDigest('mypass', 'mysalt')).toBe(passwordDigest('mypass', 'mysalt'));
});
it('differs for different passwords', () => {
expect(passwordDigest('pass1', 'salt')).not.toBe(passwordDigest('pass2', 'salt'));
});
it('differs for different salts', () => {
expect(passwordDigest('pass', 'salt1')).not.toBe(passwordDigest('pass', 'salt2'));
});
it('strips $1$ prefix from salt', () => {
expect(passwordDigest('pass', '$1$salt')).toBe(passwordDigest('pass', 'salt'));
});
it('truncates salt to 8 characters', () => {
expect(passwordDigest('pass', 'salt1234extra')).toBe(passwordDigest('pass', 'salt1234'));
});
it('handles empty password', () => {
expect(passwordDigest('', 'salt')).toMatch(/^[0-9a-f]{40}$/);
});
it('handles empty salt', () => {
expect(passwordDigest('pass', '')).toMatch(/^[0-9a-f]{40}$/);
});
});