From 7d91b74abb3611be561e7f9738224beb1618f975 Mon Sep 17 00:00:00 2001 From: kyzooghost <73516204+kyzooghost@users.noreply.github.com> Date: Wed, 8 Jan 2025 21:43:47 +1100 Subject: [PATCH] Feat/hostname (#1) * added withHostname * added getHostname --- .../src/generic-container/generic-container.test.ts | 10 ++++++++++ .../src/generic-container/generic-container.ts | 5 +++++ .../src/generic-container/started-generic-container.ts | 4 ++++ packages/testcontainers/src/test-container.ts | 2 ++ 4 files changed, 21 insertions(+) diff --git a/packages/testcontainers/src/generic-container/generic-container.test.ts b/packages/testcontainers/src/generic-container/generic-container.test.ts index 9eff27f5..29f7b798 100644 --- a/packages/testcontainers/src/generic-container/generic-container.test.ts +++ b/packages/testcontainers/src/generic-container/generic-container.test.ts @@ -534,6 +534,16 @@ describe("GenericContainer", () => { await secondStartedContainer.stop(); }); + it("should set the hostname", async () => { + const container = await new GenericContainer("cristianrgreco/testcontainer:1.1.14") + .withHostname("hostname") + .start(); + + expect(container.getHostname()).toEqual("hostname"); + + await container.stop(); + }); + // failing to build an image hangs within the DockerImageClient.build method, // that change might be larger so leave it out of this commit but skip the failing test it.skip("should throw an error for a target stage that does not exist", async () => { diff --git a/packages/testcontainers/src/generic-container/generic-container.ts b/packages/testcontainers/src/generic-container/generic-container.ts index 4ebe2899..234f6e90 100644 --- a/packages/testcontainers/src/generic-container/generic-container.ts +++ b/packages/testcontainers/src/generic-container/generic-container.ts @@ -475,4 +475,9 @@ export class GenericContainer implements TestContainer { this.logConsumer = logConsumer; return this; } + + public withHostname(hostname: string): this { + this.createOpts.Hostname = hostname; + return this; + } } diff --git a/packages/testcontainers/src/generic-container/started-generic-container.ts b/packages/testcontainers/src/generic-container/started-generic-container.ts index c5ff8865..9039d366 100644 --- a/packages/testcontainers/src/generic-container/started-generic-container.ts +++ b/packages/testcontainers/src/generic-container/started-generic-container.ts @@ -89,6 +89,10 @@ export class StartedGenericContainer implements StartedTestContainer { return this.host; } + public getHostname(): string { + return this.inspectResult.Config.Hostname; + } + public getFirstMappedPort(): number { return this.boundPorts.getFirstBinding(); } diff --git a/packages/testcontainers/src/test-container.ts b/packages/testcontainers/src/test-container.ts index 056921ac..ff309406 100644 --- a/packages/testcontainers/src/test-container.ts +++ b/packages/testcontainers/src/test-container.ts @@ -47,6 +47,7 @@ export interface TestContainer { withResourcesQuota(resourcesQuota: ResourcesQuota): this; withSharedMemorySize(bytes: number): this; withLogConsumer(logConsumer: (stream: Readable) => unknown): this; + withHostname(hostname: string): this; } export interface RestartOptions { @@ -63,6 +64,7 @@ export interface StartedTestContainer { stop(options?: Partial): Promise; restart(options?: Partial): Promise; getHost(): string; + getHostname(): string; getFirstMappedPort(): number; getMappedPort(port: number): number; getName(): string;