seedmarkfile
seedmark/tests/avatar.test.js/

tests/avatar.test.js raw
1import test from 'node:test';
2import assert from 'node:assert/strict';
3import * as api from '../src/index.js';
4
5import {validate} from './helpers.js';
6test('avatar safely renders standalone size-independent SVG without reflecting opaque seeds', () => {
7 assert.equal(typeof api.avatar, 'function');
8 for (const seed of ['', '你好😀', '<script>alert(1)</script>', '\"><svg onload="alert(1)">', 'UNIQUE_UNTRUSTED_SEED']) {
9 const svg = api.avatar(seed);
10 validate(svg);
11 assert.equal(svg, api.avatar(seed));
12 if (seed) assert(!svg.includes(seed));
13 assert.match(svg, /width="64" height="64"/);
14 assert.equal(api.avatar(seed, {size: 24}).replace('width="24" height="24"', 'width="64" height="64"'), svg);
15 }
16});
17test('avatar validates sizes and visual versions', () => {
18 for (const size of [0, -1, NaN, Infinity, '64', null, {}, 1.5, 4097]) assert.throws(() => api.avatar('s', {size}), RangeError);
19 for (const size of [1, 24, 48, 64, 4096]) validate(api.avatar('s', {size}));
20 for (const version of [0, 2, '1', null]) assert.throws(() => api.avatar('s', {version}), RangeError);
21 for (const seed of [null, 23, undefined, {}]) assert.throws(() => api.avatar(seed), TypeError);
22});

About

ownerba1b5beed5b5
visibilitypublic
headc808a940bc19

Maintainers

  • ba1b5beed5b5 owner

Clone

  • https://012.run/npub1hgd4hmk4kkukjx7yf402adl7msw0ssnmqmt0y6sgz0j8yjjcj9nqh9znde/seedmark.git

Refs