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();
 | |
|   });
 | |
| 
 | |
| });
 |