113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			113 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var Code = require('code');   // assertion library
 | ||
|  | var Lab = require('lab'); | ||
|  | var lab = exports.lab = Lab.script(); | ||
|  | 
 | ||
|  | var describe = lab.describe; | ||
|  | var it = lab.it; | ||
|  | //var before = lab.before;
 | ||
|  | //var after = lab.after;
 | ||
|  | var expect = Code.expect; | ||
|  | 
 | ||
|  | var DNSRecord = require('../lib/dnsrecord'); | ||
|  | var BufferWriter = require('../lib/bufferwriter'); | ||
|  | //var helper = require('./helper');
 | ||
|  | 
 | ||
|  | 
 | ||
|  | describe('DNSRecord (Create)', function () { | ||
|  | 
 | ||
|  |   it('create query', function (done) { | ||
|  |     var bw = new BufferWriter(); | ||
|  |     var r = new DNSRecord('_services._dns-sd._udp.local', | ||
|  |       DNSRecord.Type.PTR, 1); | ||
|  |     expect(r).to.include(['name', 'type', 'class', 'ttl']); | ||
|  |     expect(r.ttl).to.equal(DNSRecord.TTL); | ||
|  |     var b = DNSRecord.write(bw, r).dump(); | ||
|  |     expect(b.toString('hex')).to.equal( | ||
|  |       '095f7365727669636573075f646e732d7364045f756470056c6f63616c00000c0001'); | ||
|  | 
 | ||
|  |     //roundtrip
 | ||
|  |     var pr = DNSRecord.parseQuestion(b); | ||
|  |     expect(pr).to.deep.include(r); | ||
|  | 
 | ||
|  |     done(); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('SRV', function (done) { | ||
|  |     var bw = new BufferWriter(); | ||
|  |     var alias = 'regin [30:46:9a:b2:b8:b2]._workstation._tcp.local'; | ||
|  | 
 | ||
|  |     var r = { | ||
|  |       name: alias, | ||
|  |       type: DNSRecord.Type.SRV, | ||
|  |       class: DNSRecord.Class.IN, | ||
|  |       ttl: 10, | ||
|  |       priority: 1, | ||
|  |       weight: 2, | ||
|  |       port: 9, | ||
|  |       target: 'regin.local' | ||
|  |     }; | ||
|  | 
 | ||
|  |     var b = DNSRecord.write(bw, r, true).dump(); | ||
|  |     var recStr = b.toString('hex'); | ||
|  | 
 | ||
|  |     expect(recStr, 'type, class, ttl').to.include('002100010000000a'); | ||
|  |     expect(recStr, 'srv data').to.include('00010002000905726567696e'); | ||
|  |                              //002100010000000a0013000000010002000905726567696e056c6f63616c00
 | ||
|  |     //roundtrip
 | ||
|  |     var pr = DNSRecord.parse(b); | ||
|  |     expect(pr).to.include(['port', 'target', 'weight', 'priority']); | ||
|  | 
 | ||
|  |     //expect(pr.priority, 'priority').to.equal(priority);
 | ||
|  |     expect(pr.port, 'port').to.equal(r.port); | ||
|  |     expect(pr.weight, 'weight').to.equal(r.weight); | ||
|  |     expect(pr.target, 'target').to.equal(r.target); | ||
|  |     //expect(pr).to.deep.equal(r);
 | ||
|  | 
 | ||
|  |     done(); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('PTR', function (done) { | ||
|  |     var writer = new BufferWriter(); | ||
|  |     var r = new DNSRecord( | ||
|  |       '_services._dns-sd._udp.local', | ||
|  |       DNSRecord.Type.PTR, | ||
|  |       1, | ||
|  |       10); | ||
|  |     r.data = '_workstation._tcp.local'; | ||
|  |     DNSRecord.write(writer, r, true); | ||
|  |     done(); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('reverse lookup', function (done) { | ||
|  | 
 | ||
|  |     var rec = '013801380138013807696e2d61646472046172706100000c0001'; | ||
|  |     var r = new DNSRecord( | ||
|  |       '8.8.8.8.in-addr.arpa', | ||
|  |       DNSRecord.Type.PTR, | ||
|  |       DNSRecord.Class.IN); | ||
|  |     var bw = new BufferWriter(); | ||
|  |     var b = DNSRecord.write(bw, r, true).dump(); | ||
|  |     var recStr = b.toString('hex'); | ||
|  |     expect(recStr).to.equal(rec); | ||
|  |     done(); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('reverse lookup 2', function (done) { | ||
|  |     var expected = '02353103313637033231310331343007696e2d61646472046172706100000c0001'; | ||
|  |     //             '02353103313637033231310331343007696e2d616464720461727061 00000c0001'
 | ||
|  |     //                 5 1   1 6 7   2 1 1   1 3 0   i n - a d d r   a r p a
 | ||
|  |     var r = new DNSRecord( | ||
|  |       '51.167.211.140.in-addr.arpa.', | ||
|  |       DNSRecord.Type.PTR, | ||
|  |       DNSRecord.Class.IN); | ||
|  | 
 | ||
|  |     var bw = new BufferWriter(); | ||
|  |     var buf = DNSRecord.write(bw, r, true).dump(); | ||
|  |     expect(buf.toString('hex')).to.equal(expected); | ||
|  |     var r2 = DNSRecord.parseQuestion(buf); | ||
|  |     expect(r2.type).to.equal(DNSRecord.Type.PTR); | ||
|  |     done(); | ||
|  |   }); | ||
|  | 
 | ||
|  | }); |