import assert from "node:assert/strict" import {test} from "node:test" import {parseReleaseManifest,safeReleaseUrl,shouldShowReleaseNotes} from "./release-metadata" const empty={version:"1.0.0",tag:"v1.0.0",publishedAt:null,releaseUrl:"",commits:[]} const commit={sha:"a".repeat(40),shortSha:"a".repeat(7),subject:"fix(ui): исправить форму",author:"Fixture",type:"fix"} test("release metadata distinguishes confirmed empty and rejects malformed/inconsistent manifests",()=>{ assert.deepEqual(parseReleaseManifest(empty),empty) for(const row of [null,[],{}, {...empty,commits:null},{...empty,publishedAt:"invalid"},{...empty,publishedAt:"2026-01-01"},{...empty,tag:"v2.0.0"},{...empty,commits:[{...commit,subject:12}]},{...empty,commits:[commit,commit]},{...empty,commits:[{...commit,shortSha:"bbbbbbb"}]}])assert.equal(parseReleaseManifest(row),null) assert.equal(parseReleaseManifest({...empty,publishedAt:"2026-10-03T00:00:00Z",commits:[commit]})?.commits.length,1) }) test("release links allow only absolute HTTP(S) without credentials",()=>{ for(const link of ["javascript:alert(1)","data:text/html,fixture","//example.test/releases","/releases","https://user:secret@example.test/releases",null]){assert.equal(safeReleaseUrl(link),null);assert.equal(parseReleaseManifest({...empty,releaseUrl:link}),null)} assert.equal(safeReleaseUrl(" https://example.test/releases "),"https://example.test/releases") assert.equal(parseReleaseManifest({...empty,releaseUrl:"http://gitea.example.test/releases"})?.releaseUrl,"http://gitea.example.test/releases") }) test("release announcement belongs only to the current production build",()=>{ const manifest={...empty,commits:[commit]};assert.equal(shouldShowReleaseNotes(manifest,"1.0.0"),true);assert.equal(shouldShowReleaseNotes(manifest,"1.0.0-dev"),false);assert.equal(shouldShowReleaseNotes(manifest,"2.0.0"),false);assert.equal(shouldShowReleaseNotes(empty,"1.0.0"),false) })