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 c16b91b  Migrate Delivery Service test from e2e to integration suite 
TP  (#5929)
c16b91b is described below

commit c16b91b598f01b4456bf9720187dfbfb40d67a8a
Author: dpham <[email protected]>
AuthorDate: Tue Jun 22 17:03:17 2021 -0600

    Migrate Delivery Service test from e2e to integration suite TP  (#5929)
    
    * Add base delivery service
    
    * Add test
    
    * Fix attribute and add more test
    
    * Fix and add all test
    
    * add log out function
    
    * Update test
    
    * Retest
    
    * update opearation role
    
    * Update newline
    
    * Revert "update opearation role"
    
    This reverts commit aa9e814ece4db16b21aa2b49ee3dd8eaa4a9df57.
    
    * Maximize browser and add operation
    
    * Add await and close menu tab bug
    
    * Fix pr request change
    
    * change button attribute link
    
    * Retest
    
    Co-authored-by: Pham, Dandy (Contractor) <[email protected]>
---
 .../test/integration/Data/deliveryservices.ts      | 496 +++++++++++++++++++++
 .../PageObjects/DeliveryServicePage.po.ts          | 219 +++++++++
 traffic_portal/test/integration/config.ts          |   2 +-
 .../integration/specs/DeliveryServices.spec.ts     | 100 +++++
 4 files changed, 816 insertions(+), 1 deletion(-)

diff --git a/traffic_portal/test/integration/Data/deliveryservices.ts 
b/traffic_portal/test/integration/Data/deliveryservices.ts
new file mode 100644
index 0000000..edac646
--- /dev/null
+++ b/traffic_portal/test/integration/Data/deliveryservices.ts
@@ -0,0 +1,496 @@
+/*
+ * 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.
+ */
+export const deliveryservices = {
+    cleanup: [
+               {
+                       action: "DeleteServers",
+                       route: "/servers",
+                       method: "delete",
+                       data: [
+                               {
+                                       route: "/servers/",
+                                       getRequest: [
+                                               {
+                                                       route: "/servers",
+                                                       queryKey: "hostName",
+                                                       queryValue: "DSTest",
+                                                       replace: "route"
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+               {
+                       action: "DeletePhysLocations",
+                       route: "/phys_locations",
+                       method: "delete",
+                       data: [
+                               {
+                                       route: "/phys_locations/",
+                                       getRequest: [
+                                               {
+                                                       route: 
"/phys_locations",
+                                                       queryKey: "name",
+                                                       queryValue: "DSTest",
+                                                       replace: "route"
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+               {
+                       action: "DeleteRegions",
+                       route: "/regions",
+                       method: "delete",
+                       data: [
+                               {
+                                       route: "/regions?name=DSTest"
+                               }
+                       ]
+               },
+               {
+                       action: "DeleteDivisions",
+                       route: "/divisions",
+                       method: "delete",
+                       data: [
+                               {
+                                       route: "/divisions/",
+                                       getRequest: [
+                                               {
+                                                       route: "/divisions",
+                                                       queryKey: "name",
+                                                       queryValue: "DSTest",
+                                                       replace: "route"
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+        {
+                       action: "DeleteServerCapabilities",
+                       route: "/server_capabilities",
+                       method: "delete",
+                       data: [
+                               {
+                                       route: 
"/server_capabilities?name=DSTestCap"
+                               }
+                       ]
+               },
+        {
+                       action: "DeleteDeliveryServices",
+                       route: "/deliveryservices",
+                       method: "delete",
+                       data: [
+                               {
+                                       route: "/deliveryservices/",
+                                       getRequest: [
+                                               {
+                                                       route: 
"/deliveryservices",
+                                                       queryKey: "xmlId",
+                                                       queryValue: "dstestro1",
+                                                       replace: "route"
+                                               }
+                                       ]
+                               }
+                       ]
+               }
+       ],
+    setup: [
+        {
+                       action: "CreateDeliveryServices",
+                       route: "/deliveryservices",
+                       method: "post",
+                       data: [
+                               {
+                                       active: true,
+                                       cdnId: 0,
+                                       displayName: "DSTestReadOnly",
+                                       dscp: 0,
+                                       geoLimit: 0,
+                                       geoProvider: 0,
+                                       initialDispersion: 1,
+                                       ipv6RoutingEnabled: true,
+                                       logsEnabled: false,
+                                       missLat: 41.881944,
+                                       missLong: -87.627778,
+                                       multiSiteOrigin: false,
+                                       orgServerFqdn: 
"http://origin.infra.ciab.test";,
+                                       protocol: 0,
+                                       qstringIgnore: 0,
+                                       rangeRequestHandling: 0,
+                                       regionalGeoBlocking: false,
+                                       tenantId: 0,
+                                       typeId: 1,
+                                       xmlId: "dstestro1",
+                                       getRequest: [
+                                               {
+                                                       route: "/tenants",
+                                                       queryKey: "name",
+                                                       queryValue: 
"tenantSame",
+                                                       replace: "tenantId"
+                                               },
+                                               {
+                                                       route: "/cdns",
+                                                       queryKey: "name",
+                                                       queryValue: "dummycdn",
+                                                       replace: "cdnId"
+                                               }
+                                       ]
+                               }
+            ]
+        },
+        {
+                       action: "CreateServerCapabilities",
+                       route: "/server_capabilities",
+                       method: "post",
+                       data: [
+                               {
+                                       name: "DSTestCap"
+                               }
+                       ]
+               },
+        {
+                       action: "CreateDivisions",
+                       route: "/divisions",
+                       method: "post",
+                       data: [
+                               {
+                                       name: "DSTest"
+                               }
+                       ]
+               },
+               {
+                       action: "CreateRegions",
+                       route: "/regions",
+                       method: "post",
+                       data: [
+                               {
+                                       name: "DSTest",
+                                       division: "4",
+                                       divisionName: "DSTest",
+                                       getRequest: [
+                                               {
+                                                       route: "/divisions",
+                                                       queryKey: "name",
+                                                       queryValue: "DSTest",
+                                                       replace: "division"
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+               {
+                       action: "CreatePhysLocation",
+                       route: "/phys_locations",
+                       method: "post",
+                       data: [
+                               {
+                                       address: "Buckingham Palace",
+                                       city: "London",
+                                       comments: "Buckingham Palace",
+                                       email: 
"[email protected]",
+                                       name: "DSTest",
+                                       phone: "0-843-816-6276",
+                                       poc: "Her Majesty The Queen Elizabeth 
Alexandra Mary Windsor II",
+                                       regionId: 3,
+                                       shortName: "tpphys2",
+                                       state: "NA",
+                                       zip: "99999",
+                                       getRequest: [
+                                               {
+                                                       route: "/regions",
+                                                       queryKey: "name",
+                                                       queryValue: "DSTest",
+                                                       replace: "regionId"
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+        {
+                       action: "CreateServers",
+                       route: "/servers",
+                       method: "post",
+                       data: [
+                               {
+                                       cachegroupId: 0,
+                                       cdnId: 0,
+                                       domainName: "test.net",
+                                       hostName: "DSTest",
+                                       httpsPort: 443,
+                                       iloIpAddress: "",
+                                       iloIpGateway: "",
+                                       iloIpNetmask: "",
+                                       iloPassword: "",
+                                       iloUsername: "",
+                                       interfaces: [
+                                               {
+                                                       ipAddresses: [
+                                                               {
+                                                                       
address: "::1",
+                                                                       
gateway: "::2",
+                                                                       
serviceAddress: true
+                                                               }
+                                                       ],
+                                                       maxBandwidth: null,
+                                                       monitor: true,
+                                                       mtu: 1500,
+                                                       name: "eth0"
+                                               }
+                                       ],
+                                       interfaceMtu: 1500,
+                                       interfaceName: "eth0",
+                                       ip6Address: "::1",
+                                       ip6Gateway: "::2",
+                                       ipAddress: "0.0.0.1",
+                                       ipGateway: "0.0.0.2",
+                                       ipNetmask: "255.255.255.0",
+                                       mgmtIpAddress: "",
+                                       mgmtIpGateway: "",
+                                       mgmtIpNetmask: "",
+                                       offlineReason: "",
+                                       physLocationId: 0,
+                                       profileId: 0,
+                                       routerHostName: "",
+                                       routerPortName: "",
+                                       statusId: 3,
+                                       tcpPort: 80,
+                                       typeId: 11,
+                                       updPending: false,
+                                       getRequest: [
+                                               {
+                                                       route: 
"/phys_locations",
+                                                       queryKey: "name",
+                                                       queryValue: "DSTest",
+                                                       replace: 
"physLocationId"
+                                               },
+                                               {
+                                                       route: "/cdns",
+                                                       queryKey: "name",
+                                                       queryValue: "dummycdn",
+                                                       replace: "cdnId"
+                                               },
+                                               {
+                                                       route: "/cachegroups",
+                                                       queryKey: "name",
+                                                       queryValue: "testCG",
+                                                       replace: "cachegroupId"
+                                               },
+                                               {
+                                                       route: "/profiles",
+                                                       queryKey: "name",
+                                                       queryValue: 
"testProfile",
+                                                       replace: "profileId"
+                                               }
+                                       ]
+                               }
+            ]
+        }
+    ],
+    tests: [
+        {
+            logins: [
+                {
+                                       description: "Admin Role",
+                                       username: "TPAdmin",
+                                       password: "pa$$word"
+                               }
+            ],
+            add: [
+                {
+                    description: "create ANY_MAP delivery service",
+                    Name: "tpdservice1",
+                    Type: "ANY_MAP",
+                    validationMessage: "Delivery Service [ tpdservice1 ] 
created"
+                },
+                {
+                    description: "create DNS delivery service",
+                    Name: "tpdservice2",
+                    Type: "DNS",
+                    validationMessage: "Delivery Service [ tpdservice2 ] 
created"
+                },
+                {
+                    description: "create STEERING delivery service",
+                    Name: "tpdservice3",
+                    Type: "STEERING",
+                    validationMessage: "Delivery Service [ tpdservice3 ] 
created"
+                }
+            ],
+            update: [
+                {
+                    description: "update delivery service display name",
+                    Name: "tpdservice1",
+                    NewName: "TPServiceNew1",
+                    validationMessage: "Delivery Service [ tpdservice1 ] 
updated"
+                }
+            ],
+            assignserver: [
+                {
+                    description: "assign server to delivery service",
+                    ServerName: "DSTest",
+                    DSName: "TPServiceNew1",
+                    validationMessage: "server assignments complete"
+                }
+            ],
+            assignrequiredcapabilities: [
+                {
+                    description: "assign required capabilities to delivery 
service",
+                    RCName: "DSTestCap",
+                    DSName: "tpdservice2",
+                    validationMessage: "deliveryservice.RequiredCapability was 
created."
+                }
+            ],
+            remove: [
+                {
+                    description: "delete a delivery service",
+                    Name: "tpdservice1",
+                    validationMessage: "Delivery service [ tpdservice1 ] 
deleted"
+                },
+                {
+                    description: "delete a delivery service",
+                    Name: "tpdservice2",
+                    validationMessage: "Delivery service [ tpdservice2 ] 
deleted"
+                },
+                {
+                    description: "delete a delivery service",
+                    Name: "tpdservice3",
+                    validationMessage: "Delivery service [ tpdservice3 ] 
deleted"
+                }
+            ]
+        },
+        {
+            logins: [
+                {
+                                       description: "Read Only Role",
+                                       username: "TPReadOnly",
+                                       password: "pa$$word"
+                               }
+            ],
+            add: [
+                {
+                    description: "create ANY_MAP delivery service",
+                    Name: "tpdservice1",
+                    Type: "ANY_MAP",
+                    validationMessage: "Forbidden."
+                }
+            ],
+            update: [
+                {
+                    description: "update delivery service display name",
+                    Name: "dstestro1",
+                    NewName: "TPServiceNew1",
+                    validationMessage: "Forbidden."
+                }
+            ],
+            assignserver: [
+                {
+                    description: "assign server to delivery service",
+                    ServerName: "DSTest",
+                    DSName: "dstestro1",
+                    validationMessage: "Forbidden."
+                }
+            ],
+            assignrequiredcapabilities: [
+                {
+                    description: "assign required capabilities to delivery 
service",
+                    RCName: "DSTestCap",
+                    DSName: "dstestro1",
+                    validationMessage: "Forbidden."
+                }
+            ],
+            remove: [
+                {
+                    description: "delete a delivery service",
+                    Name: "dstestro1",
+                    validationMessage: "Forbidden."
+                }
+            ]
+        },
+               {
+            logins: [
+                {
+                                       description: "Operation Role",
+                                       username: "TPOperator",
+                                       password: "pa$$word"
+                               }
+            ],
+            add: [
+                {
+                    description: "create ANY_MAP delivery service",
+                    Name: "optpdservice1",
+                    Type: "ANY_MAP",
+                    validationMessage: "Delivery Service [ optpdservice1 ] 
created"
+                },
+                {
+                    description: "create DNS delivery service",
+                    Name: "optpdservice2",
+                    Type: "DNS",
+                    validationMessage: "Delivery Service [ optpdservice2 ] 
created"
+                },
+                {
+                    description: "create STEERING delivery service",
+                    Name: "optpdservice3",
+                    Type: "STEERING",
+                    validationMessage: "Delivery Service [ optpdservice3 ] 
created"
+                }
+            ],
+            update: [
+                {
+                    description: "update delivery service display name",
+                    Name: "optpdservice1",
+                    NewName: "opTPServiceNew1",
+                    validationMessage: "Delivery Service [ optpdservice1 ] 
updated"
+                }
+            ],
+            assignserver: [
+                {
+                    description: "assign server to delivery service",
+                    ServerName: "DSTest",
+                    DSName: "opTPServiceNew1",
+                    validationMessage: "server assignments complete"
+                }
+            ],
+            assignrequiredcapabilities: [
+                {
+                    description: "assign required capabilities to delivery 
service",
+                    RCName: "DSTestCap",
+                    DSName: "optpdservice2",
+                    validationMessage: "deliveryservice.RequiredCapability was 
created."
+                }
+            ],
+            remove: [
+                {
+                    description: "delete a delivery service",
+                    Name: "optpdservice1",
+                    validationMessage: "Delivery service [ optpdservice1 ] 
deleted"
+                },
+                {
+                    description: "delete a delivery service",
+                    Name: "optpdservice2",
+                    validationMessage: "Delivery service [ optpdservice2 ] 
deleted"
+                },
+                {
+                    description: "delete a delivery service",
+                    Name: "optpdservice3",
+                    validationMessage: "Delivery service [ optpdservice3 ] 
deleted"
+                }
+            ]
+        }
+    ]
+}
diff --git 
a/traffic_portal/test/integration/PageObjects/DeliveryServicePage.po.ts 
b/traffic_portal/test/integration/PageObjects/DeliveryServicePage.po.ts
new file mode 100644
index 0000000..2d44d84
--- /dev/null
+++ b/traffic_portal/test/integration/PageObjects/DeliveryServicePage.po.ts
@@ -0,0 +1,219 @@
+/*
+ * 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 { BasePage } from './BasePage.po';
+import { randomize } from "../config";
+import { SideNavigationPage } from './SideNavigationPage.po';
+import { by, element } from 'protractor';
+
+interface DeliveryServices {
+  Type: string;
+  Name: string;
+  validationMessage: string;
+}
+interface UpdateDeliveryService {
+  description: string;
+  Name: string;
+  NewName: string;
+  validationMessage: string;
+}
+interface DeleteDeliveryService {
+  Name: string;
+  validationMessage: string;
+}
+interface AssignServer {
+  DSName: string;
+  ServerName: string;
+  validationMessage: string;
+}
+interface AssignRC {
+  RCName: string;
+  DSName: string;
+  validationMessage: string;
+}
+export class DeliveryServicePage extends BasePage {
+  private btnCreateNewDeliveryServices = element(by.linkText("Create Delivery 
Service"));
+  private mnuFormDropDown = element(by.name('selectFormDropdown'));
+  private btnSubmitFormDropDown = element(by.buttonText('Submit'));
+  private txtSearch = element(by.id("quickSearch"))
+  private txtConfirmName = element(by.name('confirmWithNameInput'));
+  private btnDelete = element(by.buttonText('Delete'));
+  private btnMore = element(by.name('moreBtn'));
+  private mnuManageRequiredServerCapabilities = element(by.linkText('Manage 
Required Server Capabilities'));
+  private btnAddRequiredServerCapabilities = 
element(by.name('addCapabilityBtn'));
+  private txtInputRC = element(by.name("selectFormDropdown")); 
+  private mnuManageServers = element(by.buttonText('Manage Servers'));
+  private btnAssignServer = element(by.name("selectServersMenuItem"));
+  private txtXmlId = element(by.name('xmlId'));
+  private txtDisplayName = element(by.name('displayName'));
+  private selectActive = element(by.name('active'));
+  private selectType = element(by.id('type'));
+  private selectTenant = element(by.name('tenantId'));
+  private selectCDN = element(by.name('cdn'));
+  private txtOrgServerURL = element(by.name('orgServerFqdn'));
+  private txtProtocol = element(by.name('protocol'));
+  private txtRemapText = element(by.name('remapText'));
+  private btnCreateDeliveryServices = element(by.buttonText('Create'));
+  private randomize = randomize;
+
+  public async OpenDeliveryServicePage() {
+    const snp = new SideNavigationPage();
+    await snp.NavigateToDeliveryServicesPage();
+  }
+
+  public async OpenServicesMenu() {
+    const snp = new SideNavigationPage();
+    await snp.ClickServicesMenu();
+  }
+
+  public async CreateDeliveryService(deliveryservice: DeliveryServices): 
Promise<boolean> {
+    let result = false;
+    let type: string = deliveryservice.Type;
+    const basePage = new BasePage();
+    if (deliveryservice.validationMessage.includes("created")) {
+      deliveryservice.validationMessage = 
deliveryservice.validationMessage.replace(deliveryservice.Name, 
deliveryservice.Name + this.randomize)
+    }
+    await this.btnMore.click();
+    await this.btnCreateNewDeliveryServices.click();
+    await this.mnuFormDropDown.sendKeys(type);
+    await this.btnSubmitFormDropDown.click();
+    switch (type) {
+      case "ANY_MAP": {
+        await this.txtXmlId.sendKeys(deliveryservice.Name + this.randomize);
+        await this.txtDisplayName.sendKeys(deliveryservice.Name + 
this.randomize);
+        await this.selectActive.sendKeys('Active')
+        await this.selectType.sendKeys('ANY_MAP')
+        await this.selectTenant.sendKeys('- root')
+        await this.selectCDN.sendKeys('dummycdn')
+        await this.txtRemapText.sendKeys('test')
+        break;
+      }
+      case "DNS": {
+        await this.txtXmlId.sendKeys(deliveryservice.Name + this.randomize);
+        await this.txtDisplayName.sendKeys(deliveryservice.Name + 
this.randomize);
+        await this.selectActive.sendKeys('Active')
+        await this.selectType.sendKeys('DNS')
+        await this.selectTenant.sendKeys('- root')
+        await this.selectCDN.sendKeys('dummycdn')
+        await this.txtOrgServerURL.sendKeys('http://origin.infra.ciab.test');
+        await this.txtProtocol.sendKeys('HTTP')
+        break;
+      }
+      case "HTTP": {
+        await this.txtXmlId.sendKeys(deliveryservice.Name + this.randomize);
+        await this.txtDisplayName.sendKeys(deliveryservice.Name + 
this.randomize);
+        await this.selectActive.sendKeys('Active')
+        await this.selectType.sendKeys('HTTP')
+        await this.selectTenant.sendKeys('- root')
+        await this.selectCDN.sendKeys('dummycdn')
+        await this.txtOrgServerURL.sendKeys('http://origin.infra.ciab.test');
+        await this.txtProtocol.sendKeys('HTTP')
+        break;
+      }
+      case "STEERING": {
+        await this.txtXmlId.sendKeys(deliveryservice.Name + this.randomize);
+        await this.txtDisplayName.sendKeys(deliveryservice.Name + 
this.randomize);
+        await this.selectActive.sendKeys('Active')
+        await this.selectType.sendKeys('STEERING')
+        await this.selectTenant.sendKeys('- root')
+        await this.selectCDN.sendKeys('dummycdn')
+        await this.txtProtocol.sendKeys('HTTP')
+        break;
+      }
+      default:
+        {
+          console.log('Wrong Type name');
+          break;
+        }
+    }
+    await this.btnCreateDeliveryServices.click();
+    result = await basePage.GetOutputMessage().then(value => value === 
deliveryservice.validationMessage);
+    return result;
+  }
+
+  public async SearchDeliveryService(nameDS: string): Promise<boolean> {
+    const name = nameDS + this.randomize;
+    await this.txtSearch.clear();
+    await this.txtSearch.sendKeys(name);
+    const result = await element(by.cssContainingText("span", 
name)).isPresent();
+    await element(by.cssContainingText("span", name)).click();
+    return !result;
+  }
+
+  public async UpdateDeliveryService(deliveryservice: UpdateDeliveryService): 
Promise<boolean | undefined> {
+    let result: boolean | undefined = false;
+    const basePage = new BasePage();
+    if (deliveryservice.validationMessage.includes("updated")) {
+      deliveryservice.validationMessage = 
deliveryservice.validationMessage.replace(deliveryservice.Name, 
deliveryservice.Name + this.randomize)
+    }
+    switch (deliveryservice.description) {
+      case "update delivery service display name":
+        await this.txtDisplayName.clear();
+        await this.txtDisplayName.sendKeys(deliveryservice.NewName + 
this.randomize);
+        await basePage.ClickUpdate();
+        break;
+      default:
+        result = undefined;
+    }
+    if (result = !undefined) {
+      result = await basePage.GetOutputMessage().then(value => value === 
deliveryservice.validationMessage);
+    }
+    return result;
+  }
+
+  public async DeleteDeliveryService(deliveryservice: DeleteDeliveryService): 
Promise<boolean> {
+    let result = false;
+    const basePage = new BasePage();
+    if (deliveryservice.validationMessage.includes("deleted")) {
+      deliveryservice.validationMessage = 
deliveryservice.validationMessage.replace(deliveryservice.Name, 
deliveryservice.Name + this.randomize);
+    }
+    await this.btnDelete.click();
+    await this.txtConfirmName.sendKeys(deliveryservice.Name + this.randomize);
+    await basePage.ClickDeletePermanently();
+    result = await basePage.GetOutputMessage().then(value => value === 
deliveryservice.validationMessage);
+    return result;
+  }
+
+  public async AssignServerToDeliveryService(deliveryservice: AssignServer): 
Promise<boolean>{
+    let result = false;
+    const basePage = new BasePage();
+    await this.btnMore.click();
+    await this.mnuManageServers.click();
+    await this.btnMore.click();
+    await this.btnAssignServer.click();
+    await element(by.cssContainingText("td", 
deliveryservice.ServerName)).click();
+    await this.ClickSubmit();
+    result = await basePage.GetOutputMessage().then(value => value === 
deliveryservice.validationMessage);
+    return result;
+  }
+
+  public async AssignRequiredCapabilitiesToDS(deliveryservice: AssignRC): 
Promise<boolean>{
+    let result = false;
+    const basePage = new BasePage();
+    await this.btnMore.click();
+    await this.mnuManageRequiredServerCapabilities.click();
+    await this.btnAddRequiredServerCapabilities.click();
+    await this.txtInputRC.sendKeys(deliveryservice.RCName);
+    await this.ClickSubmit();
+    result = await basePage.GetOutputMessage().then(value => value === 
deliveryservice.validationMessage);
+    return result;
+  }
+  
+
+}
diff --git a/traffic_portal/test/integration/config.ts 
b/traffic_portal/test/integration/config.ts
index 9d4bec6..96ccc55 100644
--- a/traffic_portal/test/integration/config.ts
+++ b/traffic_portal/test/integration/config.ts
@@ -39,7 +39,7 @@ if (config.capabilities) {
 }
 config.onPrepare = async function () {
     await browser.waitForAngularEnabled(true);
-
+    await browser.driver.manage().window().maximize();
     emptyDir('./Reports/', function (err) {
       console.log(err);
     });
diff --git a/traffic_portal/test/integration/specs/DeliveryServices.spec.ts 
b/traffic_portal/test/integration/specs/DeliveryServices.spec.ts
new file mode 100644
index 0000000..2ba4a69
--- /dev/null
+++ b/traffic_portal/test/integration/specs/DeliveryServices.spec.ts
@@ -0,0 +1,100 @@
+/*
+ * 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 { DeliveryServicePage } from '../PageObjects/DeliveryServicePage.po';
+import { TopNavigationPage } from '../PageObjects/TopNavigationPage.po';
+import { API } from '../CommonUtils/API';
+import { deliveryservices } from "../Data/deliveryservices";
+
+const api = new API();
+const topNavigation = new TopNavigationPage();
+const loginPage = new LoginPage();
+const deliveryservicesPage = new DeliveryServicePage();
+
+describe('Setup API for delivery service test', function () {
+    it('Setup', async () => {
+        await api.UseAPI(deliveryservices.setup);
+    });
+});
+
+deliveryservices.tests.forEach(async deliveryservicesData => {
+    deliveryservicesData.logins.forEach(login =>{
+        describe(`Traffic Portal - Delivery Service - ${login.description}`, 
() =>{
+            it('can login', async () => {
+                browser.get(browser.params.baseUrl);
+                await loginPage.Login(login);
+                expect(await loginPage.CheckUserName(login)).toBe(true);
+            });
+            it('can open delivery service page', async () => {
+                await deliveryservicesPage.OpenServicesMenu();
+                await deliveryservicesPage.OpenDeliveryServicePage();
+            });
+            deliveryservicesData.add.forEach(add => {
+                it(add.description, async function () {
+                    expect(await 
deliveryservicesPage.CreateDeliveryService(add)).toBe(true);
+                    await deliveryservicesPage.OpenDeliveryServicePage();
+                });
+            });
+            deliveryservicesData.update.forEach(update => {
+                it(update.description, async function () {
+                    await 
deliveryservicesPage.SearchDeliveryService(update.Name);
+                    expect(await 
deliveryservicesPage.UpdateDeliveryService(update)).toBe(true);
+                    await deliveryservicesPage.OpenDeliveryServicePage();
+                });
+            })
+            deliveryservicesData.assignserver.forEach(assignserver => {
+                it(assignserver.description, async function(){
+                    await 
deliveryservicesPage.SearchDeliveryService(assignserver.DSName);
+                    expect(await 
deliveryservicesPage.AssignServerToDeliveryService(assignserver)).toBe(true);
+                    await deliveryservicesPage.OpenDeliveryServicePage();
+                }
+                
+                )
+            })
+            deliveryservicesData.assignrequiredcapabilities.forEach(assignrc 
=> {
+                it(assignrc.description, async function(){
+                    await 
deliveryservicesPage.SearchDeliveryService(assignrc.DSName);
+                    expect(await 
deliveryservicesPage.AssignRequiredCapabilitiesToDS(assignrc)).toBe(true);
+                    await deliveryservicesPage.OpenDeliveryServicePage();
+                })
+            })
+            deliveryservicesData.remove.forEach(remove => {
+                it(remove.description, async () => {
+                    await 
deliveryservicesPage.SearchDeliveryService(remove.Name);
+                    expect(await 
deliveryservicesPage.DeleteDeliveryService(remove)).toBe(true);
+                    await deliveryservicesPage.OpenDeliveryServicePage();
+                });
+            });
+            it('can close service menu tab', async () => {
+                await deliveryservicesPage.OpenServicesMenu();
+            });
+            it('can logout', async () => {
+                expect(await topNavigation.Logout()).toBe(true);
+            });
+        })
+    })
+
+})
+describe('Clean up API for delivery service test', () => {
+    it('Cleanup', async () => {
+        await api.UseAPI(deliveryservices.cleanup);
+    });
+});

Reply via email to