48 lines
2.6 KiB
TypeScript
48 lines
2.6 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import { test } from "node:test"
|
|
import { renderToStaticMarkup } from "react-dom/server"
|
|
import type { CertificateObserved } from "@mmapp/contracts/certificates"
|
|
import { CertificateExpandedDetail } from "./certificate-expanded-detail"
|
|
import { CertDaysCell } from "./certificate-days-cell"
|
|
|
|
const cert: CertificateObserved = {
|
|
id: "1:*A", rosId: "*A", name: "unknown-cert", serverId: "1", commonName: "test.example",
|
|
sans: [], issuedBy: "—", validFrom: null, validUntil: null, rawValidFrom: null,
|
|
rawValidUntil: null, daysLeft: null, keySize: null, trusted: null, status: "unknown", usage: [],
|
|
}
|
|
|
|
test("unknown observed fields are explicit and do not become zero or untrusted", () => {
|
|
const details = renderToStaticMarkup(<CertificateExpandedDetail cert={cert} />)
|
|
const days = renderToStaticMarkup(<CertDaysCell cert={cert} />)
|
|
assert.match(details, /Неизвестен/)
|
|
assert.match(details, /Дата неизвестна/)
|
|
assert.match(details, /Неизвестно/)
|
|
assert.ok(!details.includes("0 бит"))
|
|
assert.ok(!details.includes("Нет (не доверенный)"))
|
|
assert.match(days, /Срок неизвестен/)
|
|
assert.match(days, /Дата окончания неизвестна/)
|
|
assert.doesNotMatch(days, /0д осталось/)
|
|
})
|
|
|
|
test("known false trust and zero remaining days are preserved", () => {
|
|
const known = { ...cert, trusted: false, keySize: 2048, daysLeft: 0, validUntil: "2026-10-01T00:00:00Z" }
|
|
const details = renderToStaticMarkup(<CertificateExpandedDetail cert={known} />)
|
|
assert.ok(details.includes("Нет (не доверенный)"))
|
|
assert.match(details, /2048 бит/)
|
|
const days = renderToStaticMarkup(<CertDaysCell cert={known} />)
|
|
assert.match(days, /0д осталось/)
|
|
assert.match(days, /2026-10-01T00:00:00Z/)
|
|
})
|
|
|
|
test("expired and positive observed days stay distinct", () => {
|
|
assert.match(renderToStaticMarkup(<CertDaysCell cert={{ ...cert, daysLeft: -3 }} />), /Истёк 3д назад/)
|
|
assert.match(renderToStaticMarkup(<CertDaysCell cert={{ ...cert, daysLeft: 40 }} />), /40д осталось/)
|
|
})
|
|
|
|
test("unparsed RouterOS dates remain explicit raw values without claiming valid dates", () => {
|
|
const details = renderToStaticMarkup(<CertificateExpandedDetail cert={{ ...cert, rawValidFrom: "oct/01/2026 12:00:00", rawValidUntil: "oct/01/2027 12:00:00" }} />)
|
|
assert.match(details, /Начало срока не удалось определить/)
|
|
assert.match(details, /Окончание срока не удалось определить/)
|
|
assert.ok(details.includes("oct/01/2026 12:00:00"))
|
|
})
|