aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-ui/test-utils/Util.js
blob: 971439bfaf93b5e8b4a3b8e5002eca5171ddb036 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
 * Copyright © 2016-2018 European Support Limited
 *
 * 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.
 */
import deepFreeze from 'deep-freeze';
import times from 'lodash/times';
import pick from 'lodash/pick';
import intersection from 'lodash/intersection';
import ReactTestUtils from 'react-dom/test-utils';

export const buildListFromFactory = (factory, quantity = 3, overrides) => {
	let list = [];
	times(quantity, () =>{
		list.push(factory.build(overrides));
	});
	return list;
};

export const buildFromExistingObject = (factory, obj, overrides = {}, options = {}) => {
	const mock = factory.build();
	const sharedProperties = intersection(Object.keys(mock), Object.keys(obj));
	return factory.build({...pick(obj, sharedProperties), ...overrides}, options);
};

//returned object should be treated as immutable.
export const cloneAndSet = (obj, path, value) => {
	let retVal = {...obj};
	let inner = retVal;

	if (typeof path === 'string') {
		path = path.split('.');
	}

	for (let i = 0; i < path.length - 1; i++) {
		inner[path[i]] = {
			...inner[path[i]]
		};
		inner = inner[path[i]];
	}
	inner[path[path.length - 1]] = value;
	return deepFreeze(retVal);
};

/**
 * array findAllRenderedDOMComponentsWithTestId(
 ReactComponent tree,
 function test
 )
 * @param tree - ReactComponent
 * @param testId - string
 * @returns {Array.<T>}
 */
export const findAllRenderedComponentsWithTestId = (tree, testId) => {
	return ReactTestUtils.findAllInRenderedTree(tree, component => component.props.testId === testId);
};

/**
 * Finds all instance of components in the rendered tree that are DOM
 * components with the data-test-id
 * @return {array} an array of all the matches.
 */
export const scryRenderedDOMComponentsWithTestId = (root, testId) => {
	return ReactTestUtils.findAllInRenderedTree(root, function (inst) {
		if (ReactTestUtils.isDOMComponent(inst)) {
			var compTestId = inst.getAttribute('data-test-id');
			return compTestId === testId;
		}
		return false;
	});
};
lass="s">``` Multiple controllers can be configured so that Clamp is able to receive the notifications from different SDC servers. Each Clamp existing in a cluster should have different consumerGroup and consumerId so that they can each consume the SDC notification. The environmentName is normally the Dmaap Topic used by SDC. If the sdcAddress is not specified or not available (connection failure) the messageBusAddresses will be used (Dmaap servers) ### Docker-compose A [docker-compose example file](extra/docker/clamp/docker-compose.yml) can be found under the [extra/docker/clamp/ folder](extra/docker/). Once the image has been built and is available locally, you can use the `docker-compose up` command to deploy a prepopullated database and a clamp instance available on [http://localhost:8080/designer/index.html](http://localhost:8080/designer/index.html). ### Logs Clamp uses logback framework to generate logs. The logback.xml file cand be found under the [src/main/resources/ folder](src/main/resources). With the default log settings, all logs will be generated into console and into root.log file under the Clamp root folder. The root.log file is not allowed to be appended, thus restarting the clamp will result in cleaning of the old log files. ### Api You can see the swagger definition for the jaxrs apis at `/restservices/clds/v1/openapi.json` ## Clamp Credentials Credentials should be specified in `src/main/resources/clds/clds-users.json`. You might specify you own credential file by redefining the `clamp.config.files.cldsUsers` in `application.properties`. Passwords should be hashed using Bcrypt : ``` # pip3 install bcrypt # if you don't have the bcrypt python lib installed, should be done once. # python3 -c 'import bcrypt; print(bcrypt.hashpw("password".encode(), bcrypt.gensalt(rounds=10, prefix=b"2a")))' ``` Default credentials are admin/password and cs0008/password.