From 068673ac77b84e2ce73d788856e5a7e327c9aeab Mon Sep 17 00:00:00 2001 From: Damian Zehnder Date: Tue, 6 Aug 2024 19:16:24 +0200 Subject: [PATCH 1/5] feat: introduce update latest audit --- .../src/service/audits/accessPatterns.js | 36 +++++++++++++ .../src/service/audits/index.js | 7 +++ .../test/unit/service/audits/index.test.js | 53 +++++++++++++++++++ .../test/unit/service/index.test.js | 1 + 4 files changed, 97 insertions(+) diff --git a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js index 2936f756..5d720491 100644 --- a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js +++ b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js @@ -256,6 +256,42 @@ async function removeAudits( await Promise.all(removeAuditPromises); } +/** + * Updates existing latest audit. + * This can be used for adding suggestions for example. + * @param dynamoClient - The DynamoDB client. + * @param config - The data access config. + * @param log - The logger. + * @param auditData - The audit data. + * @returns {Promise>} + */ +export const updateLatestAudit = async ( + dynamoClient, + config, + log, + auditData, +) => { + const newAudit = createAudit(auditData); + const existingAudit = await getLatestAuditForSite( + dynamoClient, + config, + log, + newAudit.getSiteId(), + newAudit.getAuditType(), + ); + + if (!isObject(existingAudit)) { + throw new Error('Audit not found'); + } + + await dynamoClient.putItem( + config.tableNameLatestAudits, + AuditDto.toDynamoItem(newAudit, true), + ); + + return newAudit; +}; + /** * Removes all audits for a specified site and the latest audit entry. * diff --git a/packages/spacecat-shared-data-access/src/service/audits/index.js b/packages/spacecat-shared-data-access/src/service/audits/index.js index ecc87fae..74bbdaac 100644 --- a/packages/spacecat-shared-data-access/src/service/audits/index.js +++ b/packages/spacecat-shared-data-access/src/service/audits/index.js @@ -18,6 +18,7 @@ import { getLatestAudits, getLatestAuditsForSite, removeAuditsForSite, + updateLatestAudit, } from './accessPatterns.js'; export const auditFunctions = (dynamoClient, config, log) => ({ @@ -69,4 +70,10 @@ export const auditFunctions = (dynamoClient, config, log) => ({ log, siteId, ), + updateLatestAudit: (auditData) => updateLatestAudit( + dynamoClient, + config, + log, + auditData, + ), }); diff --git a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js index 0c85d35d..020a4182 100644 --- a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js +++ b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js @@ -330,5 +330,58 @@ describe('Audit Access Pattern Tests', () => { await expect(exportedFunctions.removeAuditsForSite('some-id')).to.be.rejectedWith(errorMessage); }); + + it('successfully updates the latest audit', async () => { + const mockAuditData = { + siteId: 'siteId', + auditType: 'broken-backlinks', + auditedAt: new Date().toISOString(), + fullAuditRef: 'https://someurl.com', + auditResult: { + brokenBacklinks: [ + { + title: 'Broken Link 1', + url_to: 'https://brokenlink1.com', + url_from: 'https://site1.com', + traffic_domain: 123, + }, + { + title: 'Broken Link 2', + url_to: 'https://brokenlink2.com', + url_from: 'https://site2.com', + traffic_domain: 456, + }, + ], + }, + }; + const updatedAuditData = { + ...mockAuditData, + auditResult: { + ...mockAuditData.auditResult, + brokenBacklinks: mockAuditData.auditResult.brokenBacklinks.map((backlink) => ({ + ...backlink, + url_suggested: 'https://suggested.com', + })), + }, + }; + + mockDynamoClient.getItem.resolves(mockAuditData); + + await exportedFunctions.updateLatestAudit(updatedAuditData); + + expect(mockDynamoClient.putItem.calledOnce).to.be.true; + }); + + it('should throw an error if the latest audit was not found', async () => { + const audit = { + siteId: 'siteId', + auditType: 'broken-backlinks', + auditedAt: new Date().toISOString(), + auditResult: {}, + fullAuditRef: 'https://someurl.com', + }; + + await expect(exportedFunctions.updateLatestAudit(audit)).to.be.rejectedWith('Audit not found'); + }); }); }); diff --git a/packages/spacecat-shared-data-access/test/unit/service/index.test.js b/packages/spacecat-shared-data-access/test/unit/service/index.test.js index 66c07b0b..f7adecb4 100644 --- a/packages/spacecat-shared-data-access/test/unit/service/index.test.js +++ b/packages/spacecat-shared-data-access/test/unit/service/index.test.js @@ -24,6 +24,7 @@ describe('Data Access Object Tests', () => { 'getLatestAuditForSite', 'getLatestAuditsForSite', 'removeAuditsForSite', + 'updateLatestAudit', ]; const siteFunctions = [ 'addSite', From cc704cbc60af2465b56d269cf1cbb3c0b0dd26e1 Mon Sep 17 00:00:00 2001 From: Damian Zehnder Date: Tue, 6 Aug 2024 19:18:13 +0200 Subject: [PATCH 2/5] feat: update package-lock --- package-lock.json | 492 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 486 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1bd073b8..004238ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15372,7 +15372,7 @@ }, "packages/spacecat-shared-data-access": { "name": "@adobe/spacecat-shared-data-access", - "version": "1.39.0", + "version": "1.39.1", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-dynamo": "1.2.5", @@ -16446,7 +16446,7 @@ }, "packages/spacecat-shared-dynamo": { "name": "@adobe/spacecat-shared-dynamo", - "version": "1.3.30", + "version": "1.3.31", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.1.0", @@ -16475,7 +16475,7 @@ }, "packages/spacecat-shared-google-client": { "name": "@adobe/spacecat-shared-google-client", - "version": "1.1.16", + "version": "1.1.17", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.1.8", @@ -18740,6 +18740,486 @@ "sinon": "18.0.0" } }, + "packages/spacecat-shared-http-utils/node_modules/@adobe/spacecat-shared-utils": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.19.1.tgz", + "integrity": "sha512-UmnAD/o9HGdXl+N/4diU3tsrrUhiV8sF26+3AlSpOe1tpMM6jMh9jwSn5Rd6ZNdGlpfGqv0x5htkqI5ZTxYCNg==", + "dependencies": { + "@adobe/fetch": "4.1.8", + "@aws-sdk/client-s3": "3.620.0", + "@aws-sdk/client-sqs": "3.620.0", + "@json2csv/plainjs": "7.0.6" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/client-s3": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.620.0.tgz", + "integrity": "sha512-kf3Lqvuq/ciUn4myQjd1a9nhVg95+FEWkIq7pdkgxFoKow8HKj3nuiwI7zYBRTfk0RKXRkJca3GE+3RXpeZSiA==", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.620.0", + "@aws-sdk/client-sts": "3.620.0", + "@aws-sdk/core": "3.620.0", + "@aws-sdk/credential-provider-node": "3.620.0", + "@aws-sdk/middleware-bucket-endpoint": "3.620.0", + "@aws-sdk/middleware-expect-continue": "3.620.0", + "@aws-sdk/middleware-flexible-checksums": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-location-constraint": "3.609.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-s3": "3.620.0", + "@aws-sdk/middleware-signing": "3.620.0", + "@aws-sdk/middleware-ssec": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/signature-v4-multi-region": "3.620.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@aws-sdk/xml-builder": "3.609.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.0", + "@smithy/eventstream-serde-browser": "^3.0.5", + "@smithy/eventstream-serde-config-resolver": "^3.0.3", + "@smithy/eventstream-serde-node": "^3.0.4", + "@smithy/fetch-http-handler": "^3.2.3", + "@smithy/hash-blob-browser": "^3.1.2", + "@smithy/hash-node": "^3.0.3", + "@smithy/hash-stream-node": "^3.1.2", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/md5-js": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.12", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.12", + "@smithy/util-defaults-mode-node": "^3.0.12", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-stream": "^3.1.2", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/client-sqs": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.620.0.tgz", + "integrity": "sha512-u9w/nlDY/3ZaSN5rt154ycHOG9P/LZSibuw7POkbRSlM6wTfqgT3BoSIejRzyWR6QoEmsivSeGnIcvtduvWfyQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.620.0", + "@aws-sdk/client-sts": "3.620.0", + "@aws-sdk/core": "3.620.0", + "@aws-sdk/credential-provider-node": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-sqs": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.0", + "@smithy/fetch-http-handler": "^3.2.3", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/md5-js": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.12", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.12", + "@smithy/util-defaults-mode-node": "^3.0.12", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/client-sso": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.620.0.tgz", + "integrity": "sha512-J1CvF7u39XwtCK9rPlkW2AA631EPqkb4PjOOj9aZ9LjQmkJ0DkL+9tEqU2XIWcjDd2Z3hS3LBuS8uN7upIkEnQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.0", + "@smithy/fetch-http-handler": "^3.2.3", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.12", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.12", + "@smithy/util-defaults-mode-node": "^3.0.12", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.620.0.tgz", + "integrity": "sha512-CWL8aJa6rrNaQXNsLhblGZzbFBrRz4BXAsFBbyqAZEmryr9q/IC7z/ww3nq8CD2UsW+bn89U/XcoP5r1KWUHuQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.620.0", + "@aws-sdk/credential-provider-node": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.0", + "@smithy/fetch-http-handler": "^3.2.3", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.12", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.12", + "@smithy/util-defaults-mode-node": "^3.0.12", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.620.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/client-sts": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.620.0.tgz", + "integrity": "sha512-pG4SqDHZV/ZbpoVoVtpxo6ZZoqVDbVItC3QUO73UJ3Gemxznd/Ck7kAsyb6/dJkV/Aqm3gt2O5UL7vzQLNHSjw==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.620.0", + "@aws-sdk/core": "3.620.0", + "@aws-sdk/credential-provider-node": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.0", + "@smithy/fetch-http-handler": "^3.2.3", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.12", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.12", + "@smithy/util-defaults-mode-node": "^3.0.12", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/core": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.620.0.tgz", + "integrity": "sha512-5D9tMahxIDDFLULS9/ULa0HuIu7CZSshfj6wmDSmigXzkWyUvHoVIrme2z6eM3Icat/MO3d4WEy3445Vk385gQ==", + "dependencies": { + "@smithy/core": "^2.3.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz", + "integrity": "sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.620.0.tgz", + "integrity": "sha512-BI2BdrSKDmB/2ouB/NJR0PT0x/+5fmoF6XOE78hFBb4F5w/yynGgcJY936dF+oREfpME6ehjB2b0okGg78Scpw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.3", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.620.0.tgz", + "integrity": "sha512-P9fYi6dzZIl8ITC7qAPf5DX9omI3LfA91g3KH+0OUmS3ctP7tN+gNo3HmqlzoqnwPe0pXn1FumYAe1qFl6Yjjg==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.609.0", + "@aws-sdk/credential-provider-http": "3.620.0", + "@aws-sdk/credential-provider-process": "3.614.0", + "@aws-sdk/credential-provider-sso": "3.620.0", + "@aws-sdk/credential-provider-web-identity": "3.609.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.620.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.620.0.tgz", + "integrity": "sha512-or8ahy4ysURcWgKX00367DMDTTyMynDEl+FQh4wce66fMyePhFVuoPcRgXzWsi8KYmL95sPCfJFNqBMyFNcgvQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.609.0", + "@aws-sdk/credential-provider-http": "3.620.0", + "@aws-sdk/credential-provider-ini": "3.620.0", + "@aws-sdk/credential-provider-process": "3.614.0", + "@aws-sdk/credential-provider-sso": "3.620.0", + "@aws-sdk/credential-provider-web-identity": "3.609.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz", + "integrity": "sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.620.0.tgz", + "integrity": "sha512-xtIj2hmq3jcKwvGmqhoYapbWeQfFyoQgKBtwD6nx0M6oS5lbFH4rzHhj0gBwatZDjMa35cWtcYVUJCv2/9mWvA==", + "dependencies": { + "@aws-sdk/client-sso": "3.620.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz", + "integrity": "sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.609.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.620.0.tgz", + "integrity": "sha512-AAZ6NLVOx/bP97PYj/afCMeySzxOHocgJG3ZXh6f8MnJcGpZgx8NyRm0vtiYUTFrS2JtU4xV05Dl3j4afV3s4A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-stream": "^3.1.2", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/middleware-sdk-sqs": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.620.0.tgz", + "integrity": "sha512-Zv3sdnD03vWjX4dDjbcwW0IOweraKQagcPBugXCIPssOHantuMvdeKOneIiNehluRclzdlfQMdvTdUdt1YL9Mg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/smithy-client": "^3.1.10", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/spacecat-shared-http-utils/node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.620.0.tgz", + "integrity": "sha512-yu1pTCqIbkSdaOvmyfW9vV9jWe3pDApkQPZLg4VEN5dXDWRtgQ/amv88myyCEoG14irUN1tsbvytcKzGyEXnhA==", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.620.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, "packages/spacecat-shared-ims-client": { "name": "@adobe/spacecat-shared-ims-client", "version": "1.3.12", @@ -18801,7 +19281,7 @@ }, "packages/spacecat-shared-rum-api-client": { "name": "@adobe/spacecat-shared-rum-api-client", - "version": "2.6.0", + "version": "2.7.0", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.1.8", @@ -18827,7 +19307,7 @@ }, "packages/spacecat-shared-slack-client": { "name": "@adobe/spacecat-shared-slack-client", - "version": "1.3.10", + "version": "1.3.11", "license": "Apache-2.0", "dependencies": { "@adobe/helix-universal": "5.0.5", @@ -18887,7 +19367,7 @@ }, "packages/spacecat-shared-utils": { "name": "@adobe/spacecat-shared-utils", - "version": "1.19.1", + "version": "1.19.2", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.1.8", From 919342b0ae7fc1e401f0cad2526ab6ce63b08a07 Mon Sep 17 00:00:00 2001 From: Damian Zehnder Date: Tue, 6 Aug 2024 19:23:09 +0200 Subject: [PATCH 3/5] fix: adding method to interface --- packages/spacecat-shared-data-access/src/index.d.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/spacecat-shared-data-access/src/index.d.ts b/packages/spacecat-shared-data-access/src/index.d.ts index e8f81da5..fe9bb8a4 100644 --- a/packages/spacecat-shared-data-access/src/index.d.ts +++ b/packages/spacecat-shared-data-access/src/index.d.ts @@ -683,6 +683,9 @@ export interface DataAccess { removeAuditsForSite: ( siteId: string, ) => Promise; + updateLatestAudit: ( + audit: Audit, + ) => Promise; getSites: () => Promise; getSitesByDeliveryType: ( deliveryType: string, From 167ec47c375031afa9af90b92da1f934c77b12cc Mon Sep 17 00:00:00 2001 From: Damian Zehnder Date: Wed, 7 Aug 2024 14:23:28 +0200 Subject: [PATCH 4/5] fix: adjust test to reflect multiple suggested urls --- .../test/unit/service/audits/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js index 020a4182..5f27a7cc 100644 --- a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js +++ b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js @@ -360,7 +360,7 @@ describe('Audit Access Pattern Tests', () => { ...mockAuditData.auditResult, brokenBacklinks: mockAuditData.auditResult.brokenBacklinks.map((backlink) => ({ ...backlink, - url_suggested: 'https://suggested.com', + urls_suggested: ['https://suggested.com', 'https://suggested2.com', 'https://suggested3.com'], })), }, }; From ca3695b03f9d416904ad898a989b29005bccfac5 Mon Sep 17 00:00:00 2001 From: Damian Zehnder Date: Wed, 14 Aug 2024 16:53:17 +0200 Subject: [PATCH 5/5] fix: PR review, adding updated audit result to audit --- .../src/service/audits/accessPatterns.js | 7 ++++++- .../test/unit/service/audits/index.test.js | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js index 5d720491..4b8b46c4 100644 --- a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js +++ b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js @@ -281,7 +281,7 @@ export const updateLatestAudit = async ( ); if (!isObject(existingAudit)) { - throw new Error('Audit not found'); + throw new Error('Audit to update not found'); } await dynamoClient.putItem( @@ -289,6 +289,11 @@ export const updateLatestAudit = async ( AuditDto.toDynamoItem(newAudit, true), ); + await dynamoClient.putItem( + config.tableNameAudits, + AuditDto.toDynamoItem(newAudit), + ); + return newAudit; }; diff --git a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js index 5f27a7cc..673399fb 100644 --- a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js +++ b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js @@ -369,7 +369,7 @@ describe('Audit Access Pattern Tests', () => { await exportedFunctions.updateLatestAudit(updatedAuditData); - expect(mockDynamoClient.putItem.calledOnce).to.be.true; + expect(mockDynamoClient.putItem.calledTwice).to.be.true; }); it('should throw an error if the latest audit was not found', async () => { @@ -381,7 +381,7 @@ describe('Audit Access Pattern Tests', () => { fullAuditRef: 'https://someurl.com', }; - await expect(exportedFunctions.updateLatestAudit(audit)).to.be.rejectedWith('Audit not found'); + await expect(exportedFunctions.updateLatestAudit(audit)).to.be.rejectedWith('Audit to update not found'); }); }); });