You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by oc...@apache.org on 2021/02/26 16:20:22 UTC

[trafficcontrol] branch master updated: Add TP login test and fix login function (#5579)

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

ocket8888 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 d0b2f8a  Add TP login test and fix login function (#5579)
d0b2f8a is described below

commit d0b2f8ae59a11f19afed87e18eb589d60a8a8ae0
Author: dpham <ph...@yahoo.com>
AuthorDate: Fri Feb 26 09:20:08 2021 -0700

    Add TP login test and fix login function (#5579)
    
    * Add login test and fix login function
    
    * Fix issues
    
    * Add new line
    
    Co-authored-by: Pham, Dandy (Contractor) <Da...@comcast.com>
---
 .../test/integration/Data/Login/TestCases.json     | 23 +++++++++++++
 .../test/integration/PageObjects/LoginPage.po.ts   | 38 ++++++++++++++-------
 traffic_portal/test/integration/specs/ASNs.spec.ts |  4 +--
 traffic_portal/test/integration/specs/CDNs.spec.ts |  4 +--
 .../test/integration/specs/CacheGroup.spec.ts      |  6 ++--
 .../test/integration/specs/Coordinates.spec.ts     |  4 +--
 .../test/integration/specs/Divisions.spec.ts       |  4 +--
 .../test/integration/specs/Login.spec.ts           | 39 ++++++++++++++++++++++
 .../test/integration/specs/Origins.spec.ts         |  6 ++--
 .../test/integration/specs/Parameters.spec.ts      |  4 +--
 .../test/integration/specs/PhysLocations.spec.ts   |  4 +--
 .../test/integration/specs/Profiles.spec.ts        |  6 ++--
 .../test/integration/specs/Regions.spec.ts         |  4 +--
 .../integration/specs/ServerCapabilities.spec.ts   |  4 +--
 .../specs/ServerServerCapabilities.spec.ts         |  4 +--
 .../test/integration/specs/Servers.spec.ts         |  4 +--
 .../integration/specs/ServiceCategories.spec.ts    |  4 +--
 .../test/integration/specs/Statuses.spec.ts        |  4 +--
 .../test/integration/specs/Types.spec.ts           |  4 +--
 19 files changed, 123 insertions(+), 47 deletions(-)

diff --git a/traffic_portal/test/integration/Data/Login/TestCases.json b/traffic_portal/test/integration/Data/Login/TestCases.json
new file mode 100644
index 0000000..ed90ab5
--- /dev/null
+++ b/traffic_portal/test/integration/Data/Login/TestCases.json
@@ -0,0 +1,23 @@
+{
+    "LoginTest": [
+        {
+            "Login": [
+                {
+                    "description": "cannot login with wrong password",
+                    "username": "TPAdmin",
+                    "password": "wrong",
+                    "validationMessage": "Invalid username or password."
+                },
+                {
+                    "description": "cannot login with wrong username",
+                    "username": "wrong",
+                    "password": "pa$$word",
+                    "validationMessage": "Invalid username or password."
+                }
+            ]
+        }
+    ]
+}
+
+           
+
diff --git a/traffic_portal/test/integration/PageObjects/LoginPage.po.ts b/traffic_portal/test/integration/PageObjects/LoginPage.po.ts
index 6cb5c78..b3c4201 100644
--- a/traffic_portal/test/integration/PageObjects/LoginPage.po.ts
+++ b/traffic_portal/test/integration/PageObjects/LoginPage.po.ts
@@ -16,37 +16,51 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { ElementFinder, browser, by, element, ExpectedConditions } from 'protractor'
+import { browser, by, element} from 'protractor'
 import { BasePage } from './BasePage.po'
-import { timeout } from 'q'
+
+interface LoginData {
+    password: string;
+    username: string;
+    validationMessage: string;
+}
+
 export class LoginPage extends BasePage{
     private txtUserName = element(by.id("loginUsername"))
     private txtPassword = element(by.id("loginPass"))
     private btnLogin = element(by.name("loginSubmit"))
     private lnkResetPassword= element (by.xpath("//button[text()='Reset Password']"))
     private lblUserName = element(by.xpath("//span[@id='headerUsername']"))
-
     private config = require('../config');
     private randomize = this.config.randomize;
-
-    async Login(userName: string, password: string ){
-        if(userName == 'admin'){
-            await this.txtUserName.sendKeys(userName)
-            await this.txtPassword.sendKeys(password)
+    
+    
+    async Login(login:LoginData){
+        let result = false;
+        const basePage = new BasePage();
+        if(login.username === 'admin'){
+            await this.txtUserName.sendKeys(login.username)
+            await this.txtPassword.sendKeys(login.password)
             await browser.actions().mouseMove(this.btnLogin).perform();
             await browser.actions().click(this.btnLogin).perform();    
         }else{
-            await this.txtUserName.sendKeys(userName+this.randomize)
-            await this.txtPassword.sendKeys(password)
+            await this.txtUserName.sendKeys(login.username+this.randomize)
+            await this.txtPassword.sendKeys(login.password)
             await browser.actions().mouseMove(this.btnLogin).perform();
             await browser.actions().click(this.btnLogin).perform();    
         }
+        if(await browser.getCurrentUrl() === browser.params.baseUrl + "#!/login"){
+            result = await basePage.GetOutputMessage().then(value => value === login.validationMessage);
+        }else{
+            result = true;
+        }
+        return result;
     }
     ClickResetPassword(){
         this.lnkResetPassword.click()
     }
-    async CheckUserName(userName: string) {
-        if(await this.lblUserName.getText() == 'admin' || await this.lblUserName.getText() == userName+this.randomize){
+    async CheckUserName(login) {
+        if(await this.lblUserName.getText() === 'admin' || await this.lblUserName.getText() === login.username+this.randomize){
             return true;
         }else{
             return false;   
diff --git a/traffic_portal/test/integration/specs/ASNs.spec.ts b/traffic_portal/test/integration/specs/ASNs.spec.ts
index 24f372f..1f959a5 100644
--- a/traffic_portal/test/integration/specs/ASNs.spec.ts
+++ b/traffic_portal/test/integration/specs/ASNs.spec.ts
@@ -48,8 +48,8 @@ using(testData.ASNs, async function(asnsData){
         describe('Traffic Portal - ASNs - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open asns page', async function(){
                 await asnsPage.OpenTopologyMenu();
diff --git a/traffic_portal/test/integration/specs/CDNs.spec.ts b/traffic_portal/test/integration/specs/CDNs.spec.ts
index 56c341b..9067192 100644
--- a/traffic_portal/test/integration/specs/CDNs.spec.ts
+++ b/traffic_portal/test/integration/specs/CDNs.spec.ts
@@ -38,8 +38,8 @@ using(testData.CDN, async function(cdnsData){
         describe('Traffic Portal - CDN - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open CDN page', async function(){
                 await cdnsPage.OpenCDNsPage();
diff --git a/traffic_portal/test/integration/specs/CacheGroup.spec.ts b/traffic_portal/test/integration/specs/CacheGroup.spec.ts
index 7fdf292..89b1948 100644
--- a/traffic_portal/test/integration/specs/CacheGroup.spec.ts
+++ b/traffic_portal/test/integration/specs/CacheGroup.spec.ts
@@ -35,10 +35,10 @@ let cacheGroupPage = new CacheGroupPage();
 using(testData.CacheGroup, function (cacheGroupData) {
     describe('Traffic Portal - CacheGroup - ' + cacheGroupData.TestName, function () {
         using(cacheGroupData.Login, function (login) {
-            it('can login', async function () {
+            it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open cache group page', async function () {
                 await cacheGroupPage.OpenTopologyMenu();
diff --git a/traffic_portal/test/integration/specs/Coordinates.spec.ts b/traffic_portal/test/integration/specs/Coordinates.spec.ts
index 4849625..e452d44 100644
--- a/traffic_portal/test/integration/specs/Coordinates.spec.ts
+++ b/traffic_portal/test/integration/specs/Coordinates.spec.ts
@@ -50,8 +50,8 @@ using(testData.Coordinates, async function(coordinatesData){
 
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open coordinates page', async function(){
                 await coordinatesPage.OpenTopologyMenu();
diff --git a/traffic_portal/test/integration/specs/Divisions.spec.ts b/traffic_portal/test/integration/specs/Divisions.spec.ts
index f83f5f5..0734865 100644
--- a/traffic_portal/test/integration/specs/Divisions.spec.ts
+++ b/traffic_portal/test/integration/specs/Divisions.spec.ts
@@ -48,8 +48,8 @@ using(testData.Divisions, async function(divisionsData){
         describe('Traffic Portal - Divisions - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open divisions page', async function(){
                 await divisionsPage.OpenTopologyMenu();
diff --git a/traffic_portal/test/integration/specs/Login.spec.ts b/traffic_portal/test/integration/specs/Login.spec.ts
new file mode 100644
index 0000000..869e118
--- /dev/null
+++ b/traffic_portal/test/integration/specs/Login.spec.ts
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { browser } from 'protractor';
+import { LoginPage } from '../PageObjects/LoginPage.po';
+import  * as using  from "jasmine-data-provider";
+import { readFileSync } from "fs"
+
+const filename = 'Data/Login/TestCases.json';
+const testData = JSON.parse(readFileSync(filename,'utf-8'));
+const loginPage = new LoginPage();
+
+using(testData.LoginTest, async function(loginData){
+    using(loginData.Login, function(login){
+        describe('Traffic Portal - Login - '+ login.description, function(){
+            it('can open login page', async function(){
+                browser.get(browser.params.baseUrl);
+            })
+            it(login.description, async function(){
+                expect(await loginPage.Login(login)).toBeTruthy();
+            })
+        })
+    })
+})
diff --git a/traffic_portal/test/integration/specs/Origins.spec.ts b/traffic_portal/test/integration/specs/Origins.spec.ts
index 5c27ce8..7af65f2 100644
--- a/traffic_portal/test/integration/specs/Origins.spec.ts
+++ b/traffic_portal/test/integration/specs/Origins.spec.ts
@@ -45,10 +45,10 @@ describe('Setup Origin Delivery Service', function () {
 using(testData.Origins, async function (originsData) {
     using(originsData.Login, function (login) {
         describe('Traffic Portal - Origins - ' + login.description, function () {
-            it('can login', async function () {
+            it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open origins page', async function () {
                 await originsPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/Parameters.spec.ts b/traffic_portal/test/integration/specs/Parameters.spec.ts
index 56c3fd6..651e5be 100644
--- a/traffic_portal/test/integration/specs/Parameters.spec.ts
+++ b/traffic_portal/test/integration/specs/Parameters.spec.ts
@@ -50,8 +50,8 @@ using(testData.Parameters, async function(parametersData){
 
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open parameters page', async function(){
                 await parametersPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/PhysLocations.spec.ts b/traffic_portal/test/integration/specs/PhysLocations.spec.ts
index 85fc787..673c15b 100644
--- a/traffic_portal/test/integration/specs/PhysLocations.spec.ts
+++ b/traffic_portal/test/integration/specs/PhysLocations.spec.ts
@@ -51,8 +51,8 @@ using(testData.PhysLocations, async function(physlocationsData){
 
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open parameters page', async function(){
                 await physlocationsPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/Profiles.spec.ts b/traffic_portal/test/integration/specs/Profiles.spec.ts
index 62541e0..2ee348b 100644
--- a/traffic_portal/test/integration/specs/Profiles.spec.ts
+++ b/traffic_portal/test/integration/specs/Profiles.spec.ts
@@ -46,10 +46,10 @@ describe('Setup API for Profiles', function () {
 using(testData.Profiles, async function(profilesData){
     using(profilesData.Login, function(login){
         describe('Traffic Portal - Profiles - ' + login.description, function(){
-            it('can login', async function () {
+            it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open profiles page', async function () {
                 await profilesPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/Regions.spec.ts b/traffic_portal/test/integration/specs/Regions.spec.ts
index 478b5e0..2567811 100644
--- a/traffic_portal/test/integration/specs/Regions.spec.ts
+++ b/traffic_portal/test/integration/specs/Regions.spec.ts
@@ -48,8 +48,8 @@ using(testData.Regions, async function(regionsData){
         describe('Traffic Portal - Regions - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open regions page', async function(){
                 await regionsPage.OpenTopologyMenu();
diff --git a/traffic_portal/test/integration/specs/ServerCapabilities.spec.ts b/traffic_portal/test/integration/specs/ServerCapabilities.spec.ts
index 9b2afc4..e75501f 100644
--- a/traffic_portal/test/integration/specs/ServerCapabilities.spec.ts
+++ b/traffic_portal/test/integration/specs/ServerCapabilities.spec.ts
@@ -36,8 +36,8 @@ using(testData.ServerCapabilities, function(serverCapabilitiesData) {
         using(serverCapabilitiesData.Login, function(login) {
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open server capability page', async function() {
                 await serverCapabilitiesPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts b/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts
index 472f90f..4c9b8bd 100644
--- a/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts
+++ b/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts
@@ -49,8 +49,8 @@ using(testData.ServerServerCapabilities, async function(serverServerCapData){
         describe('Traffic Portal - Server Server Capabilities - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open server page', async function(){
                 await serverPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/Servers.spec.ts b/traffic_portal/test/integration/specs/Servers.spec.ts
index 5ed0d9d..3726946 100644
--- a/traffic_portal/test/integration/specs/Servers.spec.ts
+++ b/traffic_portal/test/integration/specs/Servers.spec.ts
@@ -48,8 +48,8 @@ using(testData.Servers, async function(serversData){
         describe('Traffic Portal - Servers - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open servers page', async function(){
                 await serversPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/ServiceCategories.spec.ts b/traffic_portal/test/integration/specs/ServiceCategories.spec.ts
index 68da2b2..2793bcb 100644
--- a/traffic_portal/test/integration/specs/ServiceCategories.spec.ts
+++ b/traffic_portal/test/integration/specs/ServiceCategories.spec.ts
@@ -47,8 +47,8 @@ using(testData.ServiceCategories, async function(serviceCategoriesData){
         describe('Traffic Portal - ServiceCategories - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open service categories page', async function(){
                 await serviceCategoriesPage.OpenServicesMenu();
diff --git a/traffic_portal/test/integration/specs/Statuses.spec.ts b/traffic_portal/test/integration/specs/Statuses.spec.ts
index 01f3da5..c596219 100644
--- a/traffic_portal/test/integration/specs/Statuses.spec.ts
+++ b/traffic_portal/test/integration/specs/Statuses.spec.ts
@@ -47,8 +47,8 @@ using(testData.Statuses, async function(statusesData){
         describe('Traffic Portal - Statuses - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open statuses page', async function(){
                 await statusesPage.OpenConfigureMenu();
diff --git a/traffic_portal/test/integration/specs/Types.spec.ts b/traffic_portal/test/integration/specs/Types.spec.ts
index f2001cf..a5e4d46 100644
--- a/traffic_portal/test/integration/specs/Types.spec.ts
+++ b/traffic_portal/test/integration/specs/Types.spec.ts
@@ -47,8 +47,8 @@ using(testData.Types, async function(typesData){
         describe('Traffic Portal - Types - ' + login.description, function(){
             it('can login', async function(){
                 browser.get(browser.params.baseUrl);
-                await loginPage.Login(login.username, login.password);
-                expect(await loginPage.CheckUserName(login.username)).toBeTruthy();
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBeTruthy();
             })
             it('can open types page', async function(){
                 await typesPage.OpenConfigureMenu();