|
|
|
| 1 | import test from 'node:test' ; | | 2 | import assert from 'node:assert/strict' ; | | 3 | import * as api from '../src/index.js' ; | | 4 | | | 5 | import {validate} from './helpers.js' ; | | 6 | test('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 | }); | | 17 | test('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| owner | ba1b5beed5b5 |
|---|
| visibility | public |
|---|
| head | c808a940bc19 |
|---|
Clonehttps://012.run/npub1hgd4hmk4kkukjx7yf402adl7msw0ssnmqmt0y6sgz0j8yjjcj9nqh9znde/seedmark.git
|