You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by mi...@apache.org on 2019/07/23 21:01:55 UTC

[trafficcontrol] branch master updated: Add TP test for DNSSEC keys (#3735)

This is an automated email from the ASF dual-hosted git repository.

mitchell852 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 0bfc7b7  Add TP test for DNSSEC keys (#3735)
0bfc7b7 is described below

commit 0bfc7b709595edb2ff34c0ef36bd1d11a9a0ef48
Author: Alex Luckerman <35...@users.noreply.github.com>
AuthorDate: Tue Jul 23 15:01:50 2019 -0600

    Add TP test for DNSSEC keys (#3735)
    
    * Add WIP DNSSEC/KSK TP test
    
    * Expand TP test for DNSSEC and KSK keys
    
    * Add async/await
---
 traffic_portal/test/end_to_end/CDNs/cdns-spec.js   | 55 ++++++++++++++++++++--
 traffic_portal/test/end_to_end/CDNs/pageData.js    | 12 ++++-
 .../test/end_to_end/common/commonFunctions.js      |  5 ++
 3 files changed, 66 insertions(+), 6 deletions(-)

diff --git a/traffic_portal/test/end_to_end/CDNs/cdns-spec.js b/traffic_portal/test/end_to_end/CDNs/cdns-spec.js
index 3fceb5f..d429f8c 100644
--- a/traffic_portal/test/end_to_end/CDNs/cdns-spec.js
+++ b/traffic_portal/test/end_to_end/CDNs/cdns-spec.js
@@ -25,7 +25,8 @@ describe('Traffic Portal CDNs Test Suite', function() {
 	const commonFunctions = new cfunc();
 	const myNewCDN = 'cdn-' + commonFunctions.shuffle('abcdefghijklmonpqrstuvwxyz0123456789');
 	const myDomainName = myNewCDN + '.com';
-	const mydnssec = 'true';
+	const mydnssec = false;
+	const myKskDays = commonFunctions.random(365);
 
 	it('should go to the CDNs page', function() {
 		console.log("Go to the CDNs page");
@@ -44,7 +45,7 @@ describe('Traffic Portal CDNs Test Suite', function() {
 		console.log("Filling out form, check create button is enabled and submit");
 		expect(pageData.createButton.isEnabled()).toBe(false);
 		pageData.dnssecEnabled.click();
-		pageData.dnssecEnabled.sendKeys(mydnssec);
+		pageData.dnssecEnabled.sendKeys(mydnssec.toString());
 		pageData.name.sendKeys(myNewCDN);
 		pageData.domainName.sendKeys(myDomainName);
 		expect(pageData.createButton.isEnabled()).toBe(true);
@@ -53,7 +54,7 @@ describe('Traffic Portal CDNs Test Suite', function() {
 	});
 
 	it('should verify the new CDN and then update CDN', function() {
-		console.log("verifying the new CDN and then updating CDN");
+		console.log("Verifying the new CDN and then updating CDN");
 		browser.sleep(250);
 		pageData.searchFilter.sendKeys(myNewCDN);
 		browser.sleep(250);
@@ -66,9 +67,53 @@ describe('Traffic Portal CDNs Test Suite', function() {
 		pageData.domainName.clear();
 		pageData.domainName.sendKeys(myDomainName + 'updated.com');
 		pageData.dnssecEnabled.click();
-		pageData.dnssecEnabled.sendKeys('false');
+		pageData.dnssecEnabled.sendKeys((!mydnssec).toString());
 		pageData.updateButton.click();
-		expect(pageData.domainName.getText() === myDomainName + 'updated.com');
+		expect(pageData.domainName.getAttribute('value')).toEqual(myDomainName + 'updated.com');
+	});
+
+	it('should generate DNSSEC keys', async function() {
+		console.log("Generating DNSSEC keys for the new CDN and and verifying their expiration date");
+		await pageData.moreButton.click();
+		await pageData.manageDnssecKeysButton.click();
+		expect(pageData.expirationDate.getAttribute('value')).toEqual('');
+		await pageData.generateDnssecKeysButton.click();
+		await pageData.regenerateButton.click();
+		expect(pageData.confirmButton.isEnabled()).toBe(false);
+		await pageData.confirmInput.sendKeys(myNewCDN);
+		expect(pageData.confirmButton.isEnabled()).toBe(true);
+		await pageData.confirmButton.click();
+		const expirationDate = pageData.expirationDate.getAttribute('value').then((expir) => {return Date.parse(expir + ' UTC');});
+		const calculatedExpirationDate = Date.now() + 365*24*60*60*1000;
+		expect(expirationDate).toBeCloseTo(calculatedExpirationDate, -4);
+	});
+
+	it('should regenerate DNSSEC keys', async function() {
+		console.log("Renerating DNSSEC keys and verifying their expiration date");
+		await pageData.regenerateDnssecKeysButton.click();
+		await pageData.kskExpirationDays.clear().sendKeys(myKskDays.toString());
+		await pageData.regenerateButton.click();
+		expect(pageData.confirmButton.isEnabled()).toBe(false);
+		await pageData.confirmInput.sendKeys(myNewCDN);
+		expect(pageData.confirmButton.isEnabled()).toBe(true);
+		await pageData.confirmButton.click();
+		const expirationDate = pageData.expirationDate.getAttribute('value').then((expir) => {return Date.parse(expir + ' UTC');});
+		const calculatedExpirationDate = Date.now() + myKskDays*24*60*60*1000;
+		expect(expirationDate).toBeCloseTo(calculatedExpirationDate, -4);
+	});
+
+	it('should regenerate KSK keys', async function() {
+		console.log("Regenerating KSK keys and verifying their expiration");
+		await pageData.regenerateKskButton.click();
+		await pageData.kskExpirationDays.clear().sendKeys(myKskDays.toString());
+		await pageData.generateButton.click();
+		expect(pageData.confirmButton.isEnabled()).toBe(false);
+		await pageData.confirmInput.sendKeys(myNewCDN);
+		expect(pageData.confirmButton.isEnabled()).toBe(true);
+		await pageData.confirmButton.click();
+		const expirationDate = pageData.expirationDate.getAttribute('value').then((expir) => {return Date.parse(expir + ' UTC');});
+		const calculatedExpirationDate = Date.now() + myKskDays*24*60*60*1000;
+		expect(expirationDate).toBeCloseTo(calculatedExpirationDate, -4);
 	});
 
 });
diff --git a/traffic_portal/test/end_to_end/CDNs/pageData.js b/traffic_portal/test/end_to_end/CDNs/pageData.js
index 687cbd8..5d97b64 100644
--- a/traffic_portal/test/end_to_end/CDNs/pageData.js
+++ b/traffic_portal/test/end_to_end/CDNs/pageData.js
@@ -25,6 +25,16 @@ module.exports = function(){
 	this.deleteButton=element(by.buttonText('Delete'));
 	this.updateButton=element(by.buttonText('Update'));
 	this.searchFilter=element(by.id('cdnsTable_filter')).element(by.css('label')).element(by.css('input'));
-	this.confirmWithNameInput=element(by.name('confirmWithNameInput'));
 	this.deletePermanentlyButton=element(by.buttonText('Delete Permanently'));
+	this.moreButton=element(by.buttonText('More'));
+	this.manageDnssecKeysButton=element(by.linkText('Manage DNSSEC Keys'));
+	this.generateDnssecKeysButton=element(by.buttonText('Generate DNSSEC Keys'));
+	this.kskExpirationDays=element(by.name('kskExpirationDays'));
+	this.regenerateButton=element(by.buttonText('Regenerate'));
+	this.confirmInput=element(by.name('confirmEnterForm')).element(by.tagName('input'));
+	this.confirmButton=element(by.buttonText('Confirm'));
+	this.expirationDate=element(by.name('expirationDate'));
+	this.regenerateDnssecKeysButton=element(by.buttonText('Regenerate DNSSEC Keys'));
+	this.regenerateKskButton=element(by.buttonText('Regenerate KSK'));
+	this.generateButton=element(by.buttonText('Generate'));
 };
\ No newline at end of file
diff --git a/traffic_portal/test/end_to_end/common/commonFunctions.js b/traffic_portal/test/end_to_end/common/commonFunctions.js
index ce22325..d56d1b5 100644
--- a/traffic_portal/test/end_to_end/common/commonFunctions.js
+++ b/traffic_portal/test/end_to_end/common/commonFunctions.js
@@ -39,4 +39,9 @@ module.exports = function() {
 			}
 		).join("");
 	}
+
+	this.random = (max) => {
+		return Math.round(Math.random() * max);   
+	}
+
 };