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 SoftwareProductComponentsMonitoringActionHelper from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js';
20 import {fileTypes} from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js';
21 import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
22 import {VSPComponentsMonitoringRestFactory, trap, poll, ves} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsMonitoringFactories.js';
24 const softwareProductId = '123';
25 const componentId = '123';
26 const version = VersionFactory.build();
28 describe('Software Product Components Monitoring Module Tests', function () {
33 store = storeCreator();
37 it('Fetch for existing files - no files', done => {
39 let emptyResult = VSPComponentsMonitoringRestFactory.build();
41 mockRest.addHandler('fetch', ({ baseUrl}) => {
42 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads`);
46 return SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {softwareProductId, version, componentId}).then(() => {
47 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
48 expect(monitoring[trap]).toEqual(emptyResult[trap]);
49 expect(monitoring[poll]).toEqual(emptyResult[poll]);
50 expect(monitoring[ves]).toEqual(emptyResult[ves]);
57 it('Fetch for existing files - only snmp trap file exists', done => {
58 let response = VSPComponentsMonitoringRestFactory.build({}, {createTrap: true});
60 mockRest.addHandler('fetch', ({ baseUrl}) => {
61 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads`);
65 return SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {softwareProductId, version, componentId}).then(() => {
67 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
68 expect(monitoring[poll]).toEqual(undefined);
69 expect(monitoring[trap]).toEqual(response[trap]);
70 expect(monitoring[ves]).toEqual(undefined);
76 it('Fetch for existing files - all files exist', done => {
77 let response = VSPComponentsMonitoringRestFactory.build({}, {createSnmp: true, createPoll: true, createVes: true});
79 mockRest.addHandler('fetch', ({baseUrl}) => {
80 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads`);
84 return SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, {softwareProductId, version, componentId}).then(() => {
86 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
87 expect(monitoring[trap]).toEqual(response[trap]);
88 expect(monitoring[poll]).toEqual(response[poll]);
89 expect(monitoring[ves]).toEqual(response[ves]);
94 it('Upload file', done => {
96 mockRest.addHandler('post', ({baseUrl}) => {
97 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads/types/${fileTypes.SNMP_TRAP}`);
100 var debug = {hello: 'world'};
101 let file = new Blob([JSON.stringify(debug, null, 2)], {type: 'application/json'});;
102 let formData = new FormData();
103 formData.append('upload', file);
104 return SoftwareProductComponentsMonitoringActionHelper.uploadFile(store.dispatch, {
110 type: fileTypes.SNMP_TRAP
112 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
113 expect(monitoring[poll]).toEqual(undefined);
114 expect(monitoring[ves]).toEqual(undefined);
115 expect(monitoring[trap]).toEqual('blob');
121 it('Delete snmp trap file', done => {
122 mockRest.addHandler('destroy', ({baseUrl}) => {
123 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/uploads/types/${fileTypes.SNMP_TRAP}`);
128 return SoftwareProductComponentsMonitoringActionHelper.deleteFile(store.dispatch, {
132 type: fileTypes.SNMP_TRAP
134 var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState();
135 expect(monitoring[trap]).toEqual(undefined);