Skip to content

Commit

Permalink
Do not use CiaoAdvertiser for now, as it creates open handles
Browse files Browse the repository at this point in the history
  • Loading branch information
Supereg committed Nov 1, 2022
1 parent 16fec2f commit 0faafca
Showing 1 changed file with 26 additions and 8 deletions.
34 changes: 26 additions & 8 deletions src/lib/Accessory.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import crypto from "crypto";
import { Accessory, AccessoryEventTypes, Categories, MDNSAdvertiser, PublishInfo } from "./Accessory";
import { CiaoAdvertiser } from "./Advertiser";
import { BonjourHAPAdvertiser } from "./Advertiser";
import { Bridge } from "./Bridge";
import { Characteristic, CharacteristicEventTypes } from "./Characteristic";
import { Controller, ControllerIdentifier, ControllerServiceMap } from "./controller";
import { AccessoryInfo } from "./model/AccessoryInfo";
import { AccessoryInfo, PermissionTypes } from "./model/AccessoryInfo";
import { Service } from "./Service";
import { awaitEventOnce, PromiseTimeout } from "./util/promise-utils";
import * as uuid from "./util/uuid";
Expand Down Expand Up @@ -36,8 +37,8 @@ describe("Accessory", () => {
});

afterEach(async () => {
await accessory.unpublish();
await accessory.destroy();
await accessory?.unpublish();
await accessory?.destroy();
});

describe("constructor", () => {
Expand Down Expand Up @@ -137,11 +138,30 @@ describe("Accessory", () => {

describe("pairing", () => {
test("finish setup-pair", async () => {
const advertiser = new CiaoAdvertiser(accessoryInfoUnpaired);
// TODO fix: CiaoAdvertiser constructor creates open handles!
// const advertiser = new CiaoAdvertiser(accessoryInfoUnpaired);

const advertiser = new BonjourHAPAdvertiser(accessoryInfoUnpaired);
advertiser.updateAdvertisement = jest.fn();
accessory._advertiser = advertiser;

// TODO accessory.handleInitialPairSetupFinished()
accessoryInfoUnpaired.addPairedClient = jest.fn();
accessory._accessoryInfo = accessoryInfoUnpaired;

const publicKey = crypto.randomBytes(32);
// eslint-disable-next-line @typescript-eslint/no-empty-function
const callback = jest.fn();
// @ts-expect-error: private access
accessory.handleInitialPairSetupFinished(TEST_USERNAME, publicKey, callback);

expect(accessoryInfoUnpaired.addPairedClient).toBeCalledTimes(1);
expect(accessoryInfoUnpaired.addPairedClient).toBeCalledWith(TEST_USERNAME, publicKey, PermissionTypes.ADMIN);

expect(saveMock).toBeCalledTimes(1);

expect(advertiser.updateAdvertisement).toBeCalledTimes(1);

await advertiser.destroy();
});
});

Expand Down Expand Up @@ -325,8 +345,6 @@ describe("Accessory", () => {

describe("Controller", () => {
it("should deserialize controllers and remove/add/replace services correctly", () => {
const accessory = new Accessory("TestAccessory", uuid.generate("test-controller-accessory"));

accessory.configureController(new TestController());

const serialized = Accessory.serialize(accessory);
Expand Down

0 comments on commit 0faafca

Please sign in to comment.