testcontainers 8.10.1 → 8.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -15,3 +15,4 @@ export { Neo4jContainer, StartedNeo4jContainer } from "./modules/neo4j/neo4j-con
15
15
  export { ArangoDBContainer, StartedArangoContainer } from "./modules/arangodb/arangodb-container";
16
16
  export { ElasticsearchContainer, StartedElasticsearchContainer } from "./modules/elasticsearch/elasticsearch-container";
17
17
  export { MySqlContainer, StartedMySqlContainer } from "./modules/mysql/mysql-container";
18
+ export { NatsContainer, StartedNatsContainer, NatsConnectionOptions, NatsTlsOptions, } from "./modules/nats/nats-container";
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StartedMySqlContainer = exports.MySqlContainer = exports.StartedElasticsearchContainer = exports.ElasticsearchContainer = exports.StartedArangoContainer = exports.ArangoDBContainer = exports.StartedNeo4jContainer = exports.Neo4jContainer = exports.StartedKafkaContainer = exports.KafkaContainer = exports.StartedPostgreSqlContainer = exports.PostgreSqlContainer = exports.AlwaysPullPolicy = exports.DefaultPullPolicy = exports.Wait = exports.StoppedNetwork = exports.StartedNetwork = exports.Network = exports.DownedDockerComposeEnvironment = exports.StoppedDockerComposeEnvironment = exports.StartedDockerComposeEnvironment = exports.DockerComposeEnvironment = exports.TestContainers = exports.GenericContainerBuilder = exports.GenericContainer = void 0;
3
+ exports.StartedNatsContainer = exports.NatsContainer = exports.StartedMySqlContainer = exports.MySqlContainer = exports.StartedElasticsearchContainer = exports.ElasticsearchContainer = exports.StartedArangoContainer = exports.ArangoDBContainer = exports.StartedNeo4jContainer = exports.Neo4jContainer = exports.StartedKafkaContainer = exports.KafkaContainer = exports.StartedPostgreSqlContainer = exports.PostgreSqlContainer = exports.AlwaysPullPolicy = exports.DefaultPullPolicy = exports.Wait = exports.StoppedNetwork = exports.StartedNetwork = exports.Network = exports.DownedDockerComposeEnvironment = exports.StoppedDockerComposeEnvironment = exports.StartedDockerComposeEnvironment = exports.DockerComposeEnvironment = exports.TestContainers = exports.GenericContainerBuilder = exports.GenericContainer = void 0;
4
4
  var generic_container_1 = require("./generic-container/generic-container");
5
5
  Object.defineProperty(exports, "GenericContainer", { enumerable: true, get: function () { return generic_container_1.GenericContainer; } });
6
6
  var generic_container_builder_1 = require("./generic-container/generic-container-builder");
