//
// ============LICENSE_START=======================================================
//  Copyright (C) 2016-2018 Ericsson. All rights reserved.
//  Modifications Copyright (C) 2020 Nordix Foundation.
// ================================================================================
// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
//
// SPDX-License-Identifier: CC-BY-4.0
// ============LICENSE_END=========================================================
//
// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
//

=== Test Policy Step 2

To start a new APEX Engine you can use the following configuration.
In a full APEX installation you can find this configuration in `$APEX_HOME/examples/config/MyFirstPolicy/2/MyFirstPolicyConfigStdin2StdoutJsonEvent.json`.
Note, this has changed from the configuration file in Step 1 to enable the `JAVASCRIPT` executor for our new 'Task Selection Logic'.

.JSON to load and execute _My First Policy_, read input JSON events from `stdin`, and emit output events to `stdout`
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/config/myfirstpolicy/2/MyFirstPolicyConfigStdin2StdoutJsonEvent.json[configuration file]
----

To test the policy try paste the following events into the console as the APEX engine executes. Note, all tests from Step 1 will still work perfectly since none of those events originate from a branch with `branch_ID` between `1000` and `2000`. The 'Task Selection Logic' will therefore pick the `MorningBoozeCheck` task as expected, and will therefore give the same results.

.Inputs and Outputs when testing _My First Policy_
[width="100%",options="header",cols="3a,5a,3d"]
|====================
| Input Event (JSON) | Output Event (JSON) | comment
|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/1/EventIn_BoozeItem_084106GMT.json[Input (`JSON`)]
----
|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/1/EventOut_BoozeItem_084106GMT.json[Output (`JSON`)]
----
| Request to buy alcohol item (`item_ID=1249`) at _08:41:06 GMT_ on _Monday, 02 January 2017_.

Sale is not authorized. Uses the `MorningBoozeCheck` task.

Note this test is copied from Step 1 above, and demonstrates that the original `MorningBoozeCheck` task is executed.

|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/2/EventIn_BoozeItem_101433CET_thurs.json[Input (`JSON`)]
----
|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/2/EventOut_BoozeItem_101433CET_thurs.json[Output (`JSON`)]
----
| Request to buy alcohol (`item_ID=1047`) at _10:14:33_ on _Thursday, 22 December 2016_.

Sale is not authorized. Uses the `MorningBoozeCheckAlt1` task.

|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/2/EventIn_BoozeItem_171937CET_sun.json[Input (`JSON`)]
----
|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/2/EventOut_BoozeItem_171937CET_sun.json[Output (`JSON`)]
----
| Request to buy alcohol (`item_ID=1443`) at _17:19:37_ on _Sunday, 18 December 2016_.

Sale is not authorized. Uses the `MorningBoozeCheckAlt1` task.

|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/2/EventIn_NonBoozeItem_111309CET_mon.json[Input (`JSON`)]
----
|
[source,json,options="nowrap"]
----
include::{adsite-examples-myfirstpolicy-dir}/main/resources/examples/events/MyFirstPolicy/2/EventOut_NonBoozeItem_111309CET_mon.json[Output (`JSON`)]
----
| Request to buy non-alcoholic item (`item_ID=5321`) at _11:13:09_ on _Monday, 2 January 2017_.

Sale is authorized. Uses the `MorningBoozeCheckAlt1` task.

|====================

