summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/src
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-ui/src')
-rw-r--r--openecomp-ui/src/nfvo-utils/i18n/en.json6
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js2
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx24
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx4
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx268
5 files changed, 215 insertions, 89 deletions
diff --git a/openecomp-ui/src/nfvo-utils/i18n/en.json b/openecomp-ui/src/nfvo-utils/i18n/en.json
index 1ad23b7a1a..f57b7fdd3c 100644
--- a/openecomp-ui/src/nfvo-utils/i18n/en.json
+++ b/openecomp-ui/src/nfvo-utils/i18n/en.json
@@ -650,8 +650,10 @@
"Selected Compliance Tests": "Selected Compliance Tests",
"Value Should Be Minimum of {minLength} characters and a Maximum of {maxLength} characters": "Value Should Be Minimum of {minLength} characters and a Maximum of {maxLength} characters",
"{title} Inputs :": "{title} Inputs :",
- "Scenario: {scenario} | Status: {status}": "Scenario: {scenario} | Status: {status}",
+ "Scenario: {scenario} | Title: {title} | Test Case: {testCaseName} | Status: {status}": "Scenario: {scenario} | Title: {title} | Test Case: {testCaseName} | Status: {status}",
"{title} results are not available": "{title} results are not available",
"Test Results": "Test Results",
- "No Validation Checks Performed": "No Validation Checks Performed"
+ "No Validation Checks Performed": "No Validation Checks Performed",
+ "Unknown": "Unknown"
+
}
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js
index d19416a2aa..1ebb94b77c 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js
@@ -32,7 +32,7 @@ function postVSPCertificationChecks(tests) {
function fetchVspChecks() {
const restPrefix = Configuration.get('restPrefix');
- return RestAPIUtil.get(`${restPrefix}/v1.0/externaltesting/testcasetree`);
+ return RestAPIUtil.fetch(`${restPrefix}/v1.0/externaltesting/testcasetree`);
}
const SoftwareProductValidationActionHelper = {
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx
index 8611c41937..a8ea3804b4 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx
@@ -210,7 +210,10 @@ class SoftwareProductValidation extends Component {
softwareProductValidation.vspChecks
);
}
- this.setState({ activeTab: tabsMapping.SETUP });
+ this.setState({
+ activeTab: tabsMapping.SETUP,
+ goToValidationInput: false
+ });
setActiveTab({ activeTab: tabsMapping.SETUP });
}
}
@@ -269,6 +272,20 @@ class SoftwareProductValidation extends Component {
}
}
+ fetchDefaultValue(value) {
+ let { softwareProductId, version } = this.props;
+ let versionName = parseFloat(version.name).toFixed(1),
+ versionNumber =
+ versionName > 1 ? (versionName - 1).toFixed(1) : versionName,
+ versionUUID = version.id;
+ value =
+ value === '$vspid'
+ ? softwareProductId
+ : value === '$vspPreviousVersion' ? versionNumber : value;
+ value = value === '$vspVersionUUID' ? versionUUID : value || '';
+ return value;
+ }
+
formTestsRequest(item, testsRequest) {
let { vspTestsMap } = this.props.softwareProductValidation;
testsRequest[item] = {
@@ -279,8 +296,9 @@ class SoftwareProductValidation extends Component {
endpoint: vspTestsMap[item]['endpoint']
};
vspTestsMap[item].parameters.forEach(parameter => {
- testsRequest[item].parameters[parameter.name] =
- parameter.defaultValue || '';
+ testsRequest[item].parameters[
+ parameter.name
+ ] = this.fetchDefaultValue(parameter.defaultValue);
});
return testsRequest;
}
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx
index c2990a2058..26a6003b5a 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx
@@ -284,8 +284,8 @@ class VspValidationInputs extends Component {
size="default"
data-test-id="proceed-to-validation-results-btn"
disabled={false}
- className="proceed-to-validation-monitor-btn"
- onClick={() => this.performVSPTests()}>
+ type="submit"
+ className="proceed-to-validation-monitor-btn">
{i18n('Submit')}
</Button>
</Form>
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx
index b6cc1d5bdc..162d281ee4 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx
@@ -74,109 +74,215 @@ class SoftwareProductValidationResultsView extends React.Component {
};
}
- buildSubAccordions(result) {
- if (result.status && result.status.toLowerCase() === 'completed') {
- if (!result.results.testResults) {
+ getTitle(result) {
+ let { vspTestsMap } = this.props.softwareProductValidation;
+ let title = vspTestsMap[result.testCaseName]
+ ? vspTestsMap[result.testCaseName].title
+ : i18n('Unknown');
+ return i18n(
+ 'Scenario: {scenario} | Title: {title} | Test Case: {testCaseName} | Status: {status}',
+ {
+ scenario: result.scenario || i18n('Unknown'),
+ status: result.status || i18n('Unknown'),
+ testCaseName: result.testCaseName || i18n('Unknown'),
+ title: title
+ }
+ );
+ }
+
+ renderJSON(result) {
+ return (
+ <li type="none">
+ <textarea
+ disabled={true}
+ className="validation-results-test-result-json"
+ value={JSON.stringify(result, null, 2)}
+ />
+ </li>
+ );
+ }
+
+ renderError(result) {
+ if (Array.isArray(result)) {
+ return result.map((parameter, index) => {
return (
- <div
- title={i18n('Scenario: {scenario} | Status: {status}', {
- scenario: result.scenario,
- status: result.status
- })}>
+ <li type="none" key={index}>
<SVGIcon
color="negative"
name="errorCircle"
labelPosition="right"
/>
<span className="validation-results-test-result-label">
- {i18n('{title} results are not available', {
- title: result.scenario
- })}
+ {(parameter.code || '') +
+ ' | ' +
+ (parameter.advice || parameter.message)}
</span>
- </div>
+ </li>
);
- }
- return (
- <Accordion
- dataTestId="vsp-validation-test-result-success"
- title={i18n('Scenario: {scenario} | Status: {status}', {
- scenario: result.scenario,
- status: result.status
- })}>
- {Object.keys(result.results.testResults).map(
- (key, index) => {
- let title = unCamelCasedString(key);
- if (result.results.testResults[key].length > 0) {
- return (
- <Accordion
- dataTestId={title}
- title={title}
- key={index}>
- <TestResultComponent
- tests={
- result.results.testResults[key]
- }
- />
- </Accordion>
- );
- } else {
- return (
- <div>
- {i18n(
- '{title} results are not available',
- {
- title: title
- }
- )}
- </div>
- );
- }
- }
- )}
- </Accordion>
- );
- } else if (
- result.status &&
- result.status.toLowerCase() === 'failed' &&
- result.results.errors
- ) {
+ });
+ } else {
return (
- <Accordion
- dataTestId="vsp-validation-test-result-success"
- title={i18n('Scenario: {scenario} | Status: {status}', {
- scenario: result.scenario,
- status: result.status
- })}>
- {result.results.errors.map((element, index) => {
- return (
- <li type="none" key={index}>
- <SVGIcon
- color="negative"
- name="errorCircle"
- labelPosition="right"
- />
- <span className="validation-results-test-result-label">
- {element.reason + ' | ' + element.advice}
- </span>
- </li>
- );
- })}
- </Accordion>
+ <li type="none">
+ <SVGIcon
+ color="negative"
+ name="errorCircle"
+ labelPosition="right"
+ />
+ <span className="validation-results-test-result-label">
+ {(result.code || '') +
+ ' | ' +
+ (result.advice || result.message)}
+ </span>
+ </li>
);
- } else if (result.message || result.httpStatus) {
+ }
+ }
+
+ renderResults(result) {
+ if (typeof result === 'string' || result instanceof String) {
return (
<div>
<SVGIcon
- color="negative"
+ color="warning"
name="errorCircle"
labelPosition="right"
/>
<span className="validation-results-test-result-label">
- {result.message + ' | ' + result.httpStatus}
+ {result}
</span>
</div>
);
}
+ return Object.keys(result).map((key, index) => {
+ let title = unCamelCasedString(key);
+ if (
+ typeof result[key] === 'string' ||
+ result[key] instanceof String
+ ) {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId={title}
+ title={title}
+ key={index}>
+ {this.renderString(result[key])}
+ </Accordion>
+ );
+ } else if (Array.isArray(result[key])) {
+ if (result[key].length > 0) {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId={title}
+ title={title}
+ key={index}>
+ <TestResultComponent tests={result[key]} />
+ </Accordion>
+ );
+ } else {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId={title}
+ title={title}
+ key={index}>
+ {i18n('{title} results are not available', {
+ title: title
+ })}
+ </Accordion>
+ );
+ }
+ } else {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId={title}
+ title={title}
+ key={index}>
+ {this.renderJSON(result[key])}
+ </Accordion>
+ );
+ }
+ });
+ }
+
+ renderString(result) {
+ return (
+ <li type="none">
+ <textarea
+ type="textarea"
+ disabled={true}
+ className="validation-results-test-result-string"
+ value={result}
+ />
+ </li>
+ );
+ }
+
+ buildSubAccordions(result) {
+ let results = result.results;
+
+ if (!results) {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId="vsp-test-no-results"
+ title={this.getTitle(result)}>
+ {this.renderJSON(result)}
+ </Accordion>
+ );
+ } else if (typeof results === 'string' || results instanceof String) {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId="vsp-test-string-results"
+ title={this.getTitle(result)}>
+ {this.renderString(results)}
+ </Accordion>
+ );
+ } else {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId="vsp-test-object-results"
+ title={this.getTitle(result)}>
+ {Object.keys(results).length === 0
+ ? this.renderString(
+ i18n('{title} results are not available', {
+ title: 'Test'
+ })
+ )
+ : Object.keys(results).map(key => {
+ if (key === 'errors' || key === 'error') {
+ return this.renderError(results[key]);
+ } else if (key === 'testResults') {
+ return this.renderResults(results[key]);
+ } else {
+ let title = unCamelCasedString(key);
+ if (results[key] instanceof Object) {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId={title}
+ title={title}>
+ {this.renderJSON(results[key])}
+ </Accordion>
+ );
+ } else {
+ return (
+ <Accordion
+ defaultExpanded
+ dataTestId={title}
+ title={title}>
+ {this.renderString(results[key])}
+ </Accordion>
+ );
+ }
+ }
+ })}
+ </Accordion>
+ );
+ }
}
render() {