@tetrascience-npm/ts-connectors-sdk 4.0.0-beta.182.1 → 4.0.0-beta.183.1

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.
@@ -17,6 +17,7 @@ export declare class TestProxyServer {
17
17
  private mockResponses;
18
18
  private socketHangRules;
19
19
  private activeSockets;
20
+ private connectedHosts;
20
21
  constructor();
21
22
  /**
22
23
  * Add a delay rule for requests matching the given pattern.
@@ -43,6 +44,15 @@ export declare class TestProxyServer {
43
44
  * Clear all delay rules, mock responses, and socket hang rules.
44
45
  */
45
46
  clearRules(): void;
47
+ /**
48
+ * Returns the list of hostnames (host:port) that sent a CONNECT request through this proxy.
49
+ * Useful for asserting that specific traffic was routed through the proxy.
50
+ */
51
+ getConnectedHosts(): string[];
52
+ /**
53
+ * Clear the recorded connected hosts list.
54
+ */
55
+ clearConnectedHosts(): void;
46
56
  /**
47
57
  * Start the proxy server on an available port.
48
58
  * Returns the port number.
@@ -1 +1 @@
1
- {"version":3,"file":"test-proxy-server.d.ts","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,aAAa,CAA8B;;IAOnD;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpD;;;;OAIG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAIP;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAc9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAmE1B;;OAEG;IACH,OAAO,CAAC,cAAc;CAIvB"}
1
+ {"version":3,"file":"test-proxy-server.d.ts","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAgB;;IAOtC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpD;;;;OAIG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAIP;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;;OAGG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAc9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAwE1B;;OAEG;IACH,OAAO,CAAC,cAAc;CAIvB"}
@@ -38,6 +38,7 @@ class TestProxyServer {
38
38
  this.mockResponses = [];
39
39
  this.socketHangRules = [];
40
40
  this.activeSockets = new Set();
41
+ this.connectedHosts = [];
41
42
  this.server = http_1.default.createServer(this.handleHttpRequest.bind(this));
42
43
  this.server.on('connect', this.handleHttpsConnect.bind(this));
43
44
  }
@@ -76,6 +77,19 @@ class TestProxyServer {
76
77
  this.mockResponses = [];
77
78
  this.socketHangRules = [];
78
79
  }
80
+ /**
81
+ * Returns the list of hostnames (host:port) that sent a CONNECT request through this proxy.
82
+ * Useful for asserting that specific traffic was routed through the proxy.
83
+ */
84
+ getConnectedHosts() {
85
+ return [...this.connectedHosts];
86
+ }
87
+ /**
88
+ * Clear the recorded connected hosts list.
89
+ */
90
+ clearConnectedHosts() {
91
+ this.connectedHosts = [];
92
+ }
79
93
  /**
80
94
  * Start the proxy server on an available port.
81
95
  * Returns the port number.
@@ -178,6 +192,10 @@ class TestProxyServer {
178
192
  // Track ALL client sockets so we can clean them up when stopping the server
179
193
  logIfDebug('[ProxyServer] Handling HTTPS CONNECT:', url, '(Active sockets:', this.activeSockets.size, ')');
180
194
  this.activeSockets.add(clientSocket);
195
+ // Record the hostname for connection tracking assertions
196
+ if (req.url) {
197
+ this.connectedHosts.push(req.url);
198
+ }
181
199
  // Set up cleanup listeners for all sockets
182
200
  const cleanup = () => {
183
201
  logIfDebug('[ProxyServer] Socket cleanup. Removing from active sockets.');
@@ -1 +1 @@
1
- {"version":3,"file":"test-proxy-server.js","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-proxy-server.js","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=iam-proxy.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam-proxy.test.d.ts","sourceRoot":"","sources":["../../api-tests/iam-proxy.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ const s3 = __importStar(require("@aws-sdk/client-s3"));
46
+ const vitest_1 = require("vitest");
47
+ const fixture_1 = require("./fixture/fixture");
48
+ const test_proxy_server_1 = require("./fixture/test-proxy-server");
49
+ /**
50
+ * IAM_PROXY Routing Tests (WA-1350)
51
+ *
52
+ * These tests verify that when IAM_PROXY is set, AWS SDK traffic is routed
53
+ * through that proxy, and when IAM_PROXY is unset, traffic bypasses the proxy.
54
+ *
55
+ * We use TestProxyServer's connection tracking to assert that CONNECT requests
56
+ * for AWS endpoints are received by the proxy — without needing a real restricted
57
+ * network environment or socket hang rules.
58
+ *
59
+ * Tests use a fully initialized TDPClient (via connectorTest / standaloneConnector)
60
+ * and obtain an S3 client via tdpClient.createAwsClient(), which is the public API
61
+ * connector authors use. This exercises the real env-based agent selection logic
62
+ * end-to-end, including the handler wiring inside the connector.
63
+ */
64
+ (0, vitest_1.describe)('IAM_PROXY Routing Tests', () => {
65
+ (0, fixture_1.connectorTest)('DAM-T190: AWS SDK traffic is routed through IAM_PROXY when set', { timeout: 30 * 1000 }, (_a) => __awaiter(void 0, [_a], void 0, function* ({ standaloneConnector, expect }) {
66
+ const proxyServer = new test_proxy_server_1.TestProxyServer();
67
+ const proxyPort = yield proxyServer.start();
68
+ const originalIamProxy = process.env.IAM_PROXY;
69
+ try {
70
+ process.env.IAM_PROXY = `http://localhost:${proxyPort}`;
71
+ yield standaloneConnector.start();
72
+ const tdpClient = standaloneConnector.tdpClient;
73
+ // Clear CONNECTs recorded during connector startup so only the
74
+ // explicit ListBuckets call below contributes to the assertion.
75
+ proxyServer.clearConnectedHosts();
76
+ const s3Client = tdpClient.createAwsClient(s3.S3Client);
77
+ // The request may fail (e.g. auth error), but not before the AWS SDK
78
+ // has sent a CONNECT to our proxy, which we can observe.
79
+ yield s3Client.send(new s3.ListBucketsCommand({})).catch(() => { });
80
+ const awsConnects = proxyServer.getConnectedHosts().filter((host) => host.includes('amazonaws.com'));
81
+ expect(awsConnects.length).toBeGreaterThan(0);
82
+ }
83
+ finally {
84
+ yield proxyServer.stop();
85
+ if (originalIamProxy !== undefined) {
86
+ process.env.IAM_PROXY = originalIamProxy;
87
+ }
88
+ else {
89
+ delete process.env.IAM_PROXY;
90
+ }
91
+ }
92
+ }));
93
+ (0, fixture_1.connectorTest)('DAM-T191: AWS SDK traffic does NOT route through IAM_PROXY when unset', { timeout: 30 * 1000 }, (_a) => __awaiter(void 0, [_a], void 0, function* ({ standaloneConnector, expect }) {
94
+ const proxyServer = new test_proxy_server_1.TestProxyServer();
95
+ yield proxyServer.start();
96
+ const originalIamProxy = process.env.IAM_PROXY;
97
+ const originalHttpProxy = process.env.http_proxy;
98
+ const originalHttpsProxy = process.env.https_proxy;
99
+ // proxy-agent / proxy-from-env also honours uppercase variants; clear them
100
+ // so that CI-level proxy settings don't accidentally route traffic through
101
+ // an external proxy and make the "no CONNECT" assertion fail.
102
+ const originalHTTP_PROXY = process.env.HTTP_PROXY;
103
+ const originalHTTPS_PROXY = process.env.HTTPS_PROXY;
104
+ const originalNO_PROXY = process.env.NO_PROXY;
105
+ try {
106
+ // Unset IAM_PROXY and all standard proxy vars so ProxyAgent makes direct connections
107
+ delete process.env.IAM_PROXY;
108
+ delete process.env.http_proxy;
109
+ delete process.env.https_proxy;
110
+ delete process.env.HTTP_PROXY;
111
+ delete process.env.HTTPS_PROXY;
112
+ delete process.env.NO_PROXY;
113
+ yield standaloneConnector.start();
114
+ const tdpClient = standaloneConnector.tdpClient;
115
+ const s3Client = tdpClient.createAwsClient(s3.S3Client);
116
+ yield s3Client.send(new s3.ListBucketsCommand({})).catch(() => { });
117
+ // No CONNECT to our test proxy should have been recorded
118
+ const awsConnects = proxyServer.getConnectedHosts().filter((host) => host.includes('amazonaws.com'));
119
+ expect(awsConnects.length).toBe(0);
120
+ }
121
+ finally {
122
+ yield proxyServer.stop();
123
+ if (originalIamProxy !== undefined)
124
+ process.env.IAM_PROXY = originalIamProxy;
125
+ if (originalHttpProxy !== undefined)
126
+ process.env.http_proxy = originalHttpProxy;
127
+ if (originalHttpsProxy !== undefined)
128
+ process.env.https_proxy = originalHttpsProxy;
129
+ if (originalHTTP_PROXY !== undefined)
130
+ process.env.HTTP_PROXY = originalHTTP_PROXY;
131
+ if (originalHTTPS_PROXY !== undefined)
132
+ process.env.HTTPS_PROXY = originalHTTPS_PROXY;
133
+ if (originalNO_PROXY !== undefined)
134
+ process.env.NO_PROXY = originalNO_PROXY;
135
+ }
136
+ }));
137
+ });
138
+ //# sourceMappingURL=iam-proxy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam-proxy.test.js","sourceRoot":"","sources":["../../api-tests/iam-proxy.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;AACzC,mCAAkC;AAElC,+CAAkD;AAClD,mEAA8D;AAE9D;;;;;;;;;;;;;;GAcG;AACH,IAAA,iBAAQ,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,uBAAa,EACX,gEAAgE,EAChE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,EACtB,KAAwC,EAAE,4CAAnC,EAAE,mBAAmB,EAAE,MAAM,EAAE;QACpC,MAAM,WAAW,GAAG,IAAI,mCAAe,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAE/C,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,oBAAoB,SAAS,EAAE,CAAC;YAExD,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAElC,MAAM,SAAS,GAAI,mBAA2B,CAAC,SAAS,CAAC;YAEzD,+DAA+D;YAC/D,gEAAgE;YAChE,WAAW,CAAC,mBAAmB,EAAE,CAAC;YAElC,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;YAExD,qEAAqE;YACrE,yDAAyD;YACzD,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEnE,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YACrG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC,CAAA,CACF,CAAC;IAEF,IAAA,uBAAa,EACX,uEAAuE,EACvE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,EACtB,KAAwC,EAAE,4CAAnC,EAAE,mBAAmB,EAAE,MAAM,EAAE;QACpC,MAAM,WAAW,GAAG,IAAI,mCAAe,EAAE,CAAC;QAC1C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/C,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACjD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QACnD,2EAA2E;QAC3E,2EAA2E;QAC3E,8DAA8D;QAC9D,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAClD,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAE9C,IAAI,CAAC;YACH,qFAAqF;YACrF,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAE5B,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAElC,MAAM,SAAS,GAAI,mBAA2B,CAAC,SAAS,CAAC;YACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;YAExD,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEnE,yDAAyD;YACzD,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YACrG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,gBAAgB,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAC7E,IAAI,iBAAiB,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAC;YAChF,IAAI,kBAAkB,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,kBAAkB,CAAC;YACnF,IAAI,kBAAkB,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,kBAAkB,CAAC;YAClF,IAAI,mBAAmB,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,mBAAmB,CAAC;YACrF,IAAI,gBAAgB,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,gBAAgB,CAAC;QAC9E,CAAC;IACH,CAAC,CAAA,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}