ethernet
Version:
Decodes Ethernet headers
91 lines • 2.62 kB
JavaScript
;
const ava_1 = require("ava");
const ethernet_1 = require("./ethernet");
const plainFrame = "\
0102030405060a0b0c0d0e0f08004500\
00541ecd0000400141e30a00010b4a7d\
c4710800139a2a34000057e4247f0007\
52c408090a0b0c0d0e0f101112131415\
161718191a1b1c1d1e1f202122232425\
262728292a2b2c2d2e2f303132333435\
3637";
const shortFrame = "01020304";
const badFrame = "0102030405060708091011121314150g17";
const tagFrame = "\
0102030405060a0b0c0d0e0f8100001008004500\
00541ecd0000400141e30a00010b4a7d\
c4710800139a2a34000057e4247f0007\
52c408090a0b0c0d0e0f101112131415\
161718191a1b1c1d1e1f202122232425\
262728292a2b2c2d2e2f303132333435\
3637";
const doubleTagFrame = "\
0102030405060a0b0c0d0e0f88a800108100002008004500\
00541ecd0000400141e30a00010b4a7d\
c4710800139a2a34000057e4247f0007\
52c408090a0b0c0d0e0f101112131415\
161718191a1b1c1d1e1f202122232425\
262728292a2b2c2d2e2f303132333435\
3637";
ava_1.default("decodes from string", t => {
let f = ethernet_1.default(plainFrame);
t.is(typeof f, "object");
t.is(f.destination, "010203040506");
t.is(f.source, "0a0b0c0d0e0f");
t.is(f.ethertype, 0x800);
});
ava_1.default("decodes from buffer", t => {
let f = ethernet_1.default(Buffer.from(plainFrame, "hex"));
t.is(typeof f, "object");
t.is(f.destination, "010203040506");
t.is(f.source, "0a0b0c0d0e0f");
t.is(f.ethertype, 0x800);
});
ava_1.default("decodes 802.1Q tag", t => {
let f = ethernet_1.default(tagFrame);
t.is(typeof f, "object");
t.is(f.destination, "010203040506");
t.is(f.source, "0a0b0c0d0e0f");
t.is(f.ethertype, 0x800);
t.deepEqual(f.tag, {
tpid: 0x8100,
tci: {
pcp: 0,
dei: 0,
vid: 16,
},
});
});
ava_1.default("decodes 802.1ad tag", t => {
let f = ethernet_1.default(doubleTagFrame);
t.is(typeof f, "object");
t.is(f.destination, "010203040506");
t.is(f.source, "0a0b0c0d0e0f");
t.is(f.ethertype, 0x800);
t.deepEqual(f.stag, {
tpid: 0x88a8,
tci: {
pcp: 0,
dei: 0,
vid: 16,
},
});
t.deepEqual(f.ctag, {
tpid: 0x8100,
tci: {
pcp: 0,
dei: 0,
vid: 32,
},
});
});
ava_1.default("throws on short string", t => {
t.throws(() => ethernet_1.default(shortFrame));
});
ava_1.default("throws on short buffer", t => {
t.throws(() => ethernet_1.default(Buffer.from(shortFrame, "hex")));
});
ava_1.default("throws on bad string", t => {
t.throws(() => ethernet_1.default(badFrame));
});
//# sourceMappingURL=test.js.map