ci: add retries to test setup in case the Atlas Dev environment is unstable #1758
Annotations
7 errors and 5 warnings
Run tests
Process completed with exit code 1.
|
Run tests:
tests/integration/tools/atlas/projects.test.ts#L63
AssertionError: expected 'Unable to authenticate with MongoDB A…' to match /Found \d+ projects/
- Expected:
/Found \d+ projects/
+ Received:
"Unable to authenticate with MongoDB Atlas, API error: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource.
Hint: Your API credentials may be invalid, expired or lack permissions.
Please check your Atlas API credentials and ensure they have the appropriate permissions.
For more information on setting up API keys, visit: https://www.mongodb.com/docs/atlas/configure-api-access/"
❯ tests/integration/tools/atlas/projects.test.ts:63:39
❯ tests/integration/tools/atlas/atlasHelpers.ts:131:17
|
Run tests:
tests/integration/tools/atlas/projects.test.ts#L47
AssertionError: expected 'Error running atlas-create-project: C…' to contain 'testProj-68b1c4c8feb41ab8359f6547'
Expected: "testProj-68b1c4c8feb41ab8359f6547"
Received: "Error running atlas-create-project: Could not search for organizations in your MongoDB Atlas account, please provide an organization ID or create one first."
❯ tests/integration/tools/atlas/projects.test.ts:47:39
❯ tests/integration/tools/atlas/atlasHelpers.ts:131:17
|
Run tests:
src/common/atlas/apiClientError.ts#L31
ApiClientError: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource.
❯ Function.fromError src/common/atlas/apiClientError.ts:31:16
❯ ApiClient.listProjects src/common/atlas/apiClient.ts:322:34
❯ tests/integration/tools/atlas/projects.test.ts:14:26
❯ tests/integration/tools/atlas/atlasHelpers.ts:103:17
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { response: { size: +0, constructor: 'Function<Response>', type: 'default', url: 'https://cloud-dev.mongodb.com/api/atlas/v2/groups', status: 401, ok: false, redirected: false, statusText: 'Unauthorized', headers: { constructor: 'Function<Headers>', toString: 'Function<toString>', get: 'Function<get>', forEach: 'Function<forEach>', values: 'Function<values>', entries: 'Function<entries>', raw: 'Function<raw>', size: '<unserializable>: Value of "this" must be of type URLSearchParams', append: 'Function<anonymous>', delete: 'Function<anonymous>', getAll: 'Function<anonymous>', has: 'Function<anonymous>', set: 'Function<anonymous>', sort: 'Function<sort>', keys: 'Function<anonymous>' }, highWaterMark: 16384, clone: 'Function<clone>', body: { _events: { close: [ 'Function<anonymous>', 'Function<anonymous>', 'Function<onclose>' ], error: [ 'Function<anonymous>', 'Function<onerror>' ], prefinish: 'Function<prefinish>', finish: 'Function<onfinish>', drain: undefined, data: undefined, end: 'Function<onend>', readable: 'Function<next>', unpipe: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: false, needReadable: false, emittedReadable: false, readableListening: true, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: false, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: false }, _writableState: { highWaterMark: 65536, length: +0, corked: +0, onwrite: 'Function<bound onwrite>', writelen: +0, bufferedIndex: +0, pendingcb: +0, constructor: 'Function<WritableState>', objectMode: false, finalCalled: true, needDrain: false, ending: true, ended: true, finished: true, destroyed: true, decodeStrings: true, writing: false, sync: false, bufferProcessing: false, constructed: true, prefinished: true, errorEmitted: false, emitClose: true, autoDestroy: true, closed: true, closeEmitted: true, allBuffers: true, allNoop: true, errored: null, writable: undefined, defaultEncoding: 'utf8', writecb: 'Function<nop>', afterWriteTickInfo: null, buffered: [], getBuffer: 'Function<getBuffer>', bufferedRequestCount: +0 }, allowHalfOpen: true, _maxListeners: undefined, _eventsCount: 6, constructor: 'Function<PassThrough>', _transform: 'Function<anonymous>', _final: 'Function<final>', _write: 'Function<anonymous>', _read: 'Function<anonymous>', write: 'Function<anonymous>', cork: 'Function<anonymous>', uncork: 'Function<anonymous>', setDefaultEncoding: 'Function<setDefaultEncoding>', _writev: null, end: 'Function<anonymous>', destroy: 'Function<anonymous>', writable: false, writableHighWaterMark: 65536, writableObjectMode: false, writableBuffer: [], writableLength: +0, writableFinished: true, writableCorked: +0, writableEnded: true, writableNeedDrain: false, destroyed: true, _undestroy: 'Function<undestroy>', _destroy: 'Function<anonymous>', push: 'Function<anonymous>', unshift: 'Function<anonymous>', isPaused: 'Function<anonymous>', setEncoding: 'Function<anonymous>', read: 'Function<anonymous>', pipe: 'Function<anonymous>', unpipe: 'Function<anonymous>', on: 'Function<anonymous>', addListener: 'Function<anonymous>', removeListener: 'Function<anonymous>', off: 'Function<anonymous>', removeAllListeners: 'Function<anonymous>', resume: 'Function<anonymous>', pause: 'Function<anonymous>', wrap: 'Function<anonymous>', iterator: 'Function<anonymous>', readable:
|
Run tests:
tests/integration/tools/atlas/orgs.test.ts#L16
AssertionError: expected 'Unable to authenticate with MongoDB A…' to contain 'Found 1 organizations'
- Expected
+ Received
- Found 1 organizations
+ Unable to authenticate with MongoDB Atlas, API error: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource.
+
+ Hint: Your API credentials may be invalid, expired or lack permissions.
+ Please check your Atlas API credentials and ensure they have the appropriate permissions.
+ For more information on setting up API keys, visit: https://www.mongodb.com/docs/atlas/configure-api-access/
❯ tests/integration/tools/atlas/orgs.test.ts:16:39
|
Run tests:
src/common/atlas/apiClientError.ts#L31
ApiClientError: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource.
❯ Function.fromError src/common/atlas/apiClientError.ts:31:16
❯ ApiClient.listOrganizations src/common/atlas/apiClient.ts:515:34
❯ createProject tests/integration/tools/atlas/atlasHelpers.ts:176:18
❯ tests/integration/tools/atlas/atlasHelpers.ts:41:27
❯ tests/integration/tools/atlas/atlasHelpers.ts:76:17
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { response: { size: +0, constructor: 'Function<Response>', type: 'default', url: 'https://cloud-dev.mongodb.com/api/atlas/v2/orgs', status: 401, ok: false, redirected: false, statusText: 'Unauthorized', headers: { constructor: 'Function<Headers>', toString: 'Function<toString>', get: 'Function<get>', forEach: 'Function<forEach>', values: 'Function<values>', entries: 'Function<entries>', raw: 'Function<raw>', size: '<unserializable>: Value of "this" must be of type URLSearchParams', append: 'Function<anonymous>', delete: 'Function<anonymous>', getAll: 'Function<anonymous>', has: 'Function<anonymous>', set: 'Function<anonymous>', sort: 'Function<sort>', keys: 'Function<anonymous>' }, highWaterMark: 16384, clone: 'Function<clone>', body: { _events: { close: [ 'Function<anonymous>', 'Function<anonymous>', 'Function<onclose>' ], error: [ 'Function<anonymous>', 'Function<onerror>' ], prefinish: 'Function<prefinish>', finish: 'Function<onfinish>', drain: undefined, data: undefined, end: 'Function<onend>', readable: 'Function<next>', unpipe: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: false, needReadable: false, emittedReadable: false, readableListening: true, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: false, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: false }, _writableState: { highWaterMark: 65536, length: +0, corked: +0, onwrite: 'Function<bound onwrite>', writelen: +0, bufferedIndex: +0, pendingcb: +0, constructor: 'Function<WritableState>', objectMode: false, finalCalled: true, needDrain: false, ending: true, ended: true, finished: true, destroyed: true, decodeStrings: true, writing: false, sync: false, bufferProcessing: false, constructed: true, prefinished: true, errorEmitted: false, emitClose: true, autoDestroy: true, closed: true, closeEmitted: true, allBuffers: true, allNoop: true, errored: null, writable: undefined, defaultEncoding: 'utf8', writecb: 'Function<nop>', afterWriteTickInfo: null, buffered: [], getBuffer: 'Function<getBuffer>', bufferedRequestCount: +0 }, allowHalfOpen: true, _maxListeners: undefined, _eventsCount: 6, constructor: 'Function<PassThrough>', _transform: 'Function<anonymous>', _final: 'Function<final>', _write: 'Function<anonymous>', _read: 'Function<anonymous>', write: 'Function<anonymous>', cork: 'Function<anonymous>', uncork: 'Function<anonymous>', setDefaultEncoding: 'Function<setDefaultEncoding>', _writev: null, end: 'Function<anonymous>', destroy: 'Function<anonymous>', writable: false, writableHighWaterMark: 65536, writableObjectMode: false, writableBuffer: [], writableLength: +0, writableFinished: true, writableCorked: +0, writableEnded: true, writableNeedDrain: false, destroyed: true, _undestroy: 'Function<undestroy>', _destroy: 'Function<anonymous>', push: 'Function<anonymous>', unshift: 'Function<anonymous>', isPaused: 'Function<anonymous>', setEncoding: 'Function<anonymous>', read: 'Function<anonymous>', pipe: 'Function<anonymous>', unpipe: 'Function<anonymous>', on: 'Function<anonymous>', addListener: 'Function<anonymous>', removeListener: 'Function<anonymous>', off: 'Function<anonymous>', removeAllListeners: 'Function<anonymous>', resume: 'Function<anonymous>', pause: 'Function<anonymous>', w
|
Run tests:
src/common/atlas/apiClientError.ts#L31
ApiClientError: [401 Unauthorized] error calling Atlas API: Unauthorized; You are not authorized for this resource.
❯ Function.fromError src/common/atlas/apiClientError.ts:31:16
❯ ApiClient.listOrganizations src/common/atlas/apiClient.ts:515:34
❯ createProject tests/integration/tools/atlas/atlasHelpers.ts:176:18
❯ tests/integration/tools/atlas/atlasHelpers.ts:41:27
❯ tests/integration/tools/atlas/atlasHelpers.ts:76:17
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { response: { size: +0, constructor: 'Function<Response>', type: 'default', url: 'https://cloud-dev.mongodb.com/api/atlas/v2/orgs', status: 401, ok: false, redirected: false, statusText: 'Unauthorized', headers: { constructor: 'Function<Headers>', toString: 'Function<toString>', get: 'Function<get>', forEach: 'Function<forEach>', values: 'Function<values>', entries: 'Function<entries>', raw: 'Function<raw>', size: '<unserializable>: Value of "this" must be of type URLSearchParams', append: 'Function<anonymous>', delete: 'Function<anonymous>', getAll: 'Function<anonymous>', has: 'Function<anonymous>', set: 'Function<anonymous>', sort: 'Function<sort>', keys: 'Function<anonymous>' }, highWaterMark: 16384, clone: 'Function<clone>', body: { _events: { close: [ 'Function<anonymous>', 'Function<anonymous>', 'Function<onclose>' ], error: [ 'Function<anonymous>', 'Function<onerror>' ], prefinish: 'Function<prefinish>', finish: 'Function<onfinish>', drain: undefined, data: undefined, end: 'Function<onend>', readable: 'Function<next>', unpipe: undefined }, _readableState: { highWaterMark: 65536, buffer: [], bufferIndex: +0, length: +0, pipes: [], awaitDrainWriters: null, constructor: 'Function<ReadableState>', objectMode: false, ended: true, endEmitted: true, reading: false, constructed: true, sync: false, needReadable: false, emittedReadable: false, readableListening: true, resumeScheduled: false, errorEmitted: false, emitClose: true, autoDestroy: true, destroyed: true, closed: true, closeEmitted: true, multiAwaitDrain: false, readingMore: false, dataEmitted: true, errored: null, defaultEncoding: 'utf8', decoder: null, encoding: null, flowing: false, pipesCount: +0, paused: false }, _writableState: { highWaterMark: 65536, length: +0, corked: +0, onwrite: 'Function<bound onwrite>', writelen: +0, bufferedIndex: +0, pendingcb: +0, constructor: 'Function<WritableState>', objectMode: false, finalCalled: true, needDrain: false, ending: true, ended: true, finished: true, destroyed: true, decodeStrings: true, writing: false, sync: false, bufferProcessing: false, constructed: true, prefinished: true, errorEmitted: false, emitClose: true, autoDestroy: true, closed: true, closeEmitted: true, allBuffers: true, allNoop: true, errored: null, writable: undefined, defaultEncoding: 'utf8', writecb: 'Function<nop>', afterWriteTickInfo: null, buffered: [], getBuffer: 'Function<getBuffer>', bufferedRequestCount: +0 }, allowHalfOpen: true, _maxListeners: undefined, _eventsCount: 6, constructor: 'Function<PassThrough>', _transform: 'Function<anonymous>', _final: 'Function<final>', _write: 'Function<anonymous>', _read: 'Function<anonymous>', write: 'Function<anonymous>', cork: 'Function<anonymous>', uncork: 'Function<anonymous>', setDefaultEncoding: 'Function<setDefaultEncoding>', _writev: null, end: 'Function<anonymous>', destroy: 'Function<anonymous>', writable: false, writableHighWaterMark: 65536, writableObjectMode: false, writableBuffer: [], writableLength: +0, writableFinished: true, writableCorked: +0, writableEnded: true, writableNeedDrain: false, destroyed: true, _undestroy: 'Function<undestroy>', _destroy: 'Function<anonymous>', push: 'Function<anonymous>', unshift: 'Function<anonymous>', isPaused: 'Function<anonymous>', setEncoding: 'Function<anonymous>', read: 'Function<anonymous>', pipe: 'Function<anonymous>', unpipe: 'Function<anonymous>', on: 'Function<anonymous>', addListener: 'Function<anonymous>', removeListener: 'Function<anonymous>', off: 'Function<anonymous>', removeAllListeners: 'Function<anonymous>', resume: 'Function<anonymous>', pause: 'Function<anonymous>', w
|
Upload test results
No files were found with the provided path: coverage/lcov.info. No artifacts will be uploaded.
|
Run GitHubSecurityLab/actions-permissions/monitor@v1
1 added, 0 removed; done.
|
Run GitHubSecurityLab/actions-permissions/monitor@v1
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
|
Run GitHubSecurityLab/actions-permissions/monitor@v1
Updating certificates in /etc/ssl/certs...
|
Run GitHubSecurityLab/actions-permissions/monitor@v1
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
|
Loading