UNPKG

3.54 kBJavaScriptView Raw
1var dns = require('../dns');
2//*
3exports.udp4 = function (test) {
4 var server = dns.createUDPServer();
5
6 var tData = {
7 address: '127.0.0.1',
8 port: 15353,
9 family: 'IPv4',
10 };
11
12 var succeed = false;
13
14 server.on('listening', function () {
15 test.deepEqual(this.address(), tData, 'Not listening on the same port and address');
16 // currently disabled because of https://github.com/joyent/node/issues/2867
17 process.nextTick(function () {
18 server.close();
19 });
20 succeed = true;
21 });
22
23 server.on('socketError', function (err, socket) {
24 test.ifError(err, 'Should not have a bind error');
25 this.close();
26 });
27
28 server.on('close', function () {
29 test.done();
30 });
31
32 server.serve(tData.port, tData.address);
33};
34//*/
35//*
36exports.udp6 = function (test) {
37 var server = dns.createUDPServer({
38 dgram_type: 'udp6',
39 });
40
41 var tData = {
42 address: '::1',
43 port: 15353,
44 family: 'IPv6',
45 };
46
47 var succeed = false;
48
49 server.on('listening', function () {
50 test.deepEqual(this.address(), tData, 'Not listening on the same port and address');
51
52 // currently disabled because of https://github.com/joyent/node/issues/2867
53 process.nextTick(function () {
54 server.close();
55 });
56 succeed = true;
57 });
58
59 server.on('socketError', function (err, socket) {
60 test.ifError(err, 'Should not have a bind error');
61 this.close();
62 });
63
64 server.on('close', function () {
65 test.done();
66 });
67
68 server.serve(tData.port, tData.address);
69};
70//*/
71//*
72exports.tcp = function (test) {
73 var server = dns.createTCPServer();
74
75 var tData = {
76 address: '127.0.0.1',
77 port: 15353,
78 };
79
80 server.on('listening', function () {
81 test.equal(this.address().port, tData.port, 'Not listening on the same port and address');
82 test.equal(this.address().address, tData.address, 'Not listening on the same port and address');
83 process.nextTick(function () {
84 server.close();
85 });
86 });
87
88 server.on('socketError', function (err, socket) {
89 test.ifError(err, 'Should not have a bind error');
90 this.close();
91 });
92
93 server.on('close', function () {
94 test.done();
95 });
96
97 server.serve(tData.port, tData.address);
98};
99//*/
100exports.udpResponse = function (test) {
101 var server = dns.createServer();
102
103 server.on('request', function (req, res) {
104 res.answer.push(dns.A({
105 name: req.question[0].name,
106 address: '127.0.0.1',
107 ttl: 600,
108 }));
109 res.send();
110 });
111
112 server.on('listening', function () {
113 var r = dns.Request({
114 question: dns.Question({
115 name: 'www.google.com',
116 }),
117 server: {
118 address: '127.0.0.1',
119 port: 15353,
120 },
121 });
122
123 r.on('message', function (err, answer) {
124 var record;
125 test.ok(!err, 'Response should not be an error');
126 test.ok(answer.answer.length === 1, 'Response should have 1 answer');
127 record = answer.answer[0]
128 test.strictEqual(record.address, '127.0.0.1', 'Address mismatch');
129 test.strictEqual(record.ttl, 600, 'TTL mismatch');
130 test.strictEqual(record.name, 'www.google.com', 'Name mismatch');
131 });
132
133 r.on('error', function (err) {
134 console.log(err);
135 test.ok(false, 'Should not error');
136 });
137
138 r.on('timeout', function () {
139 test.ok(false, 'Should not timeout');
140 });
141
142 r.on('end', function () {
143 server.close();
144 });
145
146 process.nextTick(function () {
147 r.send();
148 });
149 });
150
151 server.on('close', function () {
152 test.done();
153 });
154
155 server.serve(15353, '127.0.0.1');
156}