diff --git a/docs/modules/mockserver.md b/docs/modules/mockserver.md index bde009ab9..477c070ad 100644 --- a/docs/modules/mockserver.md +++ b/docs/modules/mockserver.md @@ -13,3 +13,9 @@ npm install @testcontainers/mockserver --save-dev [Start container:](../../packages/modules/mockserver/src/mockserver-container.test.ts) inside_block:startContainer + +MockServer includes built-in TLS support. To obtain an HTTPS URL, use the `getSecureUrl` method. Keep in mind that MockServer uses a self-signed certificate. + + +[Using TLS:](../../packages/modules/mockserver/src/mockserver-container.test.ts) inside_block:httpsRequests + \ No newline at end of file diff --git a/packages/modules/mockserver/src/mockserver-container.test.ts b/packages/modules/mockserver/src/mockserver-container.test.ts index a379b95a9..392261923 100644 --- a/packages/modules/mockserver/src/mockserver-container.test.ts +++ b/packages/modules/mockserver/src/mockserver-container.test.ts @@ -31,4 +31,39 @@ describe("MockserverContainer", { timeout: 240_000 }, () => { expect(response.text).toBe("bar"); }); // } + + it("should return an https url", async () => { + const container = await new MockserverContainer(IMAGE).start(); + const secureUrl = container.getSecureUrl(); + await container.stop(); + expect(secureUrl.startsWith("https://")).to.equal(true, `${secureUrl} does not start with https://`); + }); + + // httpsRequests { + it("should respond to https requests", async () => { + const container = await new MockserverContainer(IMAGE).start(); + const client = mockServerClient(container.getHost(), container.getMockserverPort()); + + await client.mockAnyResponse({ + httpRequest: { + method: "GET", + path: "/foo", + }, + httpResponse: { + body: { + string: "bar", + }, + statusCode: 200, + }, + }); + + const secureUrl = container.getSecureUrl(); + const response = await superagent.get(`${secureUrl}/foo`).disableTLSCerts(); + + expect(response.statusCode).toBe(200); + expect(response.text).toBe("bar"); + + await container.stop(); + }); + // } }); diff --git a/packages/modules/mockserver/src/mockserver-container.ts b/packages/modules/mockserver/src/mockserver-container.ts index 3a7e96cf7..5b31becf8 100644 --- a/packages/modules/mockserver/src/mockserver-container.ts +++ b/packages/modules/mockserver/src/mockserver-container.ts @@ -8,6 +8,10 @@ export class StartedMockserverContainer extends AbstractStartedContainer { getUrl(): string { return `http://${this.getHost()}:${this.getFirstMappedPort()}`; } + + getSecureUrl(): string { + return `https://${this.getHost()}:${this.getFirstMappedPort()}`; + } } const MOCKSERVER_PORT = 1080;