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