9b0ce3205b216cfa8cec8ece4dd194c81e01dad5
[policy/gui.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2020 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.gui.editors.apex.rest.handling;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26
27 import java.io.IOException;
28 import javax.ws.rs.client.Entity;
29 import javax.ws.rs.core.Application;
30 import javax.ws.rs.core.MediaType;
31 import org.glassfish.jersey.media.multipart.MultiPartFeature;
32 import org.glassfish.jersey.server.ResourceConfig;
33 import org.glassfish.jersey.test.JerseyTest;
34 import org.junit.Test;
35 import org.onap.policy.apex.model.modelapi.ApexApiResult;
36 import org.onap.policy.apex.model.modelapi.ApexApiResult.Result;
37 import org.onap.policy.common.utils.resources.TextFileUtils;
38
39 /**
40  * Test Apex Editor Rest Resource.
41  *
42  * @author Liam Fallon (liam.fallon@ericsson.com)
43  */
44 public class ApexEditorRestResourceTest extends JerseyTest {
45     @Override
46     protected Application configure() {
47         return new ResourceConfig(ApexEditorRestResource.class).register(MultiPartFeature.class);
48     }
49
50     @Test
51     public void testSessionCreate() {
52         ApexApiResult result = target("editor/-2/Session/Create").request().get(ApexApiResult.class);
53         assertEquals(Result.FAILED, result.getResult());
54
55         result = target("editor/-1/Session/Create").request().get(ApexApiResult.class);
56         assertEquals(Result.SUCCESS, result.getResult());
57         final int sessionId = Integer.valueOf(result.getMessages().get(0));
58
59         result = target("editor/-1/Session/Create").request().get(ApexApiResult.class);
60         assertEquals(Result.SUCCESS, result.getResult());
61
62         final int corruptSessionId = ApexEditorRestResource.createCorruptSession();
63
64         target("editor/" + corruptSessionId + "/Model/Analyse").request().get(ApexApiResult.class);
65
66         result = target("editor/" + sessionId + "/Model/Analyse").request().get(ApexApiResult.class);
67         assertEquals(Result.SUCCESS, result.getResult());
68         result = target("editor/-12345/Model/Analyse").request().get(ApexApiResult.class);
69         assertEquals(Result.FAILED, result.getResult());
70         result = target("editor/12345/Model/Analyse").request().get(ApexApiResult.class);
71         assertEquals(Result.FAILED, result.getResult());
72
73         target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class);
74
75         result = target("editor/" + sessionId + "/Model/Validate").request().get(ApexApiResult.class);
76         assertEquals(Result.FAILED, result.getResult());
77         result = target("editor/-12345/Model/Validate").request().get(ApexApiResult.class);
78         assertEquals(Result.FAILED, result.getResult());
79         result = target("editor/12345/Model/Validate").request().get(ApexApiResult.class);
80         assertEquals(Result.FAILED, result.getResult());
81
82         final String modelString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
83             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002699\","
84             + "\"description\"      : \"A description of the model\"" + "}";
85         final Entity<String> csEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON);
86         result = target("editor/-12345/Model/Create").request().post(csEntity, ApexApiResult.class);
87         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
88         result = target("editor/-12345/Model/Create").request().post(csEntity, ApexApiResult.class);
89         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
90         result = target("editor/1234545/Model/Create").request().post(csEntity, ApexApiResult.class);
91         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
92         result = target("editor/" + sessionId + "/Model/Create").request().post(csEntity, ApexApiResult.class);
93         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
94
95         target("editor/" + corruptSessionId + "/Model/Create").request().post(csEntity, ApexApiResult.class);
96
97         result = target("editor/-12345/Model/Update").request().put(csEntity, ApexApiResult.class);
98         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
99         result = target("editor/-12345/Model/Update").request().put(csEntity, ApexApiResult.class);
100         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
101         result = target("editor/1234545/Model/Update").request().put(csEntity, ApexApiResult.class);
102         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
103         result = target("editor/" + sessionId + "/Model/Update").request().put(csEntity, ApexApiResult.class);
104         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
105
106         target("editor/" + corruptSessionId + "/Model/Update").request().put(csEntity, ApexApiResult.class);
107
108         result = target("editor/" + corruptSessionId + "/Model/GetKey").request().get(ApexApiResult.class);
109
110         result = target("editor/" + sessionId + "/Model/GetKey").request().get(ApexApiResult.class);
111         assertEquals(Result.SUCCESS, result.getResult());
112         result = target("editor/-12345/Model/GetKey").request().get(ApexApiResult.class);
113         assertEquals(Result.FAILED, result.getResult());
114         result = target("editor/12345/Model/GetKey").request().get(ApexApiResult.class);
115         assertEquals(Result.FAILED, result.getResult());
116
117         result = target("editor/" + corruptSessionId + "/Model/Get").request().get(ApexApiResult.class);
118
119         result = target("editor/" + sessionId + "/Model/Get").request().get(ApexApiResult.class);
120         assertEquals(Result.SUCCESS, result.getResult());
121         result = target("editor/-12345/Model/Get").request().get(ApexApiResult.class);
122         assertEquals(Result.FAILED, result.getResult());
123         result = target("editor/12345/Model/Get").request().get(ApexApiResult.class);
124         assertEquals(Result.FAILED, result.getResult());
125
126         String resultString = target("editor/" + corruptSessionId + "/Model/Download").request().get(String.class);
127         assertEquals("", resultString);
128
129         resultString = target("editor/" + sessionId + "/Model/Download").request().get(String.class);
130         assertNotNull(resultString);
131
132         resultString = target("editor/-12345/Model/Download").request().get(String.class);
133         assertEquals("", resultString);
134
135         resultString = target("editor/12345/Model/Download").request().get(String.class);
136         assertEquals("", resultString);
137
138         result = target("editor/" + corruptSessionId + "/KeyInformation/Get").request().get(ApexApiResult.class);
139
140         result = target("editor/" + sessionId + "/KeyInformation/Get").request().get(ApexApiResult.class);
141         assertEquals(Result.SUCCESS, result.getResult());
142         result = target("editor/-12345/KeyInformation/Get").request().get(ApexApiResult.class);
143         assertEquals(Result.FAILED, result.getResult());
144         result = target("editor/12345/KeyInformation/Get").request().get(ApexApiResult.class);
145         assertEquals(Result.FAILED, result.getResult());
146
147         result = target("editor/" + corruptSessionId + "/Model/Delete").request().delete(ApexApiResult.class);
148
149         result = target("editor/" + sessionId + "/Model/Delete").request().delete(ApexApiResult.class);
150         assertEquals(Result.SUCCESS, result.getResult());
151         result = target("editor/-12345/Model/Delete").request().delete(ApexApiResult.class);
152         assertEquals(Result.FAILED, result.getResult());
153         result = target("editor/12345/Model/Delete").request().delete(ApexApiResult.class);
154         assertEquals(Result.FAILED, result.getResult());
155     }
156
157     @Test
158     public void testContextSchema() throws IOException {
159         ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class);
160         assertEquals(Result.SUCCESS, result.getResult());
161         final int sessionId = Integer.valueOf(result.getMessages().get(0));
162
163         final int corruptSessionId = ApexEditorRestResource.createCorruptSession();
164
165         result = target("editor/-12345/Validate/ContextSchema").request().get(ApexApiResult.class);
166         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
167
168         target("editor/" + corruptSessionId + "/Validate/ContextSchema").request().get(ApexApiResult.class);
169
170         result = target("editor/" + sessionId + "/Validate/ContextSchema").request().get(ApexApiResult.class);
171         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
172
173         result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", (String) null)
174             .queryParam("version", (String) null).request().get(ApexApiResult.class);
175         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
176
177         result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", "%%%$£")
178             .queryParam("version", (String) null).request().get(ApexApiResult.class);
179         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
180
181         final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json");
182
183         Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON);
184         result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
185         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
186         result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
187         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
188         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
189         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
190         modelEntity = Entity.entity("", MediaType.APPLICATION_JSON);
191         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
192         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
193         modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON);
194         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
195         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
196         result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", (String) null)
197             .queryParam("version", (String) null).request().get(ApexApiResult.class);
198         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
199
200         target("editor/" + corruptSessionId + "/ContextSchema/Get").queryParam("name", (String) null)
201             .queryParam("version", (String) null).request().get(ApexApiResult.class);
202
203         String csString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
204             + "\"schemaFlavour\"    : \"Java\"," + "\"schemaDefinition\" : \"java.lang.String\","
205             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
206             + "\"description\"      : \"A description of hello\"" + "}";
207         Entity<String> csEntity = Entity.entity(csString, MediaType.APPLICATION_JSON);
208         result = target("editor/-12345/ContextSchema/Create").request().post(csEntity, ApexApiResult.class);
209         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
210         result = target("editor/1234545/ContextSchema/Create").request().post(csEntity, ApexApiResult.class);
211         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
212         result = target("editor/" + sessionId + "/ContextSchema/Create").request().post(csEntity, ApexApiResult.class);
213         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
214
215         target("editor/" + corruptSessionId + "/ContextSchema/Create").request().post(csEntity, ApexApiResult.class);
216
217         csString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
218             + "\"schemaFlavour\"    : \"Java\"," + "\"schemaDefinition\" : \"my.perfect.String\","
219             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
220             + "\"description\"      : \"A description of hello\"" + "}";
221         csEntity = Entity.entity(csString, MediaType.APPLICATION_JSON);
222         result = target("editor/-12345/ContextSchema/Update").request().put(csEntity, ApexApiResult.class);
223         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
224         result = target("editor/1234545/ContextSchema/Update").request().put(csEntity, ApexApiResult.class);
225         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
226         result = target("editor/" + sessionId + "/ContextSchema/Update").request().put(csEntity, ApexApiResult.class);
227         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
228
229         target("editor/" + corruptSessionId + "/ContextSchema/Update").request().put(csEntity, ApexApiResult.class);
230
231         result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", "Hello")
232             .queryParam("version", (String) null).request().get(ApexApiResult.class);
233         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
234         result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", "NonExistant")
235             .queryParam("version", (String) null).request().get(ApexApiResult.class);
236         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
237         result = target("editor/-123345/ContextSchema/Get").queryParam("name", (String) null)
238             .queryParam("version", (String) null).request().get(ApexApiResult.class);
239         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
240         result = target("editor/123345/ContextSchema/Get").queryParam("name", (String) null)
241             .queryParam("version", (String) null).request().get(ApexApiResult.class);
242         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
243
244         target("editor/" + corruptSessionId + "/ContextSchema/Get").queryParam("name", "Hello")
245             .queryParam("version", (String) null).request().get(ApexApiResult.class);
246
247         result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", (String) null)
248             .queryParam("version", (String) null).request().get(ApexApiResult.class);
249         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
250
251         target("editor/" + corruptSessionId + "/ContextSchema/Delete").queryParam("name", "Hello")
252             .queryParam("version", "0.0.2").request().delete(ApexApiResult.class);
253
254         result = target("editor/-123345/ContextSchema/Delete").queryParam("name", (String) null)
255             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
256         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
257         result = target("editor/123345/ContextSchema/Delete").queryParam("name", (String) null)
258             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
259         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
260         result = target("editor/" + sessionId + "/ContextSchema/Delete").queryParam("name", "Hello")
261             .queryParam("version", "0.0.2").request().delete(ApexApiResult.class);
262         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
263         result = target("editor/" + sessionId + "/ContextSchema/Delete").queryParam("name", (String) null)
264             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
265         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
266     }
267
268     @Test
269     public void testContextAlbum() throws IOException {
270         ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class);
271         assertEquals(Result.SUCCESS, result.getResult());
272         final int sessionId = Integer.valueOf(result.getMessages().get(0));
273         final int corruptSessionId = ApexEditorRestResource.createCorruptSession();
274
275         result = target("editor/-12345/Validate/ContextAlbum").request().get(ApexApiResult.class);
276         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
277
278         target("editor/" + corruptSessionId + "/Validate/ContextAlbum").request().get(ApexApiResult.class);
279
280         result = target("editor/" + sessionId + "/Validate/ContextAlbum").request().get(ApexApiResult.class);
281         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
282
283         result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", (String) null)
284             .queryParam("version", (String) null).request().get(ApexApiResult.class);
285         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
286
287         result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", "%%%$£")
288             .queryParam("version", (String) null).request().get(ApexApiResult.class);
289         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
290
291         final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json");
292
293         Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON);
294         result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
295         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
296         result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
297         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
298         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
299         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
300         modelEntity = Entity.entity("", MediaType.APPLICATION_JSON);
301         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
302         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
303         modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON);
304         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
305         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
306         result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", (String) null)
307             .queryParam("version", (String) null).request().get(ApexApiResult.class);
308         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
309
310         String caString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
311             + "\"scope\"            : \"Domain\"," + "\"writeable\"        : false,"
312             + "\"itemSchema\"       : {\"name\" : \"StringType\", \"version\" : \"0.0.1\"},"
313             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
314             + "\"description\"      : \"A description of hello\"" + "}";
315         Entity<String> caEntity = Entity.entity(caString, MediaType.APPLICATION_JSON);
316         result = target("editor/-12345/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class);
317         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
318         result = target("editor/1234545/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class);
319         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
320         result = target("editor/" + sessionId + "/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class);
321         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
322
323         target("editor/" + corruptSessionId + "/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class);
324
325         caString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
326             + "\"scope\"            : \"Global\"," + "\"writeable\"        : false,"
327             + "\"itemSchema\"       : {\"name\" : \"StringType\", \"version\" : \"0.0.1\"},"
328             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
329             + "\"description\"      : \"A description of hello\"" + "}";
330         caEntity = Entity.entity(caString, MediaType.APPLICATION_JSON);
331         result = target("editor/-12345/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class);
332         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
333         result = target("editor/1234545/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class);
334         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
335         result = target("editor/" + sessionId + "/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class);
336         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
337
338         target("editor/" + corruptSessionId + "/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class);
339
340         target("editor/" + corruptSessionId + "/ContextAlbum/Get").queryParam("name", "Hello")
341             .queryParam("version", (String) null).request().get(ApexApiResult.class);
342
343         result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", "Hello")
344             .queryParam("version", (String) null).request().get(ApexApiResult.class);
345         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
346         result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", "IDontExist")
347             .queryParam("version", (String) null).request().get(ApexApiResult.class);
348         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
349         result = target("editor/-123345/ContextAlbum/Get").queryParam("name", (String) null)
350             .queryParam("version", (String) null).request().get(ApexApiResult.class);
351         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
352         result = target("editor/123345/ContextAlbum/Get").queryParam("name", (String) null)
353             .queryParam("version", (String) null).request().get(ApexApiResult.class);
354         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
355
356         result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", (String) null)
357             .queryParam("version", (String) null).request().get(ApexApiResult.class);
358         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
359
360         target("editor/" + corruptSessionId + "/ContextAlbum/Delete").queryParam("name", (String) null)
361             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
362
363         result = target("editor/-123345/ContextAlbum/Delete").queryParam("name", (String) null)
364             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
365         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
366         result = target("editor/123345/ContextAlbum/Delete").queryParam("name", (String) null)
367             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
368         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
369         result = target("editor/" + sessionId + "/ContextAlbum/Delete").queryParam("name", "Hello")
370             .queryParam("version", "0.0.2").request().delete(ApexApiResult.class);
371         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
372         result = target("editor/" + sessionId + "/ContextAlbum/Delete").queryParam("name", (String) null)
373             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
374         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
375     }
376
377     @Test
378     public void testEvent() throws IOException {
379         final int corruptSessionId = ApexEditorRestResource.createCorruptSession();
380
381         ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class);
382         assertEquals(Result.SUCCESS, result.getResult());
383         final int sessionId = Integer.valueOf(result.getMessages().get(0));
384
385         result = target("editor/-12345/Validate/Event").request().get(ApexApiResult.class);
386         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
387
388         result = target("editor/" + sessionId + "/Validate/Event").request().get(ApexApiResult.class);
389         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
390
391         target("editor/" + corruptSessionId + "/Validate/Event").request().get(ApexApiResult.class);
392
393         result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null)
394             .queryParam("version", (String) null).request().get(ApexApiResult.class);
395         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
396
397         result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", "%%%$£")
398             .queryParam("version", (String) null).request().get(ApexApiResult.class);
399         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
400
401         final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json");
402
403         Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON);
404         result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
405         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
406         result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
407         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
408         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
409         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
410         modelEntity = Entity.entity("", MediaType.APPLICATION_JSON);
411         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
412         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
413         modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON);
414         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
415         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
416         result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null)
417             .queryParam("version", (String) null).request().get(ApexApiResult.class);
418         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
419
420         String entityString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
421             + "\"namespace\"        : \"somewhere.over.the.rainbow\"," + "\"source\"           : \"beginning\","
422             + "\"target\"           : \"end\"," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
423             + "\"description\"      : \"A description of hello\"" + "}";
424         Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
425         result = target("editor/-12345/Event/Create").request().post(entity, ApexApiResult.class);
426         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
427         result = target("editor/1234545/Event/Create").request().post(entity, ApexApiResult.class);
428         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
429         result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class);
430         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
431         result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class);
432         assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult());
433
434         target("editor/" + corruptSessionId + "/Event/Create").request().post(entity, ApexApiResult.class);
435
436         entityString = "{" + "\"name\"             : \"Hiya\"," + "\"version\"          : \"0.0.2\","
437             + "\"namespace\"        : \"somewhere.over.the.rainbow\"," + "\"source\"           : \"beginning\","
438             + "\"target\"           : \"end\"," + "\"parameters\"       : {},"
439             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
440             + "\"description\"      : \"A description of hello\"" + "}";
441         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
442         result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class);
443         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
444
445         entityString = "{" + "\"name\"             : \"HowsItGoing\"," + "\"version\"          : \"0.0.2\","
446             + "\"namespace\"        : \"somewhere.over.the.rainbow\"," + "\"source\"           : \"beginning\","
447             + "\"target\"           : \"end\","
448             + "\"parameters\"       : {\"Par0\" : {\"name\" : \"StringType\", \"version\" : \"0.0.1\", "
449             + "\"localName\" : \"Par0\", \"optional\" : false}},"
450             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
451             + "\"description\"      : \"A description of hello\"" + "}";
452         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
453         result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class);
454         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
455
456         entityString = "{" + "\"name\"             : \"Hi\"," + "\"version\"          : \"0.0.2\","
457             + "\"namespace\"        : \"somewhere.over.the.rainbow\"," + "\"source\"           : \"beginning\","
458             + "\"target\"           : \"end\"," + "\"parameters\"       : {\"Par0\" : null},"
459             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
460             + "\"description\"      : \"A description of hello\"" + "}";
461         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
462         result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class);
463         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
464
465         entityString = "{" + "\"name\"             : \"GoodDay\"," + "\"version\"          : \"0.0.2\","
466             + "\"namespace\"        : \"somewhere.over.the.rainbow\"," + "\"source\"           : \"beginning\","
467             + "\"target\"           : \"end\","
468             + "\"parameters\"       : {\"Par0\" : {\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\", "
469             + "\"localName\" : \"Par0\", \"optional\" : false}},"
470             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
471             + "\"description\"      : \"A description of hello\"" + "}";
472         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
473         result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class);
474         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
475
476         entityString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
477             + "\"namespace\"        : \"somewhere.over.someone.elses.rainbow\"," + "\"source\"           : \"start\","
478             + "\"target\"           : \"finish\"," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
479             + "\"description\"      : \"A description of hello\"" + "}";
480         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
481         result = target("editor/-12345/Event/Update").request().put(entity, ApexApiResult.class);
482         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
483         result = target("editor/1234545/Event/Update").request().put(entity, ApexApiResult.class);
484         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
485         result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class);
486         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
487
488         target("editor/" + corruptSessionId + "/Event/Update").request().put(entity, ApexApiResult.class);
489
490         entityString = "{" + "\"name\"             : null," + "\"version\"          : \"0.0.2\","
491             + "\"namespace\"        : \"somewhere.over.someone.elses.rainbow\"," + "\"source\"           : \"start\","
492             + "\"target\"           : \"finish\"," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
493             + "\"description\"      : \"A description of hello\"" + "}";
494         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
495         result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class);
496         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
497
498         entityString = "{" + "\"name\"             : \"NonExistantEvent\"," + "\"version\"          : \"0.0.2\","
499             + "\"namespace\"        : \"somewhere.over.someone.elses.rainbow\"," + "\"source\"           : \"start\","
500             + "\"target\"           : \"finish\"," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
501             + "\"description\"      : \"A description of hello\"" + "}";
502         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
503         result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class);
504         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
505
506         result = target("editor/" + sessionId + "/Event/Get").queryParam("name", "Hello")
507             .queryParam("version", (String) null).request().get(ApexApiResult.class);
508         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
509         result = target("editor/" + sessionId + "/Event/Get").queryParam("name", "IDontExist")
510             .queryParam("version", (String) null).request().get(ApexApiResult.class);
511         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
512         result = target("editor/-123345/Event/Get").queryParam("name", (String) null)
513             .queryParam("version", (String) null).request().get(ApexApiResult.class);
514         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
515         result = target("editor/123345/Event/Get").queryParam("name", (String) null)
516             .queryParam("version", (String) null).request().get(ApexApiResult.class);
517         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
518
519         target("editor/" + corruptSessionId + "/Event/Get").queryParam("name", "Hello")
520             .queryParam("version", (String) null).request().get(ApexApiResult.class);
521
522         result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null)
523             .queryParam("version", (String) null).request().get(ApexApiResult.class);
524         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
525         result = target("editor/-12345/Validate/Event").queryParam("name", (String) null)
526             .queryParam("version", (String) null).request().get(ApexApiResult.class);
527         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
528         result = target("editor/12345/Validate/Event").queryParam("name", (String) null)
529             .queryParam("version", (String) null).request().get(ApexApiResult.class);
530         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
531
532         target("editor/" + corruptSessionId + "/Event/Delete").queryParam("name", (String) null)
533             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
534
535         result = target("editor/-123345/Event/Delete").queryParam("name", (String) null)
536             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
537         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
538         result = target("editor/123345/Event/Delete").queryParam("name", (String) null)
539             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
540         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
541         result = target("editor/" + sessionId + "/Event/Delete").queryParam("name", "Hello")
542             .queryParam("version", "0.0.2").request().delete(ApexApiResult.class);
543         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
544         result = target("editor/" + sessionId + "/Event/Delete").queryParam("name", (String) null)
545             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
546         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
547     }
548
549     @Test
550     public void testTask() throws IOException {
551         final int corruptSessionId = ApexEditorRestResource.createCorruptSession();
552
553         ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class);
554         assertEquals(Result.SUCCESS, result.getResult());
555         final int sessionId = Integer.valueOf(result.getMessages().get(0));
556
557         result = target("editor/-12345/Validate/Task").request().get(ApexApiResult.class);
558         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
559
560         result = target("editor/" + sessionId + "/Validate/Task").request().get(ApexApiResult.class);
561         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
562
563         try {
564             target("editor/" + corruptSessionId + "/Validate/Task").request().get(ApexApiResult.class);
565         } catch (final Exception e) {
566             assertEquals("HTTP 500 Request failed.", e.getMessage());
567         }
568
569         result = target("editor/" + sessionId + "/Validate/Task").queryParam("name", (String) null)
570             .queryParam("version", (String) null).request().get(ApexApiResult.class);
571         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
572
573         result = target("editor/" + sessionId + "/Validate/Task").queryParam("name", "%%%$£")
574             .queryParam("version", (String) null).request().get(ApexApiResult.class);
575         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
576
577         final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json");
578
579         Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON);
580         result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
581         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
582         result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
583         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
584         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
585         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
586         modelEntity = Entity.entity("", MediaType.APPLICATION_JSON);
587         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
588         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
589         modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON);
590         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
591         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
592         result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null)
593             .queryParam("version", (String) null).request().get(ApexApiResult.class);
594         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
595
596         String entityString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
597             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
598             + "\"description\"      : \"A description of hello\"" + "}";
599         Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
600         result = target("editor/-12345/Task/Create").request().post(entity, ApexApiResult.class);
601         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
602         result = target("editor/1234545/Task/Create").request().post(entity, ApexApiResult.class);
603         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
604         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
605         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
606         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
607         assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult());
608
609         target("editor/" + corruptSessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
610
611         entityString = "{" + "\"name\"             : \"Hiya\"," + "\"version\"          : \"0.0.2\","
612             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
613             + "\"description\"      : \"A description of hello\"" + "}";
614         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
615         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
616         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
617
618         entityString = "{" + "\"name\"             : \"HowsItGoing\"," + "\"version\"          : \"0.0.2\","
619             + "\"inputFields\"      : {\"IField0\" : {\"name\" : \"StringType\", \"version\" : \"0.0.1\", "
620             + "\"localName\" : \"IField0\", \"optional\" : false}},"
621             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
622             + "\"description\"      : \"A description of hello\"" + "}";
623         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
624         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
625         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
626
627         entityString = "{" + "\"name\"             : \"Hi\"," + "\"version\"          : \"0.0.2\","
628             + "\"inputFields\"      : {\"IField0\" : null},"
629             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
630             + "\"description\"      : \"A description of hello\"" + "}";
631         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
632         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
633         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
634
635         entityString = "{" + "\"name\"             : \"GoodDay\"," + "\"version\"          : \"0.0.2\","
636             + "\"inputFields\"      : {\"IField0\" : {\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\", "
637             + "\"localName\" : \"IField0\", \"optional\" : false}},"
638             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
639             + "\"description\"      : \"A description of hello\"" + "}";
640         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
641         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
642         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
643
644         entityString = "{" + "\"name\"             : \"Howdy\"," + "\"version\"          : \"0.0.2\","
645             + "\"inputFields\"      : {\"IField0\" : {\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\", "
646             + "\"localName\" : \"NotIField0\", \"optional\" : false}},"
647             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
648             + "\"description\"      : \"A description of hello\"" + "}";
649         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
650         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
651         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
652
653         entityString = "{" + "\"name\"             : \"HowsItGoing2\"," + "\"version\"          : \"0.0.2\","
654             + "\"outputFields\"     : {\"OField0\" : {\"name\" : \"StringType\", \"version\" : \"0.0.1\", "
655             + "\"localName\" : \"OField0\", \"optional\" : false}},"
656             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
657             + "\"description\"      : \"A description of hello\"" + "}";
658         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
659         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
660         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
661
662         entityString = "{" + "\"name\"             : \"Hi2\"," + "\"version\"          : \"0.0.2\","
663             + "\"outputFields\"     : {\"OField0\" : null},"
664             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
665             + "\"description\"      : \"A description of hello\"" + "}";
666         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
667         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
668         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
669
670         entityString = "{" + "\"name\"             : \"GoodDay2\"," + "\"version\"          : \"0.0.2\","
671             + "\"outputFields\"     : {\"OField0\" : {\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\","
672             + " \"localName\" : \"OField0\", \"optional\" : false}},"
673             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
674             + "\"description\"      : \"A description of hello\"" + "}";
675         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
676         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
677         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
678
679         entityString = "{" + "\"name\"             : \"Howdy2\"," + "\"version\"          : \"0.0.2\","
680             + "\"outputFields\"     : {\"OField0\" : {\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\", "
681             + "\"localName\" : \"NotOField0\", \"optional\" : false}},"
682             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
683             + "\"description\"      : \"A description of hello\"" + "}";
684         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
685         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
686         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
687
688         entityString = "{" + "\"name\"             : \"HowsItGoing3\"," + "\"version\"          : \"0.0.2\","
689             + "\"taskLogic\"        : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons,"
690             + " lots of lime\"}," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
691             + "\"description\"      : \"A description of hello\"" + "}";
692         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
693         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
694         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
695
696         entityString = "{" + "\"name\"             : \"Hi3\"," + "\"version\"          : \"0.0.2\","
697             + "\"taskLogic\"        : null," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
698             + "\"description\"      : \"A description of hello\"" + "}";
699         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
700         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
701         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
702
703         entityString = "{" + "\"name\"             : \"GoodDay3\"," + "\"version\"          : \"0.0.2\","
704             + "\"namespace\"        : \"somewhere.over.the.rainbow\"," + "\"source\"           : \"beginning\","
705             + "\"target\"           : \"end\","
706             + "\"taskLogic\"        : {\"logicFlavour\" : \"UNDEFINED\", \"logic\" : \"lots of lemons,"
707             + " lots of lime\"}," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
708             + "\"description\"      : \"A description of hello\"" + "}";
709         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
710         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
711         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
712
713         entityString = "{" + "\"name\"             : \"Howdy3\"," + "\"version\"          : \"0.0.2\","
714             + "\"taskLogic\"        : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : null},"
715             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
716             + "\"description\"      : \"A description of hello\"" + "}";
717         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
718         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
719         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
720
721         entityString = "{" + "\"name\"             : \"HowsItGoing4\"," + "\"version\"          : \"0.0.2\","
722             + "\"parameters\"       : {\"Par0\" : {\"parameterName\" : \"Par0\", "
723             + "\"defaultValue\" : \"Parameter Defaultvalue\"}},"
724             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
725             + "\"description\"      : \"A description of hello\"" + "}";
726         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
727         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
728         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
729
730         entityString = "{" + "\"name\"             : \"Hi4\"," + "\"version\"          : \"0.0.2\","
731             + "\"parameters\"       : {\"Par0\" : null},"
732             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
733             + "\"description\"      : \"A description of hello\"" + "}";
734         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
735         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
736         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
737
738         entityString = "{" + "\"name\"             : \"GoodDay4\"," + "\"version\"          : \"0.0.2\","
739             + "\"parameters\"       : {\"Par0\" : {\"parameterName\" : \"NotPar0\", \"defaultValue\" : "
740             + "\"Parameter Defaultvalue\"}}," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
741             + "\"description\"      : \"A description of hello\"" + "}";
742         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
743         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
744         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
745
746         entityString = "{" + "\"name\"             : \"Howdy4\"," + "\"version\"          : \"0.0.2\","
747             + "\"parameters\"       : {\"Par0\" : {\"parameterName\" : \"MyParameter\", \"defaultValue\" : null}},"
748             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
749             + "\"description\"      : \"A description of hello\"" + "}";
750         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
751         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
752         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
753
754         entityString = "{" + "\"name\"             : \"HowsItGoing5\"," + "\"version\"          : \"0.0.2\","
755             + "\"contexts\"         : [{\"name\" : \"contextAlbum0\", \"version\" : \"0.0.1\"}],"
756             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
757             + "\"description\"      : \"A description of hello\"" + "}";
758         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
759         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
760         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
761
762         entityString = "{" + "\"name\"             : \"Hi5\"," + "\"version\"          : \"0.0.2\","
763             + "\"contexts\"         : []," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
764             + "\"description\"      : \"A description of hello\"" + "}";
765         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
766         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
767         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
768
769         entityString = "{" + "\"name\"             : \"GoodDay5\"," + "\"version\"          : \"0.0.2\","
770             + "\"contexts\"         : [{\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\"}],"
771             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
772             + "\"description\"      : \"A description of hello\"" + "}";
773         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
774         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
775         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
776
777         entityString = "{" + "\"name\"             : \"Howdy5\"," + "\"version\"          : \"0.0.2\","
778             + "\"contexts\"         : [{\"name\" : null, \"version\" : \"0.0.1\"}],"
779             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002799\","
780             + "\"description\"      : \"A description of hello\"" + "}";
781         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
782         result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class);
783         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
784
785         entityString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
786             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
787             + "\"description\"      : \"A description of hello\"" + "}";
788         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
789         result = target("editor/-12345/Task/Update").request().put(entity, ApexApiResult.class);
790         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
791         result = target("editor/1234545/Task/Update").request().put(entity, ApexApiResult.class);
792         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
793         result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class);
794         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
795
796         target("editor/" + corruptSessionId + "/Task/Update").request().put(entity, ApexApiResult.class);
797
798         entityString = "{" + "\"name\"             : null," + "\"version\"          : \"0.0.2\","
799             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
800             + "\"description\"      : \"A description of hello\"" + "}";
801         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
802         result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class);
803         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
804
805         entityString = "{" + "\"name\"             : \"NonExistantEvent\"," + "\"version\"          : \"0.0.2\","
806             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
807             + "\"description\"      : \"A description of hello\"" + "}";
808         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
809         result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class);
810         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
811
812         result = target("editor/" + sessionId + "/Task/Get").queryParam("name", "Hello")
813             .queryParam("version", (String) null).request().get(ApexApiResult.class);
814         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
815         result = target("editor/" + sessionId + "/Task/Get").queryParam("name", (String) null)
816             .queryParam("version", (String) null).request().get(ApexApiResult.class);
817         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
818         result = target("editor/" + sessionId + "/Task/Get").queryParam("name", "IDontExist")
819             .queryParam("version", (String) null).request().get(ApexApiResult.class);
820         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
821         result = target("editor/-123345/Task/Get").queryParam("name", (String) null)
822             .queryParam("version", (String) null).request().get(ApexApiResult.class);
823         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
824         result = target("editor/123345/Task/Get").queryParam("name", (String) null).queryParam("version", (String) null)
825             .request().get(ApexApiResult.class);
826         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
827
828         target("editor/" + corruptSessionId + "/Task/Get").queryParam("name", "Hello")
829             .queryParam("version", (String) null).request().get(ApexApiResult.class);
830
831         result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null)
832             .queryParam("version", (String) null).request().get(ApexApiResult.class);
833         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
834         result = target("editor/-12345/Validate/Event").queryParam("name", (String) null)
835             .queryParam("version", (String) null).request().get(ApexApiResult.class);
836         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
837         result = target("editor/12345/Validate/Event").queryParam("name", (String) null)
838             .queryParam("version", (String) null).request().get(ApexApiResult.class);
839         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
840
841         target("editor/" + corruptSessionId + "/Task/Delete").queryParam("name", (String) null)
842             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
843
844         result = target("editor/-123345/Task/Delete").queryParam("name", (String) null)
845             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
846         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
847         result = target("editor/123345/Task/Delete").queryParam("name", (String) null)
848             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
849         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
850         result = target("editor/" + sessionId + "/Task/Delete").queryParam("name", "Hello")
851             .queryParam("version", "0.0.2").request().delete(ApexApiResult.class);
852         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
853         result = target("editor/" + sessionId + "/Task/Delete").queryParam("name", (String) null)
854             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
855         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
856     }
857
858     @Test
859     public void testPolicy() throws IOException {
860         final int corruptSessionId = ApexEditorRestResource.createCorruptSession();
861
862         ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class);
863         assertEquals(Result.SUCCESS, result.getResult());
864         final int sessionId = Integer.valueOf(result.getMessages().get(0));
865
866         result = target("editor/-12345/Model/Validate").request().get(ApexApiResult.class);
867         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
868
869         result = target("editor/" + sessionId + "/Model/Validate").request().get(ApexApiResult.class);
870         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
871
872         target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class);
873         result = target("editor/" + sessionId + "/Model/Validate").queryParam("name", (String) null)
874             .queryParam("version", (String) null).request().get(ApexApiResult.class);
875         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
876
877         result = target("editor/" + sessionId + "/Model/Validate").queryParam("name", "%%%$£")
878             .queryParam("version", (String) null).request().get(ApexApiResult.class);
879         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
880
881         final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json");
882
883         Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON);
884         result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
885         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
886         result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
887         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
888         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
889         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
890         modelEntity = Entity.entity("", MediaType.APPLICATION_JSON);
891         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
892         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
893         modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON);
894         result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class);
895         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
896         result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null)
897             .queryParam("version", (String) null).request().get(ApexApiResult.class);
898         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
899
900         String entityString = "{" + "\"name\"             : \"Hello\"," + "\"version\"          : \"0.0.2\","
901             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
902             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
903             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
904             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
905             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
906             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
907             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
908             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
909             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
910             + "\"description\"      : \"A description of hello\"" + "}";
911         Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
912         result = target("editor/-12345/Policy/Create").request().post(entity, ApexApiResult.class);
913         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
914         result = target("editor/1234545/Policy/Create").request().post(entity, ApexApiResult.class);
915         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
916         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
917         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
918         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
919         assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult());
920
921         target("editor/" + corruptSessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
922
923         entityString = "{" + "\"name\"             : \"GoodTaSeeYa\"," + "\"version\"          : \"0.0.2\","
924             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
925             + "\"states\"           : null," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
926             + "\"description\"      : \"A description of hello\"" + "}";
927         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
928         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
929         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
930
931         entityString = "{" + "\"name\"             : \"HelloAnother\"," + "\"version\"          : \"0.0.2\","
932             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
933             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
934             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
935             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
936             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
937             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
938             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
939             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
940             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
941             + "\"description\"      : \"A description of hello\"" + "}";
942         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
943         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
944         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
945
946         entityString = "{" + "\"name\"             : \"Hello2\"," + "\"version\"          : \"0.0.2\","
947             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
948             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
949             + "  \"trigger\"        : null," + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
950             + "  \"stateOutputs\"   : {" + "   \"so0\"           : {"
951             + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
952             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
953             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
954             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
955             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
956             + "\"description\"      : \"A description of hello\"" + "}";
957         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
958         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
959         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
960
961         entityString = "{" + "\"name\"             : \"Hello3\"," + "\"version\"          : \"0.0.2\","
962             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
963             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
964             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
965             + "  \"defaultTask\"    : null," + "  \"stateOutputs\"   : {" + "   \"so0\"           : {"
966             + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
967             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
968             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
969             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
970             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
971             + "\"description\"      : \"A description of hello\"" + "}";
972         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
973         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
974         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
975
976         entityString = "{" + "\"name\"             : \"Hello4\"," + "\"version\"          : \"0.0.2\","
977             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
978             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
979             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
980             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : null,"
981             + "  \"tasks\"          : {" + "   \"tr0\"           : {"
982             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
983             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
984             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
985             + "\"description\"      : \"A description of hello\"" + "}";
986         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
987         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
988         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
989
990         entityString = "{" + "\"name\"             : \"Hello5\"," + "\"version\"          : \"0.0.2\","
991             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
992             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
993             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
994             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
995             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
996             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : null" + " }" + "},"
997             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
998             + "\"description\"      : \"A description of hello\"" + "}";
999         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1000         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1001         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1002
1003         entityString = "{" + "\"name\"             : \"Hello6\"," + "\"version\"          : \"0.0.2\","
1004             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1005             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1006             + "  \"trigger\"        : {\"name\" : \"IDontExist\", \"version\" : \"0.0.1\"},"
1007             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1008             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1009             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1010             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1011             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
1012             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1013             + "\"description\"      : \"A description of hello\"" + "}";
1014         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1015         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1016         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
1017
1018         entityString = "{" + "\"name\"             : \"Hello7\"," + "\"version\"          : \"0.0.2\","
1019             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1020             + "\"states\"           : {" + " \"state\"           : null" + "},"
1021             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1022             + "\"description\"      : \"A description of hello\"" + "}";
1023         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1024         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1025         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1026
1027         entityString = "{" + "\"name\"             : \"Hello8\"," + "\"version\"          : \"0.0.2\","
1028             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1029             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1030             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1031             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1032             + "   \"so0\"           : {"
1033             + "    \"event\"        : {\"name\" : \"IDontExist\", \"version\" : \"0.0.1\"},"
1034             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1035             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1036             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
1037             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1038             + "\"description\"      : \"A description of hello\"" + "}";
1039         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1040         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1041         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
1042
1043         entityString = "{" + "\"name\"             : \"Hello9\"," + "\"version\"          : \"0.0.2\","
1044             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1045             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1046             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1047             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1048             + "   \"so0\"           : {" + "    \"event\"        : null," + "    \"nextState\"    : null" + "   }"
1049             + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1050             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1051             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
1052             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1053             + "\"description\"      : \"A description of hello\"" + "}";
1054         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1055         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1056         System.err.println(result);
1057         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1058
1059         entityString = "{" + "\"name\"             : \"Hello10\"," + "\"version\"          : \"0.0.2\","
1060             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1061             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1062             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1063             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1064             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1065             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1066             + "    \"task\"         : {\"name\" : \"IDontExist\", \"version\" : \"0.0.1\"},"
1067             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
1068             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1069             + "\"description\"      : \"A description of hello\"" + "}";
1070         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1071         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1072         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
1073
1074         entityString = "{" + "\"name\"             : \"Hello11\"," + "\"version\"          : \"0.0.2\","
1075             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1076             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1077             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1078             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1079             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1080             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1081             + "    \"task\"         : null," + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\""
1082             + "   }" + "  }" + " }" + "}," + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1083             + "\"description\"      : \"A description of hello\"" + "}";
1084         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1085         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1086         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1087
1088         entityString = "{" + "\"name\"                 : \"Hello12\"," + "\"version\"              : \"0.0.2\","
1089             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1090             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1091             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1092             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1093             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1094             + "lots of lime\"}," + "  \"stateOutputs\"       : {" + "   \"so0\"               : {"
1095             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1096             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1097             + "   \"tr0\"               : {"
1098             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1099             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  }" + " }"
1100             + "}," + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1101             + "\"description\"          : \"A description of hello\"" + "}";
1102         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1103         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1104         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1105
1106         entityString = "{" + "\"name\"                 : \"Hello13\"," + "\"version\"              : \"0.0.2\","
1107             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1108             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1109             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1110             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1111             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : null},"
1112             + "  \"stateOutputs\"       : {" + "   \"so0\"               : {"
1113             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1114             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1115             + "   \"tr0\"               : {"
1116             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1117             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  }" + " }"
1118             + "}," + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1119             + "\"description\"          : \"A description of hello\"" + "}";
1120         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1121         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1122         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1123
1124         entityString = "{" + "\"name\"                 : \"Hello14\"," + "\"version\"              : \"0.0.2\","
1125             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1126             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1127             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1128             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1129             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1130             + "lots of lime\"},"
1131             + "  \"contexts\"           : [{\"name\" : \"contextAlbum0\", \"version\" : \"0.0.1\"}],"
1132             + "  \"stateOutputs\"       : {" + "   \"so0\"               : {"
1133             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1134             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1135             + "   \"tr0\"               : {"
1136             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1137             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  }" + " }"
1138             + "}," + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1139             + "\"description\"          : \"A description of hello\"" + "}";
1140         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1141         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1142         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1143
1144         entityString = "{" + "\"name\"                 : \"Hello15\"," + "\"version\"              : \"0.0.2\","
1145             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1146             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1147             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1148             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1149             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1150             + "lots of lime\"}," + "  \"contexts\"           : [{\"name\" : \"IDontExist\", \"version\" : \"0.0.1\"}],"
1151             + "  \"stateOutputs\"       : {" + "   \"so0\"               : {"
1152             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1153             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1154             + "   \"tr0\"               : {"
1155             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1156             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  }" + " }"
1157             + "}," + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1158             + "\"description\"          : \"A description of hello\"" + "}";
1159         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1160         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1161         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
1162
1163         entityString = "{" + "\"name\"                 : \"Hello16\"," + "\"version\"              : \"0.0.2\","
1164             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1165             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1166             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1167             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1168             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1169             + "lots of lime\"}," + "  \"contexts\"           : [null]," + "  \"stateOutputs\"       : {"
1170             + "   \"so0\"               : {"
1171             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1172             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1173             + "   \"tr0\"               : {"
1174             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1175             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  }" + " }"
1176             + "}," + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1177             + "\"description\"          : \"A description of hello\"" + "}";
1178         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1179         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1180         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1181
1182         entityString = "{" + "\"name\"                 : \"Hello17\"," + "\"version\"              : \"0.0.2\","
1183             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1184             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1185             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1186             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1187             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1188             + "lots of lime\"},"
1189             + "  \"contexts\"           : [{\"name\" : \"contextAlbum0\", \"version\" : \"0.0.1\"}],"
1190             + "  \"stateOutputs\"       : {" + "   \"so0\"               : {"
1191             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1192             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1193             + "   \"tr0\"               : {"
1194             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1195             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  },"
1196             + "  \"finalizers\"         : {"
1197             + "   \"sf0\"               : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1198             + "lots of lime\"}" + "  }" + " }" + "},"
1199             + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1200             + "\"description\"          : \"A description of hello\"" + "}";
1201         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1202         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1203         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1204
1205         entityString = "{" + "\"name\"                 : \"Hello18\"," + "\"version\"              : \"0.0.2\","
1206             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1207             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1208             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1209             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1210             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1211             + "lots of lime\"},"
1212             + "  \"contexts\"           : [{\"name\" : \"contextAlbum0\", \"version\" : \"0.0.1\"}],"
1213             + "  \"stateOutputs\"       : {" + "   \"so0\"               : {"
1214             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1215             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1216             + "   \"tr0\"               : {"
1217             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1218             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  },"
1219             + "  \"finalizers\"         : {" + "   \"sf0\"               : null" + "  }" + " }" + "},"
1220             + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1221             + "\"description\"          : \"A description of hello\"" + "}";
1222         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1223         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1224         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1225
1226         entityString = "{" + "\"name\"                 : \"Hello19\"," + "\"version\"              : \"0.0.2\","
1227             + "\"template\"             : \"somewhere.over.the.rainbow\"," + "\"firstState\"           : \"state\","
1228             + "\"states\"               : {" + " \"state\"               : {" + "  \"name\"               : \"state\","
1229             + "  \"trigger\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1230             + "  \"defaultTask\"        : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1231             + "  \"taskSelectionLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons, "
1232             + "lots of lime\"},"
1233             + "  \"contexts\"           : [{\"name\" : \"contextAlbum0\", \"version\" : \"0.0.1\"}],"
1234             + "  \"stateOutputs\"       : {" + "   \"so0\"               : {"
1235             + "    \"event\"            : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1236             + "    \"nextState\"        : null" + "   }" + "  }," + "  \"tasks\"              : {"
1237             + "   \"tr0\"               : {"
1238             + "    \"task\"             : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1239             + "    \"outputType\"       : \"DIRECT\"," + "    \"outputName\"       : \"so0\"" + "   }" + "  },"
1240             + "  \"finalizers\"         : {"
1241             + "   \"sf0\"               : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : null}" + "  }" + " }" + "},"
1242             + "\"uuid\"                 : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1243             + "\"description\"          : \"A description of hello\"" + "}";
1244         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1245         result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class);
1246         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1247
1248         entityString = "{" + "\"name\"             : \"HelloAnother\"," + "\"version\"          : \"0.0.2\","
1249             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1250             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1251             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1252             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1253             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1254             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1255             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1256             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
1257             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1258             + "\"description\"      : \"A better description of hello\"" + "}";
1259         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1260         result = target("editor/-12345/Policy/Update").request().put(entity, ApexApiResult.class);
1261         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1262         result = target("editor/1234545/Policy/Update").request().put(entity, ApexApiResult.class);
1263         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1264         result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class);
1265         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1266
1267         result = target("editor/" + sessionId + "/Policy/Update").queryParam("firstStatePeriodic", "true").request()
1268             .put(entity, ApexApiResult.class);
1269         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1270
1271         target("editor/" + corruptSessionId + "/Policy/Update").request().put(entity, ApexApiResult.class);
1272
1273         entityString = "{" + "\"name\"             : null," + "\"version\"          : \"0.0.2\","
1274             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1275             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1276             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1277             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1278             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1279             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1280             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1281             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
1282             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1283             + "\"description\"      : \"A better description of hello\"" + "}";
1284         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1285         result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class);
1286         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1287
1288         entityString = "{" + "\"name\"             : \"IDontExist\"," + "\"version\"          : \"0.0.2\","
1289             + "\"template\"         : \"somewhere.over.the.rainbow\"," + "\"firstState\"       : \"state\","
1290             + "\"states\"           : {" + " \"state\"           : {" + "  \"name\"           : \"state\","
1291             + "  \"trigger\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1292             + "  \"defaultTask\"    : {\"name\" : \"task\", \"version\" : \"0.0.1\"}," + "  \"stateOutputs\"   : {"
1293             + "   \"so0\"           : {" + "    \"event\"        : {\"name\" : \"inEvent\", \"version\" : \"0.0.1\"},"
1294             + "    \"nextState\"    : null" + "   }" + "  }," + "  \"tasks\"          : {" + "   \"tr0\"           : {"
1295             + "    \"task\"         : {\"name\" : \"task\", \"version\" : \"0.0.1\"},"
1296             + "    \"outputType\"   : \"DIRECT\"," + "    \"outputName\"   : \"so0\"" + "   }" + "  }" + " }" + "},"
1297             + "\"uuid\"             : \"1fa2e430-f2b2-11e6-bc64-92361f002671\","
1298             + "\"description\"      : \"A better description of hello\"" + "}";
1299         entity = Entity.entity(entityString, MediaType.APPLICATION_JSON);
1300         result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class);
1301         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
1302
1303         result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", "Hello")
1304             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1305         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1306         result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", "IDontExist")
1307             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1308         assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult());
1309         result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", (String) null)
1310             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1311         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1312         result = target("editor/-123345/Policy/Get").queryParam("name", (String) null)
1313             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1314         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1315         result = target("editor/123345/Policy/Get").queryParam("name", (String) null)
1316             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1317         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1318
1319         target("editor/" + corruptSessionId + "/Policy/Get").queryParam("name", "Hello")
1320             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1321
1322         result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null)
1323             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1324         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1325         result = target("editor/-12345/Validate/Event").queryParam("name", (String) null)
1326             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1327         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1328         result = target("editor/12345/Validate/Event").queryParam("name", (String) null)
1329             .queryParam("version", (String) null).request().get(ApexApiResult.class);
1330         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1331
1332         target("editor/" + corruptSessionId + "/Policy/Delete").queryParam("name", (String) null)
1333             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
1334
1335         result = target("editor/-123345/Policy/Delete").queryParam("name", (String) null)
1336             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
1337         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1338         result = target("editor/123345/Policy/Delete").queryParam("name", (String) null)
1339             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
1340         assertEquals(ApexApiResult.Result.FAILED, result.getResult());
1341         result = target("editor/" + sessionId + "/Policy/Delete").queryParam("name", "Hello")
1342             .queryParam("version", "0.0.2").request().delete(ApexApiResult.class);
1343         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1344         result = target("editor/" + sessionId + "/Policy/Delete").queryParam("name", (String) null)
1345             .queryParam("version", (String) null).request().delete(ApexApiResult.class);
1346         assertEquals(ApexApiResult.Result.SUCCESS, result.getResult());
1347     }
1348 }