2 ============LICENSE_START==========================================
 
   3 ===================================================================
 
   4 Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
 
   5 ===================================================================
 
   7 Unless otherwise specified, all software contained herein is licensed
 
   8 under the Apache License, Version 2.0 (the License);
 
   9 you may not use this software except in compliance with the License.
 
  10 You may obtain a copy of the License at
 
  12     http://www.apache.org/licenses/LICENSE-2.0
 
  14 Unless required by applicable law or agreed to in writing, software
 
  15 distributed under the License is distributed on an "AS IS" BASIS,
 
  16 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  17 See the License for the specific language governing permissions and
 
  18 limitations under the License.
 
  20 ECOMP is a trademark and service mark of AT&T Intellectual Property.
 
  21 ============LICENSE_END============================================
 
  25 import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing';
 
  26 import { By, BrowserModule } from '@angular/platform-browser';
 
  27 import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
 
  28 import { Component, OnInit, ViewChild, Input } from '@angular/core';
 
  29 import { HttpUtilService } from '../../../../shared/services/httpUtil/http-util.service';
 
  30 import { MappingEditorService } from '../../../../shared/services/mapping-editor.service';
 
  31 import { ArtifactRequest } from '../../../../shared/models/index';
 
  32 import { ActivatedRoute, Router } from "@angular/router";
 
  33 import { saveAs } from "file-saver";
 
  34 import { NotificationService } from '../../../../shared/services/notification.service';
 
  35 import { NotificationsService } from "angular2-notifications"
 
  36 import { ParamShareService } from '../../../../shared/services/paramShare.service';
 
  37 import { DialogService } from "ng2-bootstrap-modal";
 
  38 import { ConfirmComponent } from '../../../../shared/confirmModal/confirm.component';
 
  39 import { BuildDesignComponent } from '../../build-artifacts.component';
 
  40 import { environment } from '../../../../../environments/environment';
 
  41 import { ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal'
 
  42 import { FormsModule } from '@angular/forms';
 
  43 import { RouterTestingModule } from '@angular/router/testing';
 
  44 import { HomeComponent } from '../../../../home/home/home.component';
 
  45 import { LogoutComponent } from '../../../../shared/components/logout/logout.component';
 
  46 import { HelpComponent } from '../../../../shared/components/help/help/help.component';
 
  47 import { AboutUsComponent } from '../../../../about-us/aboutus.component';
 
  48 import { TestComponent } from '../../../../test/test.component';
 
  49 import { HttpModule } from '@angular/http';
 
  50 import { AceEditorComponent } from 'ng2-ace-editor';
 
  51 import { Ng2Bs3ModalModule } from 'ng2-bs3-modal/ng2-bs3-modal';
 
  52 import { SimpleNotificationsModule } from 'angular2-notifications';
 
  53 import { GoldenConfigurationComponent } from './template-configuration.component';
 
  54 import { NgProgress } from 'ngx-progressbar';
 
  55 import { BaseRequestOptions, Response, ResponseOptions, Http } from '@angular/http';
 
  56 import { MockBackend, MockConnection } from '@angular/http/testing';
 
  58 describe('GoldenConfigurationComponent', () => {
 
  59   let component: GoldenConfigurationComponent;
 
  60   let fixture: ComponentFixture<GoldenConfigurationComponent>;
 
  61   let buildDesignComponent: BuildDesignComponent;
 
  62   let paramShareService: ParamShareService;
 
  63   let dialogService: DialogService;
 
  64   let notificationService: NotificationService;
 
  65   let httpUtil: HttpUtilService;
 
  66   let mappingEditorService: MappingEditorService;
 
  67   let activeRoutes: ActivatedRoute;
 
  69   let nService: NotificationsService
 
  73       component: HomeComponent
 
  76       loadChildren: '../../../../vnfs/vnfs.module#VnfsModule'
 
  79       component: TestComponent
 
  83       component: HelpComponent
 
  86       component: AboutUsComponent
 
  89       component: LogoutComponent
 
  98     TestBed.configureTestingModule({
 
  99       imports: [FormsModule, BrowserModule, RouterTestingModule.withRoutes(routes), HttpModule, Ng2Bs3ModalModule, SimpleNotificationsModule.forRoot()],
 
 100       declarations: [GoldenConfigurationComponent, HomeComponent, TestComponent, HelpComponent, AboutUsComponent, LogoutComponent, AceEditorComponent],
 
 101       providers: [BuildDesignComponent, NgProgress, ParamShareService, DialogService, NotificationService, MockBackend,
 
 105           useFactory: (backend: MockBackend, defaultOptions: BaseRequestOptions) => {
 
 106             return new Http(backend, defaultOptions);
 
 108           deps: [MockBackend, BaseRequestOptions],
 
 111         HttpUtilService, MappingEditorService, NotificationsService],
 
 112       schemas: [NO_ERRORS_SCHEMA],
 
 117   beforeEach(async(() => {
 
 118     TestBed.compileComponents()
 
 123   it('validate if uploaded file should be xml or json', () => {
 
 124     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 125     component = fixture.componentInstance;
 
 126     expect(component.validateUploadedFile('xls')).toBe(false);
 
 127     expect(component.validateUploadedFile('json')).toBe(true);
 
 128     expect(component.validateUploadedFile('xml')).toBe(true);
 
 132   it('validate initialisation of variables in ngOnit() function', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 133     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 134     component = fixture.componentInstance;
 
 135     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" }
 
 137     expect(component.ngOnInit());
 
 138     expect(component.ngAfterViewInit());
 
 139     expect(component.action).toEqual('Configure');
 
 140     expect(component.vnfType).toEqual('testVnf');
 
 141     expect(component.vnfcType).toEqual('');
 
 142     expect(component.protocol).toEqual('CHEF');
 
 144     expect(component.artifactName).toEqual('template_Configure_test_0.0.1V.json');
 
 146     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "testVnfc" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" }
 
 147     expect(component.ngOnInit());
 
 148     expect(component.vnfcType).toEqual('testVnfc');
 
 153   it('check if variables are empty when reference data object is empty', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 154     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 155     component = fixture.componentInstance;
 
 156     // mappingEditorService.latestAction = { "action": "", "scope": { "vnf-type": "", "vnfc-type": "" }, "vm": [], "protocol": "", "download-dg-reference": "", "user-name": "", "port-number": "", "artifact-list": [], "deviceTemplate": "", "scopeType": "" };
 
 157     mappingEditorService.latestAction = undefined;
 
 158     expect(component.ngAfterViewInit());
 
 159     expect(component.action).toEqual('');
 
 160     expect(component.vnfType).toEqual('');
 
 161     expect(component.vnfcType).toEqual('');
 
 162     expect(component.protocol).toEqual('');
 
 163     expect(component.artifactName).toEqual('');
 
 167   it('check if correct notification is fired while initialising if reference data object is undefined', () => {
 
 168     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 169     component = fixture.componentInstance;
 
 170     expect(component.ngAfterViewInit());
 
 171     expect(component.Actions.length).toBe(0)
 
 172     expect(component.enableBrowse).toBe(false)
 
 175   it('test sync template when template data, param data and pd data are available', inject([MappingEditorService, ParamShareService], (mappingEditorService: MappingEditorService, paramShareService: ParamShareService) => {
 
 176     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 177     component = fixture.componentInstance;
 
 178     mappingEditorService.fromScreen === 'MappingScreen'
 
 179     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\n            <version>15.1X49-D50.3</version>\n            <groups>\n                <name>node0</name>\n                <system>\n                   <tacplus-server>\n                        <name>${sync_auto-pop_name1}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                    <tacplus-server>\n                        <name>${node0_tacplus_server_name2}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                </system>         \n           </groups>\n    </configuration>"
 
 180     mappingEditorService.initialise(component.templateeditor.getEditor(), component.configMappingEditorContent, component.modal);
 
 182     var pdData = [{ "name": "sync_auto-pop_name1", "type": null, "description": null, "required": null, "default": null, "source": "A&AI", "rule-type": "vnfc-oam-ipv4-address-list", "request-keys": [{ "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "response-keys": [{ "key-name": "unique-key-name", "key-value": "parent-name" }, { "key-name": "unique-key-value", "key-value": "vnfc" }, { "key-name": "field-key-name", "key-value": "ipaddress-v4-oam-vip" }, { "key-name": null, "key-value": "vm-number" }, { "key-name": null, "key-value": "test" }], "ruleTypeValues": [null, "vnf-name", "vm-name-list", "vnfc-name-list", "vnf-oam-ipv4-address", "vnfc-oam-ipv4-address-list"], "showFilterFields": true, "enableFilterByValue": true }, { "name": "sync_auto-pop_address1", "type": null, "description": null, "required": null, "default": null, "source": "A&AI", "rule-type": "vm-name-list", "request-keys": [{ "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "response-keys": [{ "key-name": "unique-key-name", "key-value": "parent-name" }, { "key-name": "unique-key-value", "key-value": "vserver" }, { "key-name": "field-key-name", "key-value": "vserver-name" }, { "key-name": null, "key-value": "vnfc-function-code" }, { "key-name": null, "key-value": null }], "ruleTypeValues": [null, "vnf-name", "vm-name-list", "vnfc-name-list", "vnf-oam-ipv4-address", "vnfc-oam-ipv4-address-list"], "showFilterFields": true, "enableFilterByValue": true }, { "name": "node0_tacplus_server_name2", "type": null, "description": null, "required": null, "default": null, "source": "Manual", "rule-type": null, "request-keys": [{ "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "response-keys": [{ "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "ruleTypeValues": [null] }];
 
 183     paramShareService.setSessionParamData([pdData]);
 
 184     localStorage["paramsContent"] = {
 
 185       "sync_auto-pop_name1": "testIp1",
 
 186       "sync_auto-pop_address1": "",
 
 187       "node0_tacplus_server_name2": "testIp2"
 
 189     expect(component.syncTemplate());
 
 194   it('test sync template when template data, param data and pd data are not available', inject([MappingEditorService, ParamShareService], (mappingEditorService: MappingEditorService, paramShareService: ParamShareService) => {
 
 195     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 196     component = fixture.componentInstance;
 
 197     mappingEditorService.fromScreen === 'MappingScreen'
 
 198     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\n            <version>15.1X49-D50.3</version>\n            <groups>\n                <name>node0</name>\n                <system>\n                   <tacplus-server>\n                        <name>${sync_auto-pop_name1}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                    <tacplus-server>\n                        <name>${node0_tacplus_server_name2}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                </system>         \n           </groups>\n    </configuration>"
 
 199     mappingEditorService.initialise(component.templateeditor.getEditor(), component.configMappingEditorContent, component.modal);
 
 202     paramShareService.setSessionParamData([pdData]);
 
 203     localStorage["paramsContent"] = {};
 
 204     expect(component.syncTemplate());
 
 209   it('test whether proper param data and template data are getting set in the appDataObject', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 210     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 211     component = fixture.componentInstance;
 
 212     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" };
 
 213     component.ngOnInit();
 
 214     component.ngAfterViewInit();
 
 215     component.appDataObject = { reference: {}, template: { templateData: {}, nameValueData: {} }, pd: {} };
 
 216     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\n            <version>15.1X49-D50.3</version>\n            <groups>\n                <name>node0</name>\n                <system>\n                   <tacplus-server>\n                        <name>${sync_auto-pop_name1}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                    <tacplus-server>\n                        <name>${node0_tacplus_server_name2}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                </system>         \n           </groups>\n    </configuration>"
 
 217     mappingEditorService.initialise(component.templateeditor.getEditor(), component.configMappingEditorContent, component.modal);
 
 218     localStorage["paramsContent"] = JSON.stringify({ "sync_auto-pop_name1": "testIp1", "sync_auto-pop_address1": "", "node0_tacplus_server_name2": "testIp2" });
 
 220     component.userId = "testuser";
 
 221     component.apiToken = "87264736473";
 
 222     component.prepareAppData();
 
 223     var paramData = { "input": ({ "design-request": ({ "request-id": '87264736473', "action": 'uploadArtifact', "payload": '{"userID":"testuser","vnf-type":"testVnf","action":"Configure","artifact-name":"param_Configure_testVnf_0.0.1V.json","artifact-type":"APPC-CONFIG","artifact-version":"0.0.1","artifact-contents":"[{\"sync_auto-pop_name1\":\"10.0.1.34\",\"sync_auto-pop_address1\":\"\",\"node0_tacplus_server_name2\":\"192.34.45.5\"}]"}' }) }) };
 
 224     var templateData = { input: ({ "design-request": ({ "request-id": '87264736473', "action": 'uploadArtifact', "payload": '{"userID":"testuser","vnf-type":"testVnf","action":"Configure","artifact-name":"template_Configure_test_0.0.1V.json","artifact-type":"APPC-CONFIG","artifact-version":"0.0.1","artifact-contents":"<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\n<version>15.1X49-D50.3</version>\n            <groups>\n                <name>node0</name>\n                <system>\n                   <tacplus-server>\n                        <name>${sync_auto-pop_name1}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n              </tacplus-server>\n                    <tacplus-server>\n                        <name>${node0_tacplus_server_name2}</name>\n          <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                </system>         \n   </groups>\n    </configuration>"}' }) }) };
 
 225     expect(component.appDataObject.template.nameValueData["payload"]).toBe(JSON.stringify(paramData["payload"]));
 
 226     expect(component.appDataObject.template.templateData["payload"]).toBe(JSON.stringify(templateData["payload"]));
 
 230   it('test whether proper param data is getting set in the downloadDataObject', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 231     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 232     component = fixture.componentInstance;
 
 233     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" };
 
 234     component.ngOnInit();
 
 235     component.ngAfterViewInit();
 
 236     component.downloadDataObject = {
 
 238       template: { templateData: {}, nameValueData: {}, templateFileName: '', nameValueFileName: '' },
 
 239       pd: { pdData: '', pdFileName: '' }
 
 241     localStorage["paramsContent"] = JSON.stringify({ "sync_auto-pop_name1": "testIp1", "sync_auto-pop_address1": "", "node0_tacplus_server_name2": "testIp2" });
 
 243     component.onDownloadParameter();
 
 244     var nameValueData = {
 
 245       "sync_auto-pop_name1": "testIp1",
 
 246       "sync_auto-pop_address1": "",
 
 247       "node0_tacplus_server_name2": "testIp2"
 
 249     expect(component.downloadDataObject.template.nameValueData).toBe(JSON.stringify(nameValueData, null, "\t"));
 
 250     expect(component.downloadDataObject.template.nameValueFileName).toBe("param_Configure_testVnf_0.0.1V.json");
 
 253   it('test whether proper template data is getting set in the downloadDataObject', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 254     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 255     component = fixture.componentInstance;
 
 256     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" };
 
 257     component.ngOnInit();
 
 258     component.ngAfterViewInit();
 
 259     component.downloadDataObject = {
 
 261       template: { templateData: {}, nameValueData: {}, templateFileName: '', nameValueFileName: '' },
 
 262       pd: { pdData: '', pdFileName: '' }
 
 264     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\n            <version>15.1X49-D50.3</version>\n            <groups>\n                <name>node0</name>\n                <system>\n                   <tacplus-server>\n                        <name>${sync_auto-pop_name1}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                    <tacplus-server>\n                        <name>${node0_tacplus_server_name2}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                </system>         \n           </groups>\n    </configuration>"
 
 265     component.fileType = "text/xml"
 
 266     component.onDownloadTemplate('Template');
 
 268     component.fileType = "text/plain"
 
 269     component.onDownloadTemplate('Template');
 
 270     component.fileType = "text/json"
 
 271     component.onDownloadTemplate('Template');
 
 272     component.tempretrieveFlag = true;
 
 273     component.fileNameForTempSave = "Configure_testVnf_0.0.1V.json"
 
 274     component.onDownloadTemplate('Template');
 
 275     expect(component.downloadDataObject.template.templateData).toBe(component.configMappingEditorContent.replace(/\(([^()]|(R))*\)=\(/g, '').replace(/\)}/g, '}'));
 
 279   it('test merge status for golden config template and uploaded parameter data', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 280     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 281     component = fixture.componentInstance;
 
 282     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" };
 
 283     component.ngOnInit();
 
 284     component.ngAfterViewInit();
 
 285     component.downloadDataObject = {
 
 287       template: { templateData: {}, nameValueData: {}, templateFileName: '', nameValueFileName: '' },
 
 288       pd: { pdData: '', pdFileName: '' }
 
 290     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \r\n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\r\n            <version>15.1X49-D50.3</version>\r\n            <groups>\r\n                <name>node0</name>\r\n                <system>\r\n                   <tacplus-server>\r\n                        <name>testIp1</name>\r\n                        <source-address>135.144.3.125</source-address>\r\n                    </tacplus-server>\r\n                    <tacplus-server>\r\n                        <name>199.37.184.242</name>\r\n                        <source-address>testIp2</source-address>\r\n                    </tacplus-server>\r\n                </system>         \r\n            </groups>\r\n     </configuration>";
 
 291     mappingEditorService.initialise(component.templateeditor.getEditor(), component.configMappingEditorContent, component.modal);
 
 292     localStorage["paramsContent"] = JSON.stringify({
 
 293       "node0_tacplus_server_name1": "testIp1",
 
 294       "node0_tacplus_server_source_address1": "675453432",
 
 295       "node0_tacplus_server_name2": "testIp2"
 
 297     component.mergeParams();
 
 298     expect(component.mergeStatus).toBe(true);
 
 300     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\n            <version>15.1X49-D50.3</version>\n            <groups>\n                <name>node0</name>\n                <system>\n                   <tacplus-server>\n                        <name>${sync_auto-pop_name1}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                    <tacplus-server>\n                        <name>${node0_tacplus_server_name2}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                </system>         \n           </groups>\n    </configuration>"
 
 301     mappingEditorService.initialise(component.templateeditor.getEditor(), component.configMappingEditorContent, component.modal);
 
 302     component.mergeParams();
 
 303     expect(component.mergeStatus).toBe(false);
 
 307   it('test handleAnnotation method', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 308     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 309     component = fixture.componentInstance;
 
 310     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" };
 
 311     component.ngOnInit();
 
 312     component.ngAfterViewInit();
 
 314     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \r\n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\r\n            <version>15.1X49-D50.3</version>\r\n            <groups>\r\n                <name>node0</name>\r\n                <system>\r\n                   <tacplus-server>\r\n                        <name>199.37.184.211</name>\r\n                        <source-address>675453432</source-address>\r\n                    </tacplus-server>\r\n                    <tacplus-server>\r\n                        <name>199.37.184.242</name>\r\n                        <source-address>675453432</source-address>\r\n                    </tacplus-server>\r\n                </system>         \r\n            </groups>\r\n     </configuration>";
 
 315     mappingEditorService.initialise(component.templateeditor.getEditor(), component.configMappingEditorContent, component.modal);
 
 316     component.selectedWord = "node0";
 
 317     expect(component.handleAnnotation(component.modal));
 
 320   it('test handleAnnotation method', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
 
 321     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 322     component = fixture.componentInstance;
 
 323     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" };
 
 324     component.ngOnInit();
 
 325     component.ngAfterViewInit();
 
 327     component.configMappingEditorContent = "<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \r\n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\r\n            <version>15.1X49-D50.3</version>\r\n            <groups>\r\n                <name>node0</name>\r\n                <system>\r\n                   <tacplus-server>\r\n                        <name>{(node1)=(name1)}</name>\r\n                        <source-address>675453432</source-address>\r\n                    </tacplus-server>\r\n                    <tacplus-server>\r\n                        <name>199.37.184.242</name>\r\n                        <source-address>675453432</source-address>\r\n                    </tacplus-server>\r\n                </system>         \r\n            </groups>\r\n     </configuration>";
 
 328     mappingEditorService.initialise(component.templateeditor.getEditor(), component.configMappingEditorContent, component.modal);
 
 329     component.selectedWord = "node0";
 
 330     component.tempName = "name0";
 
 331     component.submitNameValues()
 
 332     expect(component.replaceWord).toContain("{(node0)=(name0)}");
 
 333     component.selectedWord = "{(node1)=(name1)}";
 
 334     component.submitNameValues();
 
 335     component.tempName = false;
 
 336     component.submitNameValues();
 
 339   it('retrieveTemplateFromAppc function should return response on success and set the configMappingEditorContent object', inject([HttpUtilService, NgProgress, MappingEditorService, MockBackend], (httpUtilService: HttpUtilService, mappingEditorService: MappingEditorService, ngProgress: NgProgress, mockBackend: MockBackend) => {
 
 340     fixture = TestBed.createComponent(GoldenConfigurationComponent);
 
 341     component = fixture.componentInstance;
 
 345           "block": "{\"userID\":null,\"designInfo\":null,\"statusInfo\":null,\"artifactInfo\":[{\"artifact-content\":\"   <configuration xmlns=\\\"http://xml.juniper.net/xnm/1.1/xnm\\\" \\n    xmlns:a=\\\"http://xml.juniper.net/junos/15.1X49/junos\\\" >\\n            <version>15.1X49-D50.3</version>\\n            <groups>\\n                <name>node0</name>\\n                <system>\\n                   <tacplus-server>\\n                        <name>${sync_auto-pop_name1}</name>\\n                        <source-address>${sync_auto-pop_address1}</source-address>\\n                    </tacplus-server>\\n                    <tacplus-server>\\n                        <name>${node0_tacplus_server_name2}</name>\\n                        <source-address>${sync_auto-pop_address1}</source-address>\\n                    </tacplus-server>\\n                </system>         \\n           </groups>\\n    </configuration>\"}]}",
 
 346           "requestId": "497085412083"
 
 354     let response = new ResponseOptions({
 
 355       body: JSON.stringify(mockData)
 
 357     const baseResponse = new Response(response);
 
 358     mockBackend.connections.subscribe(
 
 359       (c: MockConnection) => c.mockRespond(baseResponse)
 
 362     mappingEditorService.latestAction = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "testVnf", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_test_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_test_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" }
 
 364     mappingEditorService.fromScreen = 'MappingScreen';
 
 365     component.action = 'Configure';
 
 366     component.refObj = mappingEditorService.latestAction;
 
 367     component.scopeName = "testVnf";
 
 368     component.vnfType = "testVnf";
 
 369     component.userId = "abc";
 
 370     component.item.action = "Configure";
 
 371     component.retrieveTemplateFromAppc();
 
 372     expect(component.configMappingEditorContent).not.toBe(null);