@@ -42,3 +42,6 @@ Object.defineProperty(exports, "StartedElasticsearchContainer", { enumerable: tr
42
42
  var mysql_container_1 = require("./modules/mysql/mysql-container");
43
43
  Object.defineProperty(exports, "MySqlContainer", { enumerable: true, get: function () { return mysql_container_1.MySqlContainer; } });
44
44
  Object.defineProperty(exports, "StartedMySqlContainer", { enumerable: true, get: function () { return mysql_container_1.StartedMySqlContainer; } });
45
+ var nats_container_1 = require("./modules/nats/nats-container");
46
+ Object.defineProperty(exports, "NatsContainer", { enumerable: true, get: function () { return nats_container_1.NatsContainer; } });
47
+ Object.defineProperty(exports, "StartedNatsContainer", { enumerable: true, get: function () { return nats_container_1.StartedNatsContainer; } });
@@ -0,0 +1,55 @@
1
+ import { GenericContainer } from "../../generic-container/generic-container";
2
+ import { StartedTestContainer } from "../../test-container";
3
+ import { AbstractStartedContainer } from "../abstract-started-container";
4
+ export declare class NatsContainer extends GenericContainer {
5
+ private args;
6
+ constructor(image?: string);
7
+ withUser(user: string): this;
8
+ withPass(pass: string): this;
9
+ withArg(name: string, value: string): this;
10
+ private static ensureDashInFrontOfArgumentName;
11
+ start(): Promise<StartedNatsContainer>;
12
+ private getUser;
13
+ private getPass;
14
+ }
15
+ export declare class StartedNatsContainer extends AbstractStartedContainer {
16
+ readonly username: string;
17
+ readonly password: string;
18
+ private readonly connectionOptions;
19
+ constructor(startedTestContainer: StartedTestContainer, username: string, password: string);
20
+ getConnectionOptions(): NatsConnectionOptions;
21
+ }
22
+ export interface NatsConnectionOptions {
23
+ debug?: boolean;
24
+ maxPingOut?: number;
25
+ maxReconnectAttempts?: number;
26
+ name?: string;
27
+ noEcho?: boolean;
28
+ noRandomize?: boolean;
29
+ pass?: string;
30
+ pedantic?: boolean;
31
+ pingInterval?: number;
32
+ port?: number;
33
+ reconnect?: boolean;
34
+ reconnectDelayHandler?: () => number;
35
+ reconnectJitter?: number;
36
+ reconnectJitterTLS?: number;
37
+ reconnectTimeWait?: number;
38
+ servers?: Array<string> | string;
39
+ timeout?: number;
40
+ tls?: NatsTlsOptions;
41
+ token?: string;
42
+ user?: string;
43
+ verbose?: boolean;
44
+ waitOnFirstConnect?: boolean;
45
+ ignoreClusterUpdates?: boolean;
46
+ inboxPrefix?: string;
47
+ }
48
+ export interface NatsTlsOptions {
49
+ certFile?: string;
50
+ cert?: string;
51
+ caFile?: string;
52
+ ca?: string;
53
+ keyFile?: string;
54
+ key?: string;
55
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StartedNatsContainer = exports.NatsContainer = void 0;
13
+ const generic_container_1 = require("../../generic-container/generic-container");
14
+ const uuid_1 = require("../../uuid");
15
+ const abstract_started_container_1 = require("../abstract-started-container");
16
+ const wait_1 = require("../../wait");
17
+ const CLIENT_PORT = 4222;
18
+ const ROUTING_PORT_FOR_CLUSTERING = 6222;
19
+ const HTTP_MANAGEMENT_PORT = 8222;
20
+ const USER_ARGUMENT_KEY = "--user";
21
+ const PASS_ARGUMENT_KEY = "--pass";
22
+ class NatsContainer extends generic_container_1.GenericContainer {
23
+ constructor(image = "nats:2.8-alpine") {
24
+ super(image);
25
+ this.args = {};
26
+ this.args[USER_ARGUMENT_KEY] = new uuid_1.RandomUuid().nextUuid();
27
+ this.args[PASS_ARGUMENT_KEY] = new uuid_1.RandomUuid().nextUuid();
28
+ }
29
+ withUser(user) {
30
+ this.args[USER_ARGUMENT_KEY] = user;
31
+ return this;
32
+ }
33
+ withPass(pass) {
34
+ this.args[PASS_ARGUMENT_KEY] = pass;
35
+ return this;
36
+ }
37
+ withArg(name, value) {
38
+ name = NatsContainer.ensureDashInFrontOfArgumentName(name);
39
+ this.args[name] = value;
40
+ return this;
41
+ }
42
+ static ensureDashInFrontOfArgumentName(name) {
43
+ if (name.startsWith("--") || name.startsWith("-")) {
44
+ return name;
45
+ }
46
+ if (name.length == 1) {
47
+ return "-" + name;
48
+ }
49
+ else {
50
+ return "--" + name;
51
+ }
52
+ }
53
+ start() {
54
+ const _super = Object.create(null, {
55
+ start: { get: () => super.start }
56
+ });
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ function buildCmdsFromArgs(args) {
59
+ const result = [];
60
+ result.push("nats-server");
61
+ for (const argsKey in args) {
62
+ result.push(argsKey);
63
+ result.push(args[argsKey]);
64
+ }
65
+ return result;
66
+ }
67
+ this.withCmd(buildCmdsFromArgs(this.args))
68
+ .withExposedPorts(...(this.hasExposedPorts ? this.ports : [CLIENT_PORT, ROUTING_PORT_FOR_CLUSTERING, HTTP_MANAGEMENT_PORT]))
69
+ .withWaitStrategy(wait_1.Wait.forLogMessage(new RegExp(".*Server is ready.*")))
70
+ .withStartupTimeout(120000);
71
+ return new StartedNatsContainer(yield _super.start.call(this), this.getUser(), this.getPass());
72
+ });
73
+ }
74
+ getUser() {
75
+ return this.args[USER_ARGUMENT_KEY];
76
+ }
77
+ getPass() {
78
+ return this.args[PASS_ARGUMENT_KEY];
79
+ }
80
+ }
81
+ exports.NatsContainer = NatsContainer;
82
+ class StartedNatsContainer extends abstract_started_container_1.AbstractStartedContainer {
83
+ constructor(startedTestContainer, username, password) {
84
+ super(startedTestContainer);
85
+ this.username = username;
86
+ this.password = password;
87
+ const port = startedTestContainer.getMappedPort(CLIENT_PORT);
88
+ this.connectionOptions = {
89
+ servers: `${this.startedTestContainer.getHost()}:${port}`,
90
+ user: this.username,
91
+ pass: this.password,
92
+ };
93
+ }
94
+ getConnectionOptions() {
95
+ return this.connectionOptions;
96
+ }
97
+ }
98
+ exports.StartedNatsContainer = StartedNatsContainer;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "testcontainers",
3
3
  "author": "Cristian Greco",
4
- "version": "8.10.1",
4
+ "version": "8.11.0",
5
5
  "main": "dist/index",
6
6
  "types": "dist/index",
7
7
  "keywords": [
@@ -74,7 +74,8 @@
74
74
  "ts-jest": "^27.1.4",
75
75
  "ts-node": "^10.7.0",
76
76
  "typescript": "^4.6.3",
77
- "wait-for-expect": "^3.0.2"
77
+ "wait-for-expect": "^3.0.2",
78
+ "nats": "^2.7.1"
78
79
  },
79
80
  "lint-staged": {
80
81
  "src/**/*.ts": [