UNPKG

amazon-route-53-dns-zone-file

Version:

Makes DNS Zone File easy. Parses and validates BIND zone files and can be extended for custom features. Functionality is modular. Features are made open for extension and closed for runtime mutation. Written in TypeScript.

136 lines (104 loc) 3.56 kB
import { parseTtl } from '../../src/ttl/parse_ttl'; describe('parseTtl (util)', () => { describe('Base', () => { it('Should work for number', () => { const [out] = parseTtl('1'); const [one] = parseTtl(1); expect(out).toEqual(one); expect(one).toEqual(1); }); it('Should work for seconds', () => { const [seconds1] = parseTtl('1s'); expect(seconds1).toBeGreaterThan(0); }); it('Should work for seconds - double digit', () => { const [seconds1] = parseTtl('10s'); expect(seconds1).toBeGreaterThan(9); }); it('Should work for days', () => { const [day1] = parseTtl('1d'); expect(day1).toBeGreaterThan(0); }); it('Should work for days - double digit', () => { const [day1] = parseTtl('10d'); expect(day1).toBeGreaterThan(10); }); it('Should work for hours', () => { const [hour1] = parseTtl('1h'); expect(hour1).toBeGreaterThan(0); }); it('Should work for weeks', () => { const [week1] = parseTtl('1w'); expect(week1).toBeGreaterThan(0); }); it('Should work for months', () => { const [month1] = parseTtl('1m'); expect(month1).toBeGreaterThan(0); }); it('Should work for years', () => { const [year1] = parseTtl('1y'); expect(year1).toBeGreaterThan(0); }); }); describe('Combinations', () => { it('Should work for combination', () => { const [result, error] = parseTtl('1m1w1d'); expect(result).toEqual(3110400); expect(error).toBeFalsy(); }); // could make it not work... it('Should work for doubles', () => { const [result, error] = parseTtl('1m1m'); expect(result).toEqual(parseTtl('1m')[0] + parseTtl('1m')[0]); expect(error).toBeFalsy(); }); it('Should calculate the same all the way up', () => { const [seconds3600] = parseTtl('3600s'); const [hour1] = parseTtl('1h'); expect(seconds3600).toEqual(hour1); const [day1] = parseTtl('1d'); const [hour24] = parseTtl('24h'); expect(day1).toEqual(hour24); const [day7] = parseTtl('7d'); const [week1] = parseTtl('1w'); expect(day7).toEqual(week1); const [week4] = parseTtl('4w'); const [month1] = parseTtl('1m'); expect(week4).toEqual(month1); const [month12] = parseTtl('12m'); const [year1] = parseTtl('1y'); expect(month12).toEqual(year1); const [combination] = parseTtl('1m1w1d24h3600s'); expect(combination).toEqual( month1! + week1! + day1! + hour24! + seconds3600! ); }); }); describe('Errors', () => { it('Should return error when value is too big', () => { const [, error] = parseTtl('420y'); expect(error).toBeTruthy(); }); it('Should work for fallback', () => { const [result = 42] = parseTtl(null as any); expect(result).toEqual(42); }); it('Should not work for spaces', () => { const [value, error] = parseTtl('100 s'); expect(value).toBeFalsy(); expect(error).toBeTruthy(); }); it('Should not work for invalid - unless we use default', () => { const [value = -42] = parseTtl('100 s'); expect(value).toEqual(-42); }); it('Should not work for invalid letters', () => { const [, error] = parseTtl('100z'); expect(error).toBeTruthy(); }); it('Should not work for double letters', () => { const [, error] = parseTtl('100yy'); expect(error).toBeTruthy(); }); }); });