Add new code new version
[sdc.git] / openecomp-ui / test / softwareProduct / components / monitoring / test.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 import expect from 'expect';
22 import mockRest from 'test-utils/MockRest.js';
23 import {storeCreator} from 'sdc-app/AppStore.js';
24 import SoftwareProductComponentsMonitoringConstants from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js';
25 import SoftwareProductComponentsMonitoringActionHelper from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js';
26
27 const softwareProductId = '123';
28 const componentId = '123';
29
30 describe('Software Product Components Monitoring Module Tests', function () {
31
32         let store;
33
34         beforeEach(()=> {
35                 store = storeCreator();
36         });
37
38
39         it('Fetch for existing files - no files', done => {
40
41                 let emptyResult = Object.freeze({
42                         snmpTrap: undefined,
43                         snmpPoll: undefined
44                 });
45
46                 mockRest.addHandler('fetch', ({ baseUrl}) => {
47                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`);
48                         return emptyResult;
49                 });
50
51                 SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {
52                         softwareProductId,
53                         componentId
54                 });
55                 setTimeout(()=> {
56                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
57                         expect(monitoring.pollFilename).toEqual(emptyResult.snmpPoll);
58                         expect(monitoring.trapFilename).toEqual(emptyResult.snmpTrap);
59                         done();
60                 }, 0);
61
62         });
63
64         it('Fetch for existing files - only snmp trap file exists', done => {
65                 let response = Object.freeze({
66                         snmpTrap: 'asdfasdf',
67                         snmpPoll: undefined
68                 });
69
70                 mockRest.addHandler('fetch', ({ baseUrl}) => {
71                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`);
72                         return response;
73                 });
74
75                 SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {
76                         softwareProductId,
77                         componentId
78                 });
79                 setTimeout(()=> {
80                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
81                         expect(monitoring.pollFilename).toEqual(response.snmpPoll);
82                         expect(monitoring.trapFilename).toEqual(response.snmpTrap);
83                         done();
84                 }, 0);
85         });
86
87         it('Fetch for existing files - only snmp poll file exists', done => {
88                 let response = Object.freeze({
89                         snmpPoll: 'asdfasdf',
90                         snmpTrap: undefined
91                 });
92
93                 mockRest.addHandler('fetch', ({baseUrl}) => {
94                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`);
95                         return response;
96                 });
97
98                 SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {
99                         softwareProductId,
100                         componentId
101                 });
102                 setTimeout(()=> {
103                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
104                         expect(monitoring.pollFilename).toEqual(response.snmpPoll);
105                         expect(monitoring.trapFilename).toEqual(response.snmpTrap);
106                         done();
107                 }, 0);
108         });
109
110         it('Fetch for existing files - both files exist', done => {
111                 let response = Object.freeze({
112                         snmpPoll: 'asdfasdf',
113                         snmpTrap: 'asdfgg'
114                 });
115
116                 mockRest.addHandler('fetch', ({baseUrl}) => {
117                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`);
118                         return response;
119                 });
120
121                 SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {
122                         softwareProductId,
123                         componentId
124                 });
125                 setTimeout(()=> {
126                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
127                         expect(monitoring.pollFilename).toEqual(response.snmpPoll);
128                         expect(monitoring.trapFilename).toEqual(response.snmpTrap);
129                         done();
130                 }, 0);
131         });
132
133         it('Upload snmp trap file', done => {
134
135                 mockRest.addHandler('create', ({baseUrl}) => {
136                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp-trap/upload`);
137                         return {};
138                 });
139                 var debug = {hello: 'world'};
140                 let file = new Blob([JSON.stringify(debug, null, 2)], {type: 'application/json'});;
141                 let formData = new FormData();
142                 formData.append('upload', file);
143                 SoftwareProductComponentsMonitoringActionHelper.uploadSnmpFile(store.dispatch, {
144                         softwareProductId,
145                         componentId,
146                         formData,
147                         fileSize: file.size,
148                         type: SoftwareProductComponentsMonitoringConstants.SNMP_TRAP
149                 });
150                 setTimeout(()=> {
151                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
152                         expect(monitoring.pollFilename).toEqual(undefined);
153                         expect(monitoring.trapFilename).toEqual('blob');
154                         done();
155                 }, 0);
156         });
157
158         it('Upload snmp poll file', done => {
159                 mockRest.addHandler('create', ({baseUrl}) => {
160                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp/upload`);
161                         return {};
162                 });
163                 var debug = {hello: 'world'};
164                 let file = new Blob([JSON.stringify(debug, null, 2)], {type: 'application/json'});;
165                 let formData = new FormData();
166                 formData.append('upload', file);
167                 SoftwareProductComponentsMonitoringActionHelper.uploadSnmpFile(store.dispatch, {
168                         softwareProductId,
169                         componentId,
170                         formData,
171                         fileSize: file.size,
172                         type: SoftwareProductComponentsMonitoringConstants.SNMP_POLL
173                 });
174                 setTimeout(()=> {
175                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
176                         expect(monitoring.pollFilename).toEqual('blob');
177                         expect(monitoring.trapFilename).toEqual(undefined);
178                         done();
179                 }, 0);
180         });
181
182         it('Delete snmp trap file', done => {
183                 mockRest.addHandler('destroy', ({baseUrl}) => {
184                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp-trap`);
185                         return {};
186                 });
187                 SoftwareProductComponentsMonitoringActionHelper.deleteSnmpFile(store.dispatch, {
188                         softwareProductId,
189                         componentId,
190                         type: SoftwareProductComponentsMonitoringConstants.SNMP_TRAP
191                 });
192                 setTimeout(()=> {
193                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
194                         expect(monitoring.trapFilename).toEqual(undefined);
195                         done();
196                 }, 0);
197         });
198
199         it('Delete snmp poll file', done => {
200                 mockRest.addHandler('destroy', ({baseUrl}) => {
201                         expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`);
202                         return {};
203                 });
204                 SoftwareProductComponentsMonitoringActionHelper.deleteSnmpFile(store.dispatch, {
205                         softwareProductId,
206                         componentId,
207                         type: SoftwareProductComponentsMonitoringConstants.SNMP_POLL
208                 });
209                 setTimeout(()=> {
210                         var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
211                         expect(monitoring.pollFilename).toEqual(undefined);
212                         done();
213                 }, 0);
214         });
215 });