summaryrefslogtreecommitdiffstats
path: root/pmdictionaryvalidation/src/test/java/org/onap/functional/PmDictionaryValidateRuleFunctionalTest.java
blob: fc212e7b60476b5c9dbe8f147cd5a4c5c899b49f (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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * Copyright 2020 Nokia
 * <p>
 * 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
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * 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.
 */

package org.onap.functional;

import org.junit.Test;
import org.onap.functional.util.OnapCliWrapper;
import org.onap.validation.rule.PMDictionaryValidate;
import org.onap.validation.rule.PMDictionaryValidateResponse;

import java.net.URISyntaxException;

import static org.assertj.core.api.Assertions.assertThat;
import static org.onap.functional.util.ValidationUtility.OPERATION_STATUS_FAILED;
import static org.onap.functional.util.ValidationUtility.OPERATION_STATUS_PASS;
import static org.onap.functional.util.ValidationUtility.getCliCommandValidationResult;
import static org.onap.functional.util.ValidationUtility.verifyThatOperationFinishedWithError;
import static org.onap.functional.util.ValidationUtility.verifyThatOperationFinishedWithoutAnyError;


public class PmDictionaryValidateRuleFunctionalTest {


    private static final String YAML_SCHEMA_SIMPLE_VALID_SCHEMA_YAML = "yaml_schema/Simple_Valid_Schema.yaml";
    private static final String NO_ERRORS = "[]";
    private static final String YAML_SCHEMA_PM_DICTIONARY_YAML = "yaml_schema/PM_Dictionary.yaml";
    private static final String PATH_TO_NON_EXITING_FILE_YAML = "path/to/nonExitingFile.yaml";
    private static final String NOT_YAML_FILE_TXT = "Not_Yaml_File.txt";

    @Test
    public void shouldSuccessfullyValidatePMDictionaryYamlFile() throws URISyntaxException {
        // given
        OnapCliWrapper cli = new OnapCliWrapper(createPnfValidationRequestInfo(YAML_SCHEMA_SIMPLE_VALID_SCHEMA_YAML));

        // when
        cli.handle();

        // then
        final PMDictionaryValidateResponse result = getCliCommandValidationResult(cli, PMDictionaryValidateResponse.class);

        assertThat(result.getFile()).contains(YAML_SCHEMA_SIMPLE_VALID_SCHEMA_YAML);
        assertThat(result.getPlatform()).contains(PMDictionaryValidateResponse.PLATFORM_VTP_1_0);
        assertThat(result.getContact()).contains(PMDictionaryValidateResponse.ONAP_DISCUSS_LISTS_ONAP_ORG);
        assertThat(result.getCriteria()).isEqualTo(OPERATION_STATUS_PASS);
        assertThat(result.getErrors()).isEqualTo(NO_ERRORS);
        verifyThatOperationFinishedWithoutAnyError(cli);
    }

    @Test
    public void shouldFailsWhenPMDictionaryYamlFileHasSomeErrors() throws URISyntaxException {
        // given
        OnapCliWrapper cli = new OnapCliWrapper(createPnfValidationRequestInfo(YAML_SCHEMA_PM_DICTIONARY_YAML));

        // when
        cli.handle();

        // then
        final PMDictionaryValidateResponse result = getCliCommandValidationResult(cli, PMDictionaryValidateResponse.class);

        assertThat(result.getFile()).contains(YAML_SCHEMA_PM_DICTIONARY_YAML);
        assertThat(result.getPlatform()).contains(PMDictionaryValidateResponse.PLATFORM_VTP_1_0);
        assertThat(result.getContact()).contains(PMDictionaryValidateResponse.ONAP_DISCUSS_LISTS_ONAP_ORG);
        assertThat(result.getCriteria()).isEqualTo(OPERATION_STATUS_FAILED);
        final String errors = result.getErrors();
        assertThat(errors).contains(
                "Value(s) is/are not in array of accepted values.",
                "accepted value(s):  [float, uint32, uint64]",
                "Key not found: measChangeType",
                "accepted value(s):  [X, Y, Z]"
        );
        verifyThatOperationFinishedWithoutAnyError(cli);
    }

    @Test
    public void shouldReportAnErrorWhenYamlFileDoesNotExist() {
        // given
        OnapCliWrapper cli = new OnapCliWrapper(new String[]{PATH_TO_NON_EXITING_FILE_YAML});

        // when
        cli.handle();

        verifyThatOperationFinishedWithError(cli);
    }


    @Test
    public void shouldReportThatValidationFailedWithInternalError() throws URISyntaxException {
        // given
        OnapCliWrapper cli = new OnapCliWrapper(createPnfValidationRequestInfo(NOT_YAML_FILE_TXT));

        // when
        cli.handle();

        // then
        final PMDictionaryValidateResponse result = getCliCommandValidationResult(cli, PMDictionaryValidateResponse.class);

        assertThat(result.getFile()).contains(NOT_YAML_FILE_TXT);
        assertThat(result.getPlatform()).contains(PMDictionaryValidateResponse.PLATFORM_VTP_1_0);
        assertThat(result.getContact()).contains(PMDictionaryValidateResponse.ONAP_DISCUSS_LISTS_ONAP_ORG);
        assertThat(result.getCriteria()).isEqualTo(OPERATION_STATUS_FAILED);
        assertThat(result.getErrors()).contains("Provided yaml file has invalid structure!");
        verifyThatOperationFinishedWithoutAnyError(cli);
    }


    private String[] createPnfValidationRequestInfo(String yamlPath) throws URISyntaxException {
        return new String[]{
                "--product", "onap-honolulu",
                "pm-dictionary-validate",
                "--format", "json",
                "--yaml", absoluteFilePath(yamlPath)
        };
    }


    public static String absoluteFilePath(String relativeFilePath) throws URISyntaxException {
        return PMDictionaryValidate.class.getClassLoader().getResource(relativeFilePath)
                .toURI().getPath();
    }
}