diff options
-rw-r--r-- | src/app/test/test.component.html | 30 | ||||
-rw-r--r-- | src/app/test/test.component.spec.ts | 193 | ||||
-rw-r--r-- | src/app/test/test.component.ts | 27 |
3 files changed, 136 insertions, 114 deletions
diff --git a/src/app/test/test.component.html b/src/app/test/test.component.html index 3519007..c2eb22e 100644 --- a/src/app/test/test.component.html +++ b/src/app/test/test.component.html @@ -17,7 +17,6 @@ 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. -ECOMP is a trademark and service mark of AT&T Intellectual Property. ============LICENSE_END============================================ --> <simple-notifications [options]="options"></simple-notifications> @@ -26,7 +25,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. <div class="card" style=" margin-bottom: 23px;"> <div class="card-block" style="border-top: 5px solid #6ab344;border-top-right-radius: 7px;border-top-left-radius: 7px;"> - <div class="row"> + <div class="row" style="padding: 10px 15px"> <div class="col-lg-3 col-sm-6 col-md-4 col-xs-12"> <label>Action:</label> <input class="form-control" type="text" disabled value="{{action}}" /> @@ -43,7 +42,8 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. <input class="form-control" disabled type="text" [(ngModel)]="this.actionIdentifiers['vserver-id']" /> </div> - + </div> + <div class="row" style="padding: 10px 15px"> <div class="col-12"> <div class="input-group"> @@ -98,9 +98,11 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. <div class="col-md-12"> <div class="row justify-content-center" style="padding-top:0.3cm"> - <button style="margin-left:6%;" [disabled]="!enableTestButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="submit" (click)="testVnf()">Execute Test + + <button style="margin-left:6%;" [disabled]="!enableTestButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" + type="submit" (click)="testVnf()">Execute Test </button> - + </div> </div> @@ -110,7 +112,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. </div> <div style="padding-left:60%;padding-bottom:0.5cm"> - <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!enableDownload" (click)="download()">Download Raw Request/Response + <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!enableDownload" (click)="download()">Download Raw Request/Response </button> <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" type="button" [disabled]="!enableAbort" (click)="abortTest()">Abort Test </button> @@ -121,22 +123,22 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. <div class="card"> <div class="card-block"> - <div class="mdl-dialog__content" style="border:solid 1px grey;overflow:scroll;overflow-x:hidden;overflow-y:hidden;"> + <div class="mdl-dialog__content" style="border:solid 1px grey;"> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" style="margin-left: 25%"> <input placeholder="Request Id" [(ngModel)]="requestId" class="mdl-textfield__input" id="requestId" required name="requestId"> - </div> - <button type="submit" [disabled]="!enablePollButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" (click)=pollTestStatus()>Poll Test Status + </div><br/> + <button style="margin-left: 30%" type="submit" [disabled]="!enablePollButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" (click)=pollTestStatus()>Poll Test Status </button> - + <br/><br/> <div class="col-md-12"> <span style="margin-left: 18.5%"><b>POLL TEST STATUS RESPONSE</b></span> </div> <div style="margin-left: 18.5%;height:100px;width:60%;border:solid 2px grey;overflow:scroll;overflow-x:hidden;overflow-y:hidden;"> - <div *ngIf="showStatusResponseDiv"> - <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div> + <div *ngIf="showStatusResponseDiv"> + <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div> <table> <thead></thead> <tbody> @@ -168,9 +170,9 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. </table> </div> <div *ngIf="!showStatusResponseDiv"> - <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div> + <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div> <span>{{statusResponse}}</span> - </div> + </div> <div *ngIf="errorResponse"> <p style="height:450px;" disabled class="text-center"> diff --git a/src/app/test/test.component.spec.ts b/src/app/test/test.component.spec.ts index 830effd..15dde6c 100644 --- a/src/app/test/test.component.spec.ts +++ b/src/app/test/test.component.spec.ts @@ -17,7 +17,6 @@ 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. -ECOMP is a trademark and service mark of AT&T Intellectual Property. ============LICENSE_END============================================ */ @@ -91,7 +90,7 @@ describe('TestComponent', () => { component.pollTestStatus(); expect(service).toBeTruthy(); - + })); // Test download Method @@ -178,9 +177,9 @@ describe('TestComponent', () => { it('should execute if file extension is XLS, XLSX', () => { let reader = new FileReader(); - let file = new File(["testing"], "foo.XLS", {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}) + let file = new File(["testing"], "foo.XLS", { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }) let fileExtension = 'XLS'; - let event = { isTrusted: true, type: "change", target: {files: [file]} } + let event = { isTrusted: true, type: "change", target: { files: [file] } } component.upload(event); @@ -190,10 +189,10 @@ describe('TestComponent', () => { it('should return an error if file extension is not XLS, XLSX', () => { let reader = new FileReader(); - let file = new File(["testing"], "foo.doc", {type: ""}) + let file = new File(["testing"], "foo.doc", { type: "" }) let fileExtension = 'doc'; - let event = { isTrusted: true, type: "change", target: {files: [file]} } - + let event = { isTrusted: true, type: "change", target: { files: [file] } } + component.upload(event); expect(reader instanceof FileReader).toBeTruthy(); @@ -201,7 +200,7 @@ describe('TestComponent', () => { }); it('Should return an error is files length is not equal to 1', () => { - + }); }); @@ -287,35 +286,35 @@ describe('TestComponent', () => { }); it('should return response on success', inject([MockBackend], (mockBackend: MockBackend) => { - let mockData = 'testing'; - let response = new ResponseOptions({ - body: JSON.stringify(mockData) - }); - const baseResponse = new Response(response); - mockBackend.connections.subscribe( - (c: MockConnection) => { - c.mockRespond(baseResponse) - } - ); - - component.action = 'ConfigModify'; - - component.testVnf(); + let mockData = 'testing'; + let response = new ResponseOptions({ + body: JSON.stringify(mockData) + }); + const baseResponse = new Response(response); + mockBackend.connections.subscribe( + (c: MockConnection) => { + c.mockRespond(baseResponse) + } + ); + + component.action = 'ConfigModify'; + + component.testVnf(); })); - it('should return an error if fails', inject([HttpUtilService],( httpUtilService: HttpUtilService) => { - let error = 'Error in connecting to APPC Server'; - let spy = spyOn(httpUtilService, 'post').and.returnValue(Observable.throw(error)); - component.action = 'ConfigModify'; - - component.testVnf(); + it('should return an error if fails', inject([HttpUtilService], (httpUtilService: HttpUtilService) => { + let error = 'Error in connecting to APPC Server'; + let spy = spyOn(httpUtilService, 'post').and.returnValue(Observable.throw(error)); + component.action = 'ConfigModify'; - expect(spy).toHaveBeenCalled(); - expect(component.enableBrowse).toBeTruthy(); - expect(component.enableTestButton).toBeTruthy(); - expect(component.enablePollButton).toBeTruthy(); - expect(component.enableCounterDiv).toBeFalsy(); - })); + component.testVnf(); + + expect(spy).toHaveBeenCalled(); + expect(component.enableBrowse).toBeTruthy(); + expect(component.enableTestButton).toBeTruthy(); + expect(component.enablePollButton).toBeTruthy(); + expect(component.enableCounterDiv).toBeFalsy(); + })); it('test setTimeout', inject([NgProgress], (ngProgress: NgProgress) => { let spy = spyOn(ngProgress, 'done'); @@ -334,64 +333,80 @@ describe('TestComponent', () => { it('should call fake server', inject([MockBackend], (mockBackend: MockBackend) => { component.requestId = new Date().getTime().toString(); - component.actionIdentifiers['vnf-id'] = 123456; - let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"FAILED\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ; - let response = new ResponseOptions({ - body: JSON.stringify(mockData) - }); - const baseResponse = new Response(response); - mockBackend.connections.subscribe( - (c: MockConnection) => c.mockRespond(baseResponse) - ); - - component.pollTestStatus(); + component.actionIdentifiers['vnf-id'] = 123456; + let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"FAILED\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } }; + let response = new ResponseOptions({ + body: JSON.stringify(mockData) + }); + const baseResponse = new Response(response); + mockBackend.connections.subscribe( + (c: MockConnection) => c.mockRespond(baseResponse) + ); + + component.pollTestStatus(); })); it('should call fake server if status is success', inject([MockBackend], (mockBackend: MockBackend) => { - component.requestId = new Date().getTime().toString(); - component.actionIdentifiers['vnf-id'] = 123456; - let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"SUCCESS\",\"status\":\"SUCCESS\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ; - let response = new ResponseOptions({ - body: JSON.stringify(mockData) - }); - const baseResponse = new Response(response); - mockBackend.connections.subscribe( - (c: MockConnection) => c.mockRespond(baseResponse) - ); - - component.pollTestStatus(); - })); - - it('should execute else part if timeStamp && status && statusReason are false', inject([MockBackend], (mockBackend: MockBackend) => { - component.requestId = new Date().getTime().toString(); - component.actionIdentifiers['vnf-id'] = 123456; - let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ; - let response = new ResponseOptions({ - body: JSON.stringify(mockData) - }); - const baseResponse = new Response(response); - mockBackend.connections.subscribe( - (c: MockConnection) => c.mockRespond(baseResponse) - ); - - component.pollTestStatus(); - })); - - it('should return an error if fails', inject([MockBackend], (mockBackend: MockBackend) => { - let error = 'Error Connecting to APPC server'; - component.requestId = new Date().getTime().toString(); - component.actionIdentifiers['vnf-id'] = 123456; - let mockData = ''; - let response = new ResponseOptions({ - body: JSON.stringify(mockData) - }); - const baseResponse = new Response(response); - mockBackend.connections.subscribe( - (c: MockConnection) => c.mockError(new Error(error)) - ); - - component.pollTestStatus(); - })); + component.requestId = new Date().getTime().toString(); + component.actionIdentifiers['vnf-id'] = 123456; + let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"SUCCESS\",\"status\":\"SUCCESS\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } }; + let response = new ResponseOptions({ + body: JSON.stringify(mockData) + }); + const baseResponse = new Response(response); + mockBackend.connections.subscribe( + (c: MockConnection) => c.mockRespond(baseResponse) + ); + + component.pollTestStatus(); + })); + + it('should check error condition on polling where timestamp and test status are not available', inject([MockBackend], (mockBackend: MockBackend) => { + component.requestId = new Date().getTime().toString(); + component.actionIdentifiers['vnf-id'] = 123456; + //let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ; + let mockData = { "output": { "common-header": { "timestamp": "2018-03-21T14:20:30.910Z", "api-ver": "2.00", "request-id": "1521642030910", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 }, "originator-id": "CDT", "sub-request-id": "1521642030910" }, "status": { "message": "INVALID INPUT PARAMETER - vserver-id", "code": 301 } } }; + let response = new ResponseOptions({ + body: JSON.stringify(mockData) + }); + const baseResponse = new Response(response); + mockBackend.connections.subscribe( + (c: MockConnection) => c.mockRespond(baseResponse) + ); + + component.pollTestStatus(); + })); + + it('should execute else part if timeStamp && status && statusReason are false', inject([MockBackend], (mockBackend: MockBackend) => { + component.requestId = new Date().getTime().toString(); + component.actionIdentifiers['vnf-id'] = 123456; + let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } }; + let response = new ResponseOptions({ + body: JSON.stringify(mockData) + }); + const baseResponse = new Response(response); + mockBackend.connections.subscribe( + (c: MockConnection) => c.mockRespond(baseResponse) + ); + + component.pollTestStatus(); + })); + + it('should return an error if fails', inject([MockBackend], (mockBackend: MockBackend) => { + let error = 'Error Connecting to APPC server'; + component.requestId = new Date().getTime().toString(); + component.actionIdentifiers['vnf-id'] = 123456; + let mockData = ''; + let response = new ResponseOptions({ + body: JSON.stringify(mockData) + }); + const baseResponse = new Response(response); + mockBackend.connections.subscribe( + (c: MockConnection) => c.mockError(new Error(error)) + ); + + component.pollTestStatus(); + })); }); // Test getUrlEndPoint Method diff --git a/src/app/test/test.component.ts b/src/app/test/test.component.ts index a7516ec..2fd8525 100644 --- a/src/app/test/test.component.ts +++ b/src/app/test/test.component.ts @@ -17,7 +17,6 @@ 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. -ECOMP is a trademark and service mark of AT&T Intellectual Property. ============LICENSE_END============================================ */ @@ -194,7 +193,7 @@ export class TestComponent implements OnInit { this.showStatusResponseDiv = false; this.errorResponse = ''; this.statusResponse = ''; - this.enableDownload=true; + this.enableDownload = true; let arrData = (<AOA>(XLSX.utils.sheet_to_json(ws, { blankrows: false }))); @@ -210,10 +209,10 @@ export class TestComponent implements OnInit { // Refactor this.payload = this.processUploadedFile(arrData); this.uploadedFileResult(); - }; + }; reader.readAsBinaryString(target.files[0]); - + } else { @@ -236,7 +235,7 @@ export class TestComponent implements OnInit { } } -processUploadedFile(arrData) { + processUploadedFile(arrData) { let tempPayload = {}; for (var i = 0; i < arrData.length; i++) { var element = arrData[i]; @@ -252,7 +251,7 @@ processUploadedFile(arrData) { } } - + if (element['List Name'] === 'payload') { var listName1 = element['List Name_1']; var listName2 = element['List Name_2']; @@ -280,7 +279,7 @@ processUploadedFile(arrData) { return tempPayload; } - uploadedFileResult() { + uploadedFileResult() { if (this.action && this.actionIdentifiers['vnf-id']) { this.nService.success('Success', 'SpreadSheet uploaded successfully'); } @@ -459,23 +458,29 @@ processUploadedFile(arrData) { } else { this.showStatusResponseDiv = false; + if (this.subscribe && this.subscribe != undefined) { + this.subscribe.unsubscribe(); + this.enablePollButton = true; + } + } - }, error => { this.statusResponse = null; this.showStatusResponseDiv = false; this.errorResponse = 'Error Connecting to APPC server'; this.enableCounterDiv = false; - if (this.subscribe && this.subscribe != undefined) this.subscribe.unsubscribe(); + if (this.subscribe && this.subscribe != undefined) { + this.subscribe.unsubscribe(); + this.enablePollButton = true; + } }); - } else { this.nService.error("Error", "Please enter vnf Id & request Id"); } - + } getUrlEndPoint(action) { |