Initial commit: webshare-api
Torznab + fake qBittorrent proxy for Webshare.cz, with Compose/Docker packaging, MIT license, and tests.
This commit is contained in:
35
__tests__/md5crypt.test.js
Normal file
35
__tests__/md5crypt.test.js
Normal file
@@ -0,0 +1,35 @@
|
||||
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}$/);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user