From efa037d34be7b1570efdc767c79fad8d4005f10e Mon Sep 17 00:00:00 2001 From: Michael Lando Date: Sun, 19 Feb 2017 12:57:33 +0200 Subject: Add new code new version Change-Id: Ic02a76313503b526f17c3df29eb387a29fe6a42a Signed-off-by: Michael Lando --- .../test/utils/errorResponseHandler.test.js | 135 +++++++++++++++++++ openecomp-ui/test/utils/restApiUtil.test.js | 149 +++++++++++++++++++++ openecomp-ui/test/utils/uuid.test.js | 52 +++++++ 3 files changed, 336 insertions(+) create mode 100644 openecomp-ui/test/utils/errorResponseHandler.test.js create mode 100644 openecomp-ui/test/utils/restApiUtil.test.js create mode 100644 openecomp-ui/test/utils/uuid.test.js (limited to 'openecomp-ui/test/utils') diff --git a/openecomp-ui/test/utils/errorResponseHandler.test.js b/openecomp-ui/test/utils/errorResponseHandler.test.js new file mode 100644 index 0000000000..fd9dec6a8d --- /dev/null +++ b/openecomp-ui/test/utils/errorResponseHandler.test.js @@ -0,0 +1,135 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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. + * ============LICENSE_END========================================================= + */ + +import deepFreeze from 'deep-freeze'; +import expect from 'expect'; +import {cloneAndSet} from '../../test-utils/Util.js'; +import store from 'sdc-app/AppStore.js'; +import errorResponseHandler from 'nfvo-utils/ErrorResponseHandler.js'; + +describe('Error Response Handler Util', () => { + + beforeEach(function () { + deepFreeze(store.getState()); + }); + + it('validating error in policyException', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + responseJSON: { + requestError: { + policyException: { + messageId: 'SVC4122', + text: 'Error: Invalid data.' + } + } + } + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: 'Error: SVC4122', msg: 'Error: Invalid data.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); + + it('validating error in serviceException with variables', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + responseJSON: { + requestError: { + serviceException: { + messageId: 'SVC4122', + text: "Error: Invalid artifact type '%1'.", + variables: ['newType'] + } + } + } + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: 'Error: SVC4122', msg: 'Error: Invalid artifact type newType.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); + + it('validating error in response', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + responseJSON: { + status: 'AA', + message: 'Error: Invalid data.' + } + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: 'AA', msg: 'Error: Invalid data.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); + + it('validating error in request', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + statusText: '500', + responseText: 'Internal server error.' + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: '500', msg: 'Internal server error.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); +}); diff --git a/openecomp-ui/test/utils/restApiUtil.test.js b/openecomp-ui/test/utils/restApiUtil.test.js new file mode 100644 index 0000000000..2a5e69b02e --- /dev/null +++ b/openecomp-ui/test/utils/restApiUtil.test.js @@ -0,0 +1,149 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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. + * ============LICENSE_END========================================================= + */ + +import expect from 'expect'; +import $ from 'jquery'; +import RestAPIUtil, {makeQueryParams} from 'src/nfvo-utils/RestAPIUtil'; + +const URL = 'http://bla.ble.blu/'; + +describe('RestAPIUtil Util class', () => { + + beforeEach(()=> { + $.ajax = (options) => options; + }); + + it('RestAPIUtil does exist', () => { + expect(RestAPIUtil).toExist(); + }); + + it('RestAPIUtil makeQueryParams does exist', () => { + expect(makeQueryParams).toExist(); + }); + + it('RestAPIUtil makeQueryParams params', () => { + const pageStart = 1, pageSize = 25; + const response = makeQueryParams({pagination: {pageStart, pageSize}}); + expect(response.pageStart).toBe(pageStart); + expect(response.pageSize).toBe(pageSize); + }); + + it('normal basic fetch', () => { + const response = RestAPIUtil.fetch(URL); + expect(response).toExist(); + }); + + it('no url', function () { + expect(function () { + RestAPIUtil.fetch(); + }).toThrow(/url/); + }); + + it('fetch with pagination', () => { + const pageStart = 1, pageSize = 25; + const response = RestAPIUtil.fetch(URL, {pagination: {pageStart, pageSize}}); + expect(response.pagination).toExist(); + expect(response.url).toInclude(`?pageStart=${pageStart}&pageSize=${pageSize}`); + }); + + it('fetch with sorting', () => { + const sortField = 'name', sortDir = 'ASCENDING'; + const response = RestAPIUtil.fetch(URL, {sorting: {sortField, sortDir}}); + expect(response.sorting).toExist(); + expect(response.url).toInclude(`?sortField=${sortField}&sortDir=${sortDir}`); + }); + + it('fetch with filtering', () => { + const baseFilter = [ + { + criterionValue: 'service', + fieldName: 'Brand', + operator: 'EQUALS', + type: 'STRING' + }, + { + criterionValue: 'resource', + fieldName: 'Brand', + operator: 'EQUALS', + type: 'STRING' + } + ]; + const response = RestAPIUtil.fetch(URL, {filtering: {filterCriteria: baseFilter, logicalRelation: 'OR'}}); + expect(response.filtering).toExist(); + expect(response.url).toInclude('?filter='); + }); + + it('fetch with qParams', () => { + const response = RestAPIUtil.fetch(URL, {qParams: {pageStart: 1, pageSize: 10}}); + expect(response.qParams).toExist(); + }); + + it('fetch with url on options', () => { + const response = RestAPIUtil.fetch(URL, {url:'12345', qParams: {pageStart: 1, pageSize: 10}}); + expect(response.qParams).toExist(); + }); + + it('fetch with url path param', () => { + let someData = 'data'; + const response = RestAPIUtil.fetch(`${URL}{someData}/`, {params: {someData}}); + expect(response.url).toInclude(`/${someData}/`); + }); + + it('fetch with url undefined path param', () => { + const response = RestAPIUtil.fetch(`${URL}{someData}/`, {params: {someData: undefined}}); + expect(response.url).toInclude('/undefined/'); + }); + + it('normal basic create', () => { + const response = RestAPIUtil.create(URL); + expect(response).toExist(); + }); + + it('create with FormData', () => { + let formData = new FormData(); + formData.append('username', 'Chris'); + const response = RestAPIUtil.create(URL, formData); + expect(response).toExist(); + }); + + it('create with FormData with md5', () => { + let formData = new FormData(); + formData.append('username', 'Chris'); + const response = RestAPIUtil.create(URL, formData, {md5: true}); + expect(response).toExist(); + }); + + it('create with file', () => { + let progressCallback = () => {}; + const response = RestAPIUtil.create(URL, {}, {progressCallback, fileSize: 123}); + expect(response).toExist(); + }); + + it('normal basic save', () => { + const response = RestAPIUtil.save(URL); + expect(response).toExist(); + }); + + it('normal basic delete', () => { + const response = RestAPIUtil.destroy(URL); + expect(response).toExist(); + }); + +}); diff --git a/openecomp-ui/test/utils/uuid.test.js b/openecomp-ui/test/utils/uuid.test.js new file mode 100644 index 0000000000..cd55baadea --- /dev/null +++ b/openecomp-ui/test/utils/uuid.test.js @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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. + * ============LICENSE_END========================================================= + */ + +import uuid from 'src/nfvo-utils/UUID.js'; +import expect from 'expect'; + +describe('UUID', () => { + + it('function does exist', () => { + expect(uuid).toExist(); + }); + + it('generate UUID synchronously', () => { + let result = uuid(undefined, true); + expect(result).toExist(); + }); + + it('generate UUID synchronously with number', () => { + let result = uuid(5, true); + expect(result).toExist(); + }); + + it('generate UUID synchronously with number', () => { + let result = uuid(1, true); + expect(result).toExist(); + }); + + it('generate UUID asynchronously', done => { + uuid().then(result => { + expect(result).toExist(); + done(); + }); + }); + +}); -- cgit 1.2.3-korg