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();