Skip to content

Commit d2a6dbf

Browse files
authored
Merge pull request #1972 from muzzamilinovaqo/feature/plugin-aws-route53-in-use
aws route53 in use
2 parents 33af4aa + f8aac0b commit d2a6dbf

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed

exports.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,7 @@ module.exports = {
432432

433433
'domainAutoRenew' : require(__dirname + '/plugins/aws/route53/domainAutoRenew.js'),
434434
'domainExpiry' : require(__dirname + '/plugins/aws/route53/domainExpiry.js'),
435+
'route53InUse' : require(__dirname + '/plugins/aws/route53/route53InUse.js'),
435436
'domainTransferLock' : require(__dirname + '/plugins/aws/route53/domainTransferLock.js'),
436437
'danglingDnsRecords' : require(__dirname + '/plugins/aws/route53/danglingDnsRecords.js'),
437438
'privacyProtection' : require(__dirname + '/plugins/aws/route53/privacyProtection.js'),
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
var helpers = require('../../../helpers/aws');
2+
3+
module.exports = {
4+
title: 'Route 53 In Use',
5+
category: 'Route53',
6+
domain: 'Content Delivery',
7+
severity: 'Low',
8+
description: 'Ensure that AWS Route 53 Domain Name System (DNS) service is used within your AWS account.',
9+
more_info: 'AWS Route 53 simplifies DNS management, ensuring reliable and efficient routing for end users to your website through globally-dispersed DNS servers, enhancing accessibility and performance. It facilitates domain registration, DNS routing, and health checking, allowing seamless management of your web infrastructure.',
10+
link: 'https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html',
11+
recommended_action: 'Register your domain with AWS Route 53 for seamless DNS management.',
12+
apis: ['Route53:listHostedZones'],
13+
realtime_triggers: ['route53:CreateHostedZone','route53:DeleteHostedZone'],
14+
15+
run: function(cache, settings, callback) {
16+
var results = [];
17+
var source = {};
18+
var region = helpers.defaultRegion(settings);
19+
20+
var listHostedZones = helpers.addSource(cache, source,
21+
['route53', 'listHostedZones', region]);
22+
23+
if (!listHostedZones) return callback(null, results, source);
24+
25+
if (listHostedZones.err || !listHostedZones.data) {
26+
helpers.addResult(results, 3,
27+
`Unable to query for hosted zones: ${helpers.addError(listHostedZones)}`,
28+
region);
29+
return callback(null, results, source);
30+
}
31+
32+
if (!listHostedZones.data.length) {
33+
helpers.addResult(results, 2, 'Route53 DNS service is not in use', region);
34+
} else {
35+
helpers.addResult(results, 0, 'Route53 DNS service is in use', region);
36+
}
37+
38+
return callback(null, results, source);
39+
}
40+
};
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
var expect = require('chai').expect;
2+
var route53InUse = require('./route53InUse');
3+
4+
const createCache = (listHostedZonesData, error = null) => {
5+
return {
6+
route53: {
7+
listHostedZones: {
8+
'us-east-1': {
9+
err: error,
10+
data: listHostedZonesData
11+
}
12+
}
13+
}
14+
};
15+
};
16+
17+
describe('Route 53 In Use', function () {
18+
describe('run', function () {
19+
it('should return passing result if Route53 DNS service is in use', function (done) {
20+
const callback = (err, results) => {
21+
expect(results.length).to.equal(1);
22+
expect(results[0].status).to.equal(0);
23+
expect(results[0].message).to.include('Route53 DNS service is in use');
24+
done();
25+
};
26+
27+
const cache = createCache([
28+
{
29+
"Id": "/hostedzone/Z0959845393J2LOUSNVSK",
30+
"Name": "testfr.com.",
31+
"CallerReference": "d042e53d-7b8b-4974-94e9-8305af0c6acb",
32+
"Config": {
33+
"Comment": "",
34+
"PrivateZone": false
35+
},
36+
"ResourceRecordSetCount": 4
37+
}
38+
]);
39+
40+
route53InUse.run(cache, {}, callback);
41+
});
42+
43+
it('should return failing result if Route53 DNS service is not in use', function (done) {
44+
const callback = (err, results) => {
45+
expect(results.length).to.equal(1);
46+
expect(results[0].status).to.equal(2);
47+
expect(results[0].message).to.include('Route53 DNS service is not in use');
48+
done();
49+
};
50+
51+
const cache = createCache([]);
52+
53+
route53InUse.run(cache, {}, callback);
54+
});
55+
56+
it('should return error result if unable to query for hosted zones', function (done) {
57+
const errorMessage = 'Error occurred while querying hosted zones';
58+
const callback = (err, results) => {
59+
expect(results.length).to.equal(1);
60+
expect(results[0].status).to.equal(3);
61+
expect(results[0].message).to.include(`Unable to query for hosted zones: ${errorMessage}`);
62+
done();
63+
};
64+
65+
const cache = createCache([], errorMessage);
66+
67+
route53InUse.run(cache, {}, callback);
68+
});
69+
});
70+
});

0 commit comments

Comments
 (0)