Skip to content

Commit 134e800

Browse files
Merge pull request #427 from GSA/lc/1324-update-name-field
1324/1325 - Update Fields
2 parents 677b2ec + 95774ca commit 134e800

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

libs/core-scanner/src/scans/url-scan.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ describe('url scan', () => {
2424
finalUrlSameDomain: false,
2525
finalUrlSameWebsite: false,
2626
finalUrlStatusCode: 200,
27-
targetUrlRedirects: true,
27+
targetUrlRedirects: null,
2828
});
2929
});
3030
});

libs/core-scanner/src/scans/url-scan.ts

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export const buildUrlScanResult = (
2828
const redirectChain = response.request().redirectChain();
2929
const finalUrl = getFinalUrl(page);
3030
return {
31-
targetUrlRedirects: isRedirect(url, finalUrl, logger),
31+
targetUrlRedirects: isRedirect(url, getWithSubdomain(finalUrl), logger),
3232
finalUrl: finalUrl,
3333
finalUrlWebsite: getWithSubdomain(finalUrl),
3434
finalUrlTopLevelDomain: getTopLevelDomain(finalUrl),
@@ -53,24 +53,42 @@ const getFinalUrl = (page: Page) => {
5353
function cleanUrl(url: string): string {
5454
// Remove the protocol (http:// or https://)
5555
url = url.replace(/^https?:\/\//, '');
56-
57-
// Remove 'www.' if it exists
58-
url = url.replace(/^www\./, '');
5956

6057
// Remove trailing slashes
6158
url = url.replace(/\/$/, '');
6259

6360
return url;
6461
}
6562

63+
function removeWww(url: string): string {
64+
return url.replace(/^www\./, '');
65+
}
66+
67+
/**
68+
* Compares the initial URL and final URL to determine if a redirect occurred
69+
*
70+
* @param initialUrl The initial URL that is being scanned. Stored as the `url` property in the CoreInputDto
71+
* @param finalUrl The final URL after all redirects. Stored as the `name` property in the CoreResult
72+
* @param logger
73+
* @returns true if the initial URL and final URL are the same, false if they are different, and null if either is missing
74+
*/
6675
function isRedirect(initialUrl: string, finalUrl: string, logger: Logger): boolean {
67-
if (!initialUrl || !finalUrl) {
68-
logger.warn('One of the URLs is missing, cannot determine redirection.');
76+
if (!finalUrl) {
77+
logger.info('No final URL found, cannot compare.');
6978
return null;
7079
}
80+
7181
initialUrl = cleanUrl(initialUrl);
72-
finalUrl = cleanUrl(finalUrl);
73-
logger.info({redirectCheck: {initialUrl, finalUrl}}, `Comparing initial URL: ${initialUrl} with final URL: ${finalUrl}`);
74-
logger.info(`Redirect check is: ${initialUrl !== finalUrl}`);
75-
return initialUrl !== finalUrl;
82+
finalUrl = removeWww(cleanUrl(finalUrl));
83+
84+
if (initialUrl === finalUrl) {
85+
logger.info({redirectCheck: {initialUrl, finalUrl}}, 'Initial URL and final URL are the same.');
86+
return true;
87+
}
88+
if (initialUrl && finalUrl) {
89+
logger.info({redirectCheck: {initialUrl, finalUrl}}, 'Initial URL and final URL are different.');
90+
return false;
91+
}
92+
93+
return null;
7694
}

libs/database/src/core-results/core-result.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class CoreResultService {
122122
coreResult.targetUrlRedirects = result.urlScan.targetUrlRedirects;
123123

124124
// Site name - finalUrlBaseDomain with www. stripped
125-
coreResult.finalSiteName = coreResult.finalUrlBaseDomain ? coreResult.finalUrlBaseDomain.replace(/^www\./, '') : '';
125+
coreResult.finalSiteName = coreResult.finalUrlWebsite ? coreResult.finalUrlWebsite.replace(/^www\./, '') : '';
126126

127127
// USWDS scan
128128
coreResult.usaClasses = result.uswdsScan.usaClasses;

0 commit comments

Comments
 (0)