]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / node_modules / asn1 / tst / ber / reader.test.js
1 // Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
2
3 var test = require('tap').test;
4
5
6
7 ///--- Globals
8
9 var BerReader;
10
11
12
13 ///--- Tests
14
15 test('load library', function(t) {
16   BerReader = require('../../lib/index').BerReader;
17   t.ok(BerReader);
18   try {
19     new BerReader();
20     t.fail('Should have thrown');
21   } catch (e) {
22     t.ok(e instanceof TypeError, 'Should have been a type error');
23   }
24   t.end();
25 });
26
27
28 test('read byte', function(t) {
29   var reader = new BerReader(new Buffer([0xde]));
30   t.ok(reader);
31   t.equal(reader.readByte(), 0xde, 'wrong value');
32   t.end();
33 });
34
35
36 test('read 1 byte int', function(t) {
37   var reader = new BerReader(new Buffer([0x02, 0x01, 0x03]));
38   t.ok(reader);
39   t.equal(reader.readInt(), 0x03, 'wrong value');
40   t.equal(reader.length, 0x01, 'wrong length');
41   t.end();
42 });
43
44
45 test('read 2 byte int', function(t) {
46   var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde]));
47   t.ok(reader);
48   t.equal(reader.readInt(), 0x7ede, 'wrong value');
49   t.equal(reader.length, 0x02, 'wrong length');
50   t.end();
51 });
52
53
54 test('read 3 byte int', function(t) {
55   var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03]));
56   t.ok(reader);
57   t.equal(reader.readInt(), 0x7ede03, 'wrong value');
58   t.equal(reader.length, 0x03, 'wrong length');
59   t.end();
60 });
61
62
63 test('read 4 byte int', function(t) {
64   var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01]));
65   t.ok(reader);
66   t.equal(reader.readInt(), 0x7ede0301, 'wrong value');
67   t.equal(reader.length, 0x04, 'wrong length');
68   t.end();
69 });
70
71
72 test('read 1 byte negative int', function(t) {
73   var reader = new BerReader(new Buffer([0x02, 0x01, 0xdc]));
74   t.ok(reader);
75   t.equal(reader.readInt(), -36, 'wrong value');
76   t.equal(reader.length, 0x01, 'wrong length');
77   t.end();
78 });
79
80
81 test('read 2 byte negative int', function(t) {
82   var reader = new BerReader(new Buffer([0x02, 0x02, 0xc0, 0x4e]));
83   t.ok(reader);
84   t.equal(reader.readInt(), -16306, 'wrong value');
85   t.equal(reader.length, 0x02, 'wrong length');
86   t.end();
87 });
88
89
90 test('read 3 byte negative int', function(t) {
91   var reader = new BerReader(new Buffer([0x02, 0x03, 0xff, 0x00, 0x19]));
92   t.ok(reader);
93   t.equal(reader.readInt(), -65511, 'wrong value');
94   t.equal(reader.length, 0x03, 'wrong length');
95   t.end();
96 });
97
98
99 test('read 4 byte negative int', function(t) {
100   var reader = new BerReader(new Buffer([0x02, 0x04, 0x91, 0x7c, 0x22, 0x1f]));
101   t.ok(reader);
102   t.equal(reader.readInt(), -1854135777, 'wrong value');
103   t.equal(reader.length, 0x04, 'wrong length');
104   t.end();
105 });
106
107
108 test('read boolean true', function(t) {
109   var reader = new BerReader(new Buffer([0x01, 0x01, 0xff]));
110   t.ok(reader);
111   t.equal(reader.readBoolean(), true, 'wrong value');
112   t.equal(reader.length, 0x01, 'wrong length');
113   t.end();
114 });
115
116
117 test('read boolean false', function(t) {
118   var reader = new BerReader(new Buffer([0x01, 0x01, 0x00]));
119   t.ok(reader);
120   t.equal(reader.readBoolean(), false, 'wrong value');
121   t.equal(reader.length, 0x01, 'wrong length');
122   t.end();
123 });
124
125
126 test('read enumeration', function(t) {
127   var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20]));
128   t.ok(reader);
129   t.equal(reader.readEnumeration(), 0x20, 'wrong value');
130   t.equal(reader.length, 0x01, 'wrong length');
131   t.end();
132 });
133
134
135 test('read string', function(t) {
136   var dn = 'cn=foo,ou=unit,o=test';
137   var buf = new Buffer(dn.length + 2);
138   buf[0] = 0x04;
139   buf[1] = Buffer.byteLength(dn);
140   buf.write(dn, 2);
141   var reader = new BerReader(buf);
142   t.ok(reader);
143   t.equal(reader.readString(), dn, 'wrong value');
144   t.equal(reader.length, dn.length, 'wrong length');
145   t.end();
146 });
147
148
149 test('read sequence', function(t) {
150   var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));
151   t.ok(reader);
152   t.equal(reader.readSequence(), 0x30, 'wrong value');
153   t.equal(reader.length, 0x03, 'wrong length');
154   t.equal(reader.readBoolean(), true, 'wrong value');
155   t.equal(reader.length, 0x01, 'wrong length');
156   t.end();
157 });
158
159
160 test('anonymous LDAPv3 bind', function(t) {
161   var BIND = new Buffer(14);
162   BIND[0] = 0x30;  // Sequence
163   BIND[1] = 12;    // len
164   BIND[2] = 0x02;  // ASN.1 Integer
165   BIND[3] = 1;     // len
166   BIND[4] = 0x04;  // msgid (make up 4)
167   BIND[5] = 0x60;  // Bind Request
168   BIND[6] = 7;     // len
169   BIND[7] = 0x02;  // ASN.1 Integer
170   BIND[8] = 1;     // len
171   BIND[9] = 0x03;  // v3
172   BIND[10] = 0x04; // String (bind dn)
173   BIND[11] = 0;    // len
174   BIND[12] = 0x80; // ContextSpecific (choice)
175   BIND[13] = 0;    // simple bind
176
177   // Start testing ^^
178   var ber = new BerReader(BIND);
179   t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence');
180   t.equal(ber.length, 12, 'Message length should be 12');
181   t.equal(ber.readInt(), 4, 'Message id should have been 4');
182   t.equal(ber.readSequence(), 96, 'Bind Request should have been 96');
183   t.equal(ber.length, 7, 'Bind length should have been 7');
184   t.equal(ber.readInt(), 3, 'LDAP version should have been 3');
185   t.equal(ber.readString(), '', 'Bind DN should have been empty');
186   t.equal(ber.length, 0, 'string length should have been 0');
187   t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)');
188   t.equal(ber.readByte(), 0, 'Should have been simple bind');
189   t.equal(null, ber.readByte(), 'Should be out of data');
190   t.end();
191 });
192
193
194 test('long string', function(t) {
195   var buf = new Buffer(256);
196   var o;
197   var s =
198     '2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' +
199     'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' +
200     'Teena Vradmin\'s description.';
201   buf[0] = 0x04;
202   buf[1] = 0x81;
203   buf[2] = 0x94;
204   buf.write(s, 3);
205   var ber = new BerReader(buf.slice(0, 3 + s.length));
206   t.equal(ber.readString(), s);
207   t.end();
208 });