cc79f9eb69e86163a6ef83235c7e8bbd5c49ea50
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.plugins.context.schema.avro;
22
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25
26 import org.junit.After;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
30 import org.onap.policy.apex.context.parameters.ContextParameterConstants;
31 import org.onap.policy.apex.context.parameters.SchemaParameters;
32 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
33 import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
34 import org.onap.policy.apex.model.basicmodel.service.ModelService;
35 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
36 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
37 import org.onap.policy.common.parameters.ParameterService;
38
39 /**
40  * The Class TestAvroSchemaHelperBadSchemas.
41  *
42  * @author Liam Fallon (liam.fallon@ericsson.com)
43  * @version 
44  */
45 public class TestAvroSchemaHelperBadSchemas {
46     private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
47     private AxContextSchemas schemas;
48
49     /**
50      * Inits the test.
51      */
52     @Before
53     public void initTest() {
54         schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
55         ModelService.registerModel(AxContextSchemas.class, schemas);
56     }
57
58     /**
59      * Inits the context.
60      */
61     @Before
62     public void initContext() {
63         SchemaParameters schemaParameters = new SchemaParameters();
64         schemaParameters.setName(ContextParameterConstants.SCHEMA_GROUP_NAME);
65         schemaParameters.getSchemaHelperParameterMap().put("AVRO", new AvroSchemaHelperParameters());
66         ParameterService.register(schemaParameters);
67         
68     }
69
70     /**
71      * Clear context.
72      */
73     @After
74     public void clearContext() {
75         ParameterService.deregister(ContextParameterConstants.SCHEMA_GROUP_NAME);
76     }
77
78     /**
79      * Bad schema test.
80      */
81     @Test
82     public void badSchemaTest() {
83         final AxContextSchema avroBadSchema0 = new AxContextSchema(new AxArtifactKey("AvroBad0", "0.0.1"), "AVRO", "}");
84         schemas.getSchemasMap().put(avroBadSchema0.getKey(), avroBadSchema0);
85
86         try {
87             new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema0.getKey());
88             fail("This test should throw an exception");
89         } catch (final Exception e) {
90             assertTrue(e.getMessage()
91                     .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad0:0.0.1\" schema is invalid"));
92         }
93
94         final AxContextSchema avroBadSchema1 = new AxContextSchema(new AxArtifactKey("AvroBad1", "0.0.1"), "AVRO", "");
95         schemas.getSchemasMap().put(avroBadSchema1.getKey(), avroBadSchema1);
96
97         try {
98             new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema1.getKey());
99             fail("This test should throw an exception");
100         } catch (final Exception e) {
101             assertTrue(e.getMessage()
102                     .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad1:0.0.1\" schema is invalid"));
103         }
104
105         final AxContextSchema avroBadSchema2 =
106                 new AxContextSchema(new AxArtifactKey("AvroBad2", "0.0.1"), "AVRO", "{}");
107         schemas.getSchemasMap().put(avroBadSchema2.getKey(), avroBadSchema2);
108
109         try {
110             new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema2.getKey());
111             fail("This test should throw an exception");
112         } catch (final Exception e) {
113             assertTrue(e.getMessage()
114                     .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad2:0.0.1\" schema is invalid"));
115         }
116
117         final AxContextSchema avroBadSchema3 =
118                 new AxContextSchema(new AxArtifactKey("AvroBad3", "0.0.1"), "AVRO", "{zooby}");
119         schemas.getSchemasMap().put(avroBadSchema3.getKey(), avroBadSchema3);
120
121         try {
122             new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema3.getKey());
123             fail("This test should throw an exception");
124         } catch (final Exception e) {
125             assertTrue(e.getMessage()
126                     .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad3:0.0.1\" schema is invalid"));
127         }
128
129         final AxContextSchema avroBadSchema4 =
130                 new AxContextSchema(new AxArtifactKey("AvroBad4", "0.0.1"), "AVRO", "{\"zooby\"}");
131         schemas.getSchemasMap().put(avroBadSchema4.getKey(), avroBadSchema4);
132
133         try {
134             new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema4.getKey());
135             fail("This test should throw an exception");
136         } catch (final Exception e) {
137             assertTrue(e.getMessage()
138                     .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad4:0.0.1\" schema is invalid"));
139         }
140
141         final AxContextSchema avroBadSchema5 =
142                 new AxContextSchema(new AxArtifactKey("AvroBad5", "0.0.1"), "AVRO", "{\"type\": \"zooby\"}");
143         schemas.getSchemasMap().put(avroBadSchema5.getKey(), avroBadSchema5);
144
145         try {
146             new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema5.getKey());
147             fail("This test should throw an exception");
148         } catch (final Exception e) {
149             assertTrue(e.getMessage()
150                     .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad5:0.0.1\" schema is invalid"));
151         }
152     }
153 }