@ -8,10 +8,14 @@ import { normalizeWords, WORD_KEY_ROUNDS, wordKey } from './wordkey.ts';
const CHAIN = '52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971' ;
describe ( 'normalizeWords' , ( ) = > {
it ( 'ignores case, accents and extra spaces' , ( ) = > {
const accented = ` ${ String . fromCharCode ( 0xc1 ) } baco ${ String . fromCharCode ( 0xc1 ) } RBOL \ tni ${ String . fromCharCode ( 0xf1 ) } o ` ;
expect ( normalizeWords ( accented ) ) . toEqual ( [ 'abaco' , 'arbol' , 'nino' ] ) ;
it ( 'ignores case, accents and extra spaces, as Go wordkey.Normalize does' , ( ) = > {
const nbsp = String . fromCharCode ( 0xa0 ) ;
const tab = String . fromCharCode ( 9 ) ;
// The case of TestNormalize of datekeys-go: Σ in lower case on its own,
// not as a final sigma, and İ without its dot.
expect ( normalizeWords ( ` Ábaco ${ nbsp } ÁRBOL ${ tab } niño ΣΑΣ İ ` ) ) . toEqual ( [ 'abaco' , 'arbol' , 'nino' , 'σ α σ ' , 'i' ] ) ;
expect ( normalizeWords ( ' ' ) ) . toEqual ( [ ] ) ;
expect ( normalizeWords ( ` a ${ String . fromCharCode ( 0xfeff ) } b ` ) ) . toEqual ( [ ` a ${ String . fromCharCode ( 0xfeff ) } b ` ] ) ;
} ) ;
} ) ;
@ -21,6 +25,8 @@ describe('wordKey', () => {
const key = await wordKey ( words , CHAIN , 1000 ) ;
const want = pbkdf2Sync ( 'perro luna casa verde tren mar' , ` DateKeys llave de palabras v1| ${ CHAIN } |1000 ` , WORD_KEY_ROUNDS , 32 , 'sha256' ) ;
expect ( Buffer . from ( key ) . toString ( 'hex' ) ) . toBe ( want . toString ( 'hex' ) ) ;
// The vector of TestKeyMatchesTypeScript of datekeys-go.
expect ( Buffer . from ( key ) . toString ( 'hex' ) ) . toBe ( 'be74aecd9ea734bfece963597a2269188a4ea8a1247bc381dffbd6a38a2c6376' ) ;
expect ( Buffer . from ( await wordKey ( words , CHAIN , 1001 ) ) . equals ( Buffer . from ( key ) ) ) . toBe ( false ) ;
} ) ;
} ) ;