2 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13 * or implied. See the License for the specific language governing
14 * permissions and limitations under the License.
17 import mockRest from 'test-utils/MockRest.js';
18 import {storeCreator} from 'sdc-app/AppStore.js';
19 import SoftwareProductComponentsMonitoringConstants from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js';
20 import SoftwareProductComponentsMonitoringActionHelper from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js';
21 import {fileTypes} from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js';
23 import {VSPComponentsMonitoringRestFactory, trap, poll, ves} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsMonitoringFactories.js';
24 import VersionControllerUtilsFactory from 'test-utils/factories/softwareProduct/VersionControllerUtilsFactory.js';
26 const softwareProductId = '123';
27 const componentId = '123';
28 const version = VersionControllerUtilsFactory.build().version;
30 describe('Software Product Components Monitoring Module Tests', function () {
35 store = storeCreator();
39 it('Fetch for existing files - no files', done => {
41 let emptyResult = VSPComponentsMonitoringRestFactory.build();
43 mockRest.addHandler('fetch', ({ baseUrl}) => {
44 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads`);
48 return SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {softwareProductId, version, componentId}).then(() => {
49 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
50 expect(monitoring[trap]).toEqual(emptyResult[trap]);
51 expect(monitoring[poll]).toEqual(emptyResult[poll]);
52 expect(monitoring[ves]).toEqual(emptyResult[ves]);
59 it('Fetch for existing files - only snmp trap file exists', done => {
60 let response = VSPComponentsMonitoringRestFactory.build({}, {createTrap: true});
62 mockRest.addHandler('fetch', ({ baseUrl}) => {
63 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads`);
67 return SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {softwareProductId, version, componentId}).then(() => {
69 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
70 expect(monitoring[poll]).toEqual(undefined);
71 expect(monitoring[trap]).toEqual(response[trap]);
72 expect(monitoring[ves]).toEqual(undefined);
78 it('Fetch for existing files - all files exist', done => {
79 let response = VSPComponentsMonitoringRestFactory.build({}, {createSnmp: true, createPoll: true, createVes: true});
81 mockRest.addHandler('fetch', ({baseUrl}) => {
82 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads`);
86 return SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {softwareProductId, version, componentId}).then(() => {
88 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
89 expect(monitoring[trap]).toEqual(response[trap]);
90 expect(monitoring[poll]).toEqual(response[poll]);
91 expect(monitoring[ves]).toEqual(response[ves]);
96 it('Upload file', done => {
98 mockRest.addHandler('post', ({baseUrl}) => {
99 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads/types/${fileTypes.SNMP_TRAP}`);
102 var debug = {hello: 'world'};
103 let file = new Blob([JSON.stringify(debug, null, 2)], {type: 'application/json'});;
104 let formData = new FormData();
105 formData.append('upload', file);
106 return SoftwareProductComponentsMonitoringActionHelper.uploadFile(store.dispatch, {
112 type: fileTypes.SNMP_TRAP
114 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
115 expect(monitoring[poll]).toEqual(undefined);
116 expect(monitoring[ves]).toEqual(undefined);
117 expect(monitoring[trap]).toEqual('blob');
123 it('Delete snmp trap file', done => {
124 mockRest.addHandler('destroy', ({baseUrl}) => {
125 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads/types/${fileTypes.SNMP_TRAP}`);
130 return SoftwareProductComponentsMonitoringActionHelper.deleteFile(store.dispatch, {
134 type: fileTypes.SNMP_TRAP
135 }).then((dispatch) => {
136 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
137 expect(monitoring[trap]).toEqual(undefined);