read-hex-string.test.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. 'use strict'
  2. const tap = require('tap')
  3. const readHexString = require('./read-hex-string')
  4. tap.test('throws for invalid hex pair', async t => {
  5. let input = Buffer.from('1z2f')
  6. t.throws(
  7. () => readHexString({ searchBuffer: input, startPos: 0 }),
  8. 'invalid hex pair encountered: 0x1z'
  9. )
  10. input = Buffer.from('a0b1g692')
  11. t.throws(
  12. () => readHexString({ searchBuffer: input, startPos: 0 }),
  13. 'invalid hex pair encountered: 0xg6'
  14. )
  15. })
  16. tap.test('handles incorrect length string', async t => {
  17. const input = Buffer.from('a1b')
  18. t.throws(
  19. () => readHexString({ searchBuffer: input, startPos: 0 }),
  20. 'invalid hex pair encountered: 0xb'
  21. )
  22. })
  23. tap.test('reads hex string', async t => {
  24. let input = Buffer.from('0403666f6f')
  25. let result = readHexString({ searchBuffer: input, startPos: 0 })
  26. t.equal(result.endPos, 10)
  27. t.equal(result.berReader.readString(), 'foo')
  28. input = Buffer.from('uid=#0409746573742E75736572')
  29. result = readHexString({ searchBuffer: input, startPos: 5 })
  30. t.equal(result.endPos, input.byteLength)
  31. t.equal(result.berReader.readString(), 'test.user')
  32. })
  33. tap.test('stops on end chars', async t => {
  34. const inputs = [
  35. Buffer.from('0403666f6f foo'),
  36. Buffer.from('0403666f6f+foo'),
  37. Buffer.from('0403666f6f,foo'),
  38. Buffer.from('0403666f6f;foo')
  39. ]
  40. for (const input of inputs) {
  41. const result = readHexString({ searchBuffer: input, startPos: 0 })
  42. t.equal(result.endPos, 10)
  43. t.equal(result.berReader.readString(), 'foo')
  44. }
  45. })