UNPKG

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