@homebridge/ciao
Version:
ciao is a RFC 6763 compliant dns-sd library, advertising on multicast dns (RFC 6762) implemented in plain Typescript/JavaScript
55 lines • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runRecordEncodingTest = runRecordEncodingTest;
exports.runPacketEncodingTest = runPacketEncodingTest;
const DNSLabelCoder_1 = require("./DNSLabelCoder");
const DNSPacket_1 = require("./DNSPacket");
const Question_1 = require("./Question");
const ResourceRecord_1 = require("./ResourceRecord");
// Adjusted decodeContext to use the utility function for the address
const decodeContext = {
address: "0.0.0.0",
family: "ipv4",
port: 5353,
};
function runRecordEncodingTest(record, legacyUnicast = false) {
let coder = new DNSLabelCoder_1.DNSLabelCoder(legacyUnicast);
const length = record.getEncodingLength(coder);
const buffer = Buffer.alloc(length);
coder.initBuf(buffer);
const written = record.encode(coder, buffer, 0);
expect(written).toBe(buffer.length);
coder = new DNSLabelCoder_1.DNSLabelCoder(legacyUnicast);
coder.initBuf(buffer);
// test the decodeRecord method
const decodedRecord = record instanceof Question_1.Question
? Question_1.Question.decode(decodeContext, coder, buffer, 0)
: ResourceRecord_1.ResourceRecord.decode(decodeContext, coder, buffer, 0);
expect(decodedRecord.readBytes).toBe(buffer.length);
const record2 = decodedRecord.data;
expect(record2).toBeDefined();
coder = new DNSLabelCoder_1.DNSLabelCoder(legacyUnicast);
const length2 = record2.getEncodingLength(coder);
const buffer2 = Buffer.allocUnsafe(length2);
coder.initBuf(buffer2);
const written2 = record2.encode(coder, buffer2, 0);
expect(written2).toBe(buffer2.length);
expect(buffer2).toEqual(buffer);
expect(record2).toEqual(record);
if (record2 instanceof ResourceRecord_1.ResourceRecord && record instanceof ResourceRecord_1.ResourceRecord) {
// test the equals method
expect(record2.aboutEqual(record)).toBe(true);
// test the clone method
const clone = record.clone();
expect(clone.aboutEqual(record2)).toBe(true);
expect(clone).toEqual(record2);
}
}
function runPacketEncodingTest(packet) {
const buffer = packet.encode();
const decodedPacket = DNSPacket_1.DNSPacket.decode(decodeContext, buffer);
const buffer2 = decodedPacket.encode();
expect(buffer).toEqual(buffer2);
expect(decodedPacket).toEqual(packet);
}
//# sourceMappingURL=test-utils.js.map