import { describe, it, expect } from 'vitest' import { getDeviceHashIdentifier } from '../../../app/utils/device_utils.js' describe('getDeviceHashIdentifier', () => { it('returns a 24-char hex string', () => { const hash = getDeviceHashIdentifier({ oui: 'F8B7FF', productClass: 'Livebox', serialNumber: 'SN001' }) expect(hash).toHaveLength(24) expect(hash).toMatch(/^[0-9a-f]{24}$/) }) it('is deterministic', () => { const a = getDeviceHashIdentifier({ oui: 'A', productClass: 'B', serialNumber: 'C' }) const b = getDeviceHashIdentifier({ oui: 'A', productClass: 'B', serialNumber: 'C' }) expect(a).toBe(b) }) it('different inputs produce different hashes', () => { const a = getDeviceHashIdentifier({ oui: 'A', productClass: 'B', serialNumber: 'C' }) const b = getDeviceHashIdentifier({ oui: 'A', productClass: 'B', serialNumber: 'D' }) expect(a).not.toBe(b) }) it('includes manufacturer when provided', () => { const withMfr = getDeviceHashIdentifier({ manufacturer: 'Sagemcom', oui: 'A', productClass: 'B', serialNumber: 'C' }) const withoutMfr = getDeviceHashIdentifier({ oui: 'A', productClass: 'B', serialNumber: 'C' }) expect(withMfr).not.toBe(withoutMfr) }) })