d0d994a05b94698f0bef2758e8cf65e72078d512
[policy/apex-pdp.git] / model / context-model / src / test / java / org / onap / policy / apex / model / contextmodel / concepts / ContextAlbumsTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2019 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.model.contextmodel.concepts;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertNotEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertTrue;
29 import static org.junit.Assert.fail;
30
31 import org.junit.Test;
32 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
33 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
34 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult;
35 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum;
36 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums;
37
38 /**
39  * Context album tests.
40  *
41  * @author Liam Fallon (liam.fallon@ericsson.com)
42  */
43 public class ContextAlbumsTest {
44
45     @Test
46     public void testContextAlbums() {
47         assertNotNull(new AxContextAlbum());
48         assertNotNull(new AxContextAlbum(new AxArtifactKey()));
49         assertNotNull(new AxContextAlbum(new AxArtifactKey(), "AlbumScope", false, new AxArtifactKey()));
50
51         final AxArtifactKey albumKey = new AxArtifactKey("AlbumName", "0.0.1");
52         final AxArtifactKey albumSchemaKey = new AxArtifactKey("AlbumSchemaName", "0.0.1");
53
54         final AxContextAlbum album = new AxContextAlbum(albumKey, "AlbumScope", false, albumSchemaKey);
55         assertNotNull(album);
56
57         final AxArtifactKey newKey = new AxArtifactKey("NewAlbumName", "0.0.1");
58         album.setKey(newKey);
59         assertEquals("NewAlbumName:0.0.1", album.getKey().getId());
60         assertEquals("NewAlbumName:0.0.1", album.getKeys().get(0).getId());
61         album.setKey(albumKey);
62
63         try {
64             album.setScope("");
65             fail("test should throw an exception here");
66         } catch (final Exception e) {
67             assertEquals("parameter \"scope\": value \"\", does not match regular expression \"[A-Za-z0-9\\-_]+\"",
68                             e.getMessage());
69         }
70
71         album.setScope("NewAlbumScope");
72         assertEquals("NewAlbumScope", album.getScope());
73
74         assertEquals(false, album.isWritable());
75         album.setWritable(true);
76         assertEquals(true, album.isWritable());
77
78         final AxArtifactKey newSchemaKey = new AxArtifactKey("NewAlbumSchemaName", "0.0.1");
79         album.setItemSchema(newSchemaKey);
80         assertEquals("NewAlbumSchemaName:0.0.1", album.getItemSchema().getId());
81         album.setItemSchema(albumSchemaKey);
82
83         AxValidationResult result = new AxValidationResult();
84         result = album.validate(result);
85         assertEquals(ValidationResult.VALID, result.getValidationResult());
86
87         album.setKey(AxArtifactKey.getNullKey());
88         result = new AxValidationResult();
89         result = album.validate(result);
90         assertEquals(ValidationResult.INVALID, result.getValidationResult());
91
92         album.setKey(newKey);
93         result = new AxValidationResult();
94         result = album.validate(result);
95         assertEquals(ValidationResult.VALID, result.getValidationResult());
96
97         album.setScope("UNDEFINED");
98         result = new AxValidationResult();
99         result = album.validate(result);
100         assertEquals(ValidationResult.INVALID, result.getValidationResult());
101
102         album.setScope("NewAlbumScope");
103         result = new AxValidationResult();
104         result = album.validate(result);
105         assertEquals(ValidationResult.VALID, result.getValidationResult());
106
107         album.setItemSchema(AxArtifactKey.getNullKey());
108         result = new AxValidationResult();
109         result = album.validate(result);
110         assertEquals(ValidationResult.INVALID, result.getValidationResult());
111
112         album.setItemSchema(albumSchemaKey);
113         result = new AxValidationResult();
114         result = album.validate(result);
115         assertEquals(ValidationResult.VALID, result.getValidationResult());
116
117         album.clean();
118
119         final AxContextAlbum clonedAlbum = new AxContextAlbum(album);
120         assertEquals("AxContextAlbum:(key=AxArtifactKey:(name=NewAlbumName,version=0.0.1),"
121                         + "scope=NewAlbumScope,isWritable=true,itemSchema="
122                         + "AxArtifactKey:(name=AlbumSchemaName,version=0.0.1))", clonedAlbum.toString());
123
124         assertFalse(album.hashCode() == 0);
125
126         assertTrue(album.equals(album));
127         assertTrue(album.equals(clonedAlbum));
128         assertFalse(album.equals(null));
129         assertFalse(album.equals((Object)"Hello"));
130         assertFalse(album.equals(new AxContextAlbum(new AxArtifactKey(), "Scope", false, AxArtifactKey.getNullKey())));
131         assertFalse(album.equals(new AxContextAlbum(newKey, "Scope", false, AxArtifactKey.getNullKey())));
132         assertFalse(album.equals(new AxContextAlbum(newKey, "NewAlbumScope", false, AxArtifactKey.getNullKey())));
133         assertFalse(album.equals(new AxContextAlbum(newKey, "NewAlbumScope", true, AxArtifactKey.getNullKey())));
134         assertTrue(album.equals(new AxContextAlbum(newKey, "NewAlbumScope", true, albumSchemaKey)));
135
136         assertEquals(0, album.compareTo(album));
137         assertEquals(0, album.compareTo(clonedAlbum));
138         assertNotEquals(0, album.compareTo(null));
139         assertNotEquals(0, album.compareTo(new AxArtifactKey()));
140         assertNotEquals(0, album.compareTo(
141                         new AxContextAlbum(new AxArtifactKey(), "Scope", false, AxArtifactKey.getNullKey())));
142         assertNotEquals(0, album.compareTo(new AxContextAlbum(newKey, "Scope", false, AxArtifactKey.getNullKey())));
143         assertNotEquals(0, album
144                         .compareTo(new AxContextAlbum(newKey, "NewAlbumScope", false, AxArtifactKey.getNullKey())));
145         assertNotEquals(0,
146                         album.compareTo(new AxContextAlbum(newKey, "NewAlbumScope", true, AxArtifactKey.getNullKey())));
147         assertEquals(0, album.compareTo(new AxContextAlbum(newKey, "NewAlbumScope", true, albumSchemaKey)));
148
149         final AxContextAlbums albums = new AxContextAlbums();
150         result = new AxValidationResult();
151         result = albums.validate(result);
152         assertEquals(ValidationResult.INVALID, result.getValidationResult());
153
154         // Observation, no albums in album map
155         albums.setKey(new AxArtifactKey("AlbumsKey", "0.0.1"));
156         result = new AxValidationResult();
157         result = albums.validate(result);
158         assertEquals(ValidationResult.OBSERVATION, result.getValidationResult());
159
160         albums.getAlbumsMap().put(newKey, album);
161         result = new AxValidationResult();
162         result = albums.validate(result);
163         assertEquals(ValidationResult.VALID, result.getValidationResult());
164
165         albums.getAlbumsMap().put(AxArtifactKey.getNullKey(), null);
166         result = new AxValidationResult();
167         result = albums.validate(result);
168         assertEquals(ValidationResult.INVALID, result.getValidationResult());
169
170         albums.getAlbumsMap().remove(AxArtifactKey.getNullKey());
171         result = new AxValidationResult();
172         result = albums.validate(result);
173         assertEquals(ValidationResult.VALID, result.getValidationResult());
174
175         albums.getAlbumsMap().put(new AxArtifactKey("NullValueKey", "0.0.1"), null);
176         result = new AxValidationResult();
177         result = albums.validate(result);
178         assertEquals(ValidationResult.INVALID, result.getValidationResult());
179
180         albums.getAlbumsMap().remove(new AxArtifactKey("NullValueKey", "0.0.1"));
181         result = new AxValidationResult();
182         result = albums.validate(result);
183         assertEquals(ValidationResult.VALID, result.getValidationResult());
184
185         albums.clean();
186
187         final AxContextAlbums clonedAlbums = new AxContextAlbums(albums);
188         assertTrue(clonedAlbums.toString().startsWith(
189                         "AxContextAlbums:(AxContextAlbums:(key=AxArtifactKey:(name=AlbumsKey,version=0.0.1)"));
190
191         assertFalse(albums.hashCode() == 0);
192
193         assertTrue(albums.equals(albums));
194         assertTrue(albums.equals(clonedAlbums));
195         assertFalse(albums.equals(null));
196         assertFalse(albums.equals((Object)"Hello"));
197         assertFalse(albums.equals(new AxContextAlbums(new AxArtifactKey())));
198
199         assertEquals(0, albums.compareTo(albums));
200         assertEquals(0, albums.compareTo(clonedAlbums));
201         assertNotEquals(0, albums.compareTo(null));
202         assertNotEquals(0, albums.compareTo(new AxArtifactKey()));
203         assertNotEquals(0, albums.compareTo(new AxContextAlbums(new AxArtifactKey())));
204
205         clonedAlbums.get(newKey).setScope("YetAnotherScope");
206         assertNotEquals(0, albums.compareTo(clonedAlbums));
207
208         assertEquals("NewAlbumName", albums.get("NewAlbumName").getKey().getName());
209         assertEquals("NewAlbumName", albums.get("NewAlbumName", "0.0.1").getKey().getName());
210         assertEquals(1, albums.getAll("NewAlbumName", "0.0.1").size());
211         assertEquals(0, albums.getAll("NonExistantAlbumName").size());
212     }
213 }