AETHER-2941 open-policy-agent: create unit tests for REGO Rules

Change-Id: Ib6b9294e3cedaf96e77b03e21727b2ea108d43e3
diff --git a/.reuse/dep5 b/.reuse/dep5
index 6e71283..82ac735 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -4,7 +4,7 @@
 Copyright: 2021 Open Networking Foundation
 License: Apache-2.0
 
-Files: config-models/*/files/*.tree */files/configs/*.json */dashboards/*/*.json */files/opa-rbac/test/*.json go.mod go.sum
+Files: config-models/*/files/*.tree */files/configs/*.json */dashboards/*/*.json */files/opa-rbac/test/*.json */files/opa-rbac/test/out/*.out go.mod go.sum
 Copyright: 2021 Open Networking Foundation
 License: Apache-2.0
 
diff --git a/Makefile b/Makefile
index 1e858c7..1261c5b 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,23 @@
 all: test
 
 test: # @HELP run the acceptance tests
-test: deps
+test: deps opa-test
+
+opa-test: #@HELP run the rego rule tests
+opa-test:
+	@cd aether-roc-umbrella/files/opa-rbac && for test_file in test/*; do \
+	trimmed=`basename $$test_file .json`;\
+	case "$$trimmed" in \
+	*2.0.0*) docker run -v $$(pwd):/opa-rbac openpolicyagent/opa:0.29.4 eval -f pretty -b /opa-rbac \
+	--input opa-rbac/test/$$trimmed.json data.aether_2_0_x.allowed > /tmp/$$trimmed.out;;\
+	*3.0.0*) docker run -v $$(pwd):/opa-rbac openpolicyagent/opa:0.29.4 eval -f pretty -b /opa-rbac \
+	--input opa-rbac/test/$$trimmed.json data.aether_3_0_0.allowed > /tmp/$$trimmed.out;;\
+	*4.0.0*) docker run -v $$(pwd):/opa-rbac openpolicyagent/opa:0.29.4 eval -f pretty -b /opa-rbac \
+	--input opa-rbac/test/$$trimmed.json data.aether_4_0_18.allowed > /tmp/$$trimmed.out;;\
+	*) continue;;esac;\
+	cmp -s /tmp/$$trimmed.out test/out/$$trimmed.out \
+	&& echo "[TEST] $$trimmed.json : PASS"|| echo "[TEST] $$trimmed.json : FAIL";\
+	done;
 
 roc-test: # @HELP run the integration tests
 roc-test: deps # @HELP run the integration tests
diff --git a/aether-roc-umbrella/Chart.yaml b/aether-roc-umbrella/Chart.yaml
index f7740b6..7d8faeb 100644
--- a/aether-roc-umbrella/Chart.yaml
+++ b/aether-roc-umbrella/Chart.yaml
@@ -7,7 +7,7 @@
 description: Aether ROC Umbrella chart to deploy all Aether ROC
 kubeVersion: ">=1.18.0"
 type: application
-version: 2.1.4
+version: 2.1.5
 appVersion: v0.0.0
 keywords:
   - aether
diff --git a/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json b/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-group-ent.json
similarity index 91%
copy from aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json
copy to aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-group-ent.json
index 940f0a6..37deedd 100644
--- a/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json
+++ b/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-group-ent.json
@@ -1,7 +1,6 @@
 {
   "groups": [
-    "mixedGroup",
-    "acme"
+    "AetherROCAdmin"    
   ],
   "connectivity_services": {
     "connectivity_service": [
@@ -27,7 +26,7 @@
       {
         "description": "This Enterprise holds discovered IMSIs that cannot be associated elsewhere.",
         "display_name": "Default Enterprise",
-        "ent_id": "defaultent"
+        "enterprise_id": "defaultent"
       },
       {
         "connectivity_service": [
@@ -38,7 +37,7 @@
         ],
         "description": "ACME Corporation",
         "display_name": "ACME Corp",
-        "ent_id": "acme"
+        "enterprise_id": "acme"
       },
       {
         "connectivity_service": [
@@ -53,7 +52,7 @@
         ],
         "description": "Starbucks Corporation",
         "display_name": "Starbucks Inc.",
-        "ent_id": "starbucks"
+        "enterprise_id": "starbucks"
       }
     ]
   }
diff --git a/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json b/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-no-ent.json
similarity index 92%
copy from aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json
copy to aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-no-ent.json
index 940f0a6..3942fb6 100644
--- a/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json
+++ b/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-no-ent.json
@@ -1,7 +1,6 @@
 {
   "groups": [
-    "mixedGroup",
-    "acme"
+    "mixedGroup"    
   ],
   "connectivity_services": {
     "connectivity_service": [
@@ -27,7 +26,7 @@
       {
         "description": "This Enterprise holds discovered IMSIs that cannot be associated elsewhere.",
         "display_name": "Default Enterprise",
-        "ent_id": "defaultent"
+        "enterprise_id": "defaultent"
       },
       {
         "connectivity_service": [
@@ -38,7 +37,7 @@
         ],
         "description": "ACME Corporation",
         "display_name": "ACME Corp",
-        "ent_id": "acme"
+        "enterprise_id": "acme"
       },
       {
         "connectivity_service": [
@@ -53,7 +52,7 @@
         ],
         "description": "Starbucks Corporation",
         "display_name": "Starbucks Inc.",
-        "ent_id": "starbucks"
+        "enterprise_id": "starbucks"
       }
     ]
   }
diff --git a/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json b/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-single-ent.json
similarity index 93%
rename from aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json
rename to aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-single-ent.json
index 940f0a6..fefa1e6 100644
--- a/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-example-get.json
+++ b/aether-roc-umbrella/files/opa-rbac/test/aether-2.0.0-test-single-ent.json
@@ -27,7 +27,7 @@
       {
         "description": "This Enterprise holds discovered IMSIs that cannot be associated elsewhere.",
         "display_name": "Default Enterprise",
-        "ent_id": "defaultent"
+        "enterprise_id": "defaultent"
       },
       {
         "connectivity_service": [
@@ -38,7 +38,7 @@
         ],
         "description": "ACME Corporation",
         "display_name": "ACME Corp",
-        "ent_id": "acme"
+        "enterprise_id": "acme"
       },
       {
         "connectivity_service": [
@@ -53,7 +53,7 @@
         ],
         "description": "Starbucks Corporation",
         "display_name": "Starbucks Inc.",
-        "ent_id": "starbucks"
+        "enterprise_id": "starbucks"
       }
     ]
   }
diff --git a/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-group-ent.out b/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-group-ent.out
new file mode 100644
index 0000000..2e38048
--- /dev/null
+++ b/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-group-ent.out
@@ -0,0 +1,60 @@
+[
+  {
+    "connectivity_services": {
+      "connectivity_service": [
+        {
+          "acc_prometheus_url": "./prometheus_acc",
+          "core_5g_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/5g",
+          "description": "5G Test",
+          "display_name": "ROC 5G Test Connectivity Service",
+          "id": "cs5gtest"
+        },
+        {
+          "description": "ROC 4G Test Connectivity Service",
+          "display_name": "4G Test",
+          "hss_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/imsis",
+          "id": "cs4gtest",
+          "pcrf_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/policies",
+          "spgwc_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config"
+        }
+      ]
+    },
+    "enterprises": {
+      "enterprise": [
+        [
+          {
+            "description": "This Enterprise holds discovered IMSIs that cannot be associated elsewhere.",
+            "display_name": "Default Enterprise",
+            "enterprise_id": "defaultent"
+          },
+          {
+            "connectivity_service": [
+              {
+                "connectivity_service": "cs5gtest",
+                "enabled": true
+              }
+            ],
+            "description": "ACME Corporation",
+            "display_name": "ACME Corp",
+            "enterprise_id": "acme"
+          },
+          {
+            "connectivity_service": [
+              {
+                "connectivity_service": "cs5gtest",
+                "enabled": true
+              },
+              {
+                "connectivity_service": "cs4gtest",
+                "enabled": false
+              }
+            ],
+            "description": "Starbucks Corporation",
+            "display_name": "Starbucks Inc.",
+            "enterprise_id": "starbucks"
+          }
+        ]
+      ]
+    }
+  }
+]
diff --git a/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-no-ent.out b/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-no-ent.out
new file mode 100644
index 0000000..d1ba2a7
--- /dev/null
+++ b/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-no-ent.out
@@ -0,0 +1,28 @@
+[
+  {
+    "connectivity_services": {
+      "connectivity_service": [
+        {
+          "acc_prometheus_url": "./prometheus_acc",
+          "core_5g_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/5g",
+          "description": "5G Test",
+          "display_name": "ROC 5G Test Connectivity Service",
+          "id": "cs5gtest"
+        },
+        {
+          "description": "ROC 4G Test Connectivity Service",
+          "display_name": "4G Test",
+          "hss_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/imsis",
+          "id": "cs4gtest",
+          "pcrf_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/policies",
+          "spgwc_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config"
+        }
+      ]
+    },
+    "enterprises": {
+      "enterprise": [
+        []
+      ]
+    }
+  }
+]
diff --git a/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-single-ent.out b/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-single-ent.out
new file mode 100644
index 0000000..57819d8
--- /dev/null
+++ b/aether-roc-umbrella/files/opa-rbac/test/out/aether-2.0.0-test-single-ent.out
@@ -0,0 +1,40 @@
+[
+  {
+    "connectivity_services": {
+      "connectivity_service": [
+        {
+          "acc_prometheus_url": "./prometheus_acc",
+          "core_5g_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/5g",
+          "description": "5G Test",
+          "display_name": "ROC 5G Test Connectivity Service",
+          "id": "cs5gtest"
+        },
+        {
+          "description": "ROC 4G Test Connectivity Service",
+          "display_name": "4G Test",
+          "hss_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/imsis",
+          "id": "cs4gtest",
+          "pcrf_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/policies",
+          "spgwc_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config"
+        }
+      ]
+    },
+    "enterprises": {
+      "enterprise": [
+        [
+          {
+            "connectivity_service": [
+              {
+                "connectivity_service": "cs5gtest",
+                "enabled": true
+              }
+            ],
+            "description": "ACME Corporation",
+            "display_name": "ACME Corp",
+            "enterprise_id": "acme"
+          }
+        ]
+      ]
+    }
+  }
+]
diff --git a/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-basic.out b/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-basic.out
new file mode 100644
index 0000000..df89fab
--- /dev/null
+++ b/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-basic.out
@@ -0,0 +1,83 @@
+[
+  {
+    "ap-list": {
+      "ap-list": [
+        []
+      ]
+    },
+    "application": {
+      "application": [
+        []
+      ]
+    },
+    "connectivity-service": {
+      "connectivity-service": [
+        []
+      ]
+    },
+    "device-group": {
+      "device-group": [
+        []
+      ]
+    },
+    "enterprise": {
+      "enterprise": [
+        []
+      ]
+    },
+    "ip-domain": {
+      "ip-domain": [
+        []
+      ]
+    },
+    "network": {
+      "network": [
+        []
+      ]
+    },
+    "site": {
+      "site": [
+        []
+      ]
+    },
+    "template": {
+      "template": [
+        [
+          {
+            "description": "do",
+            "display-name": "laborum fugiat",
+            "downlink": 322694552,
+            "id": "aliquip",
+            "sd": 14628949,
+            "sst": 1,
+            "uplink": 1607714163
+          },
+          {
+            "description": "do",
+            "display-name": "quattro fugiat",
+            "downlink": 322694552,
+            "id": "quattro",
+            "sd": 14628949,
+            "sst": 1,
+            "uplink": 1607714163
+          }
+        ]
+      ]
+    },
+    "traffic_class": {
+      "traffic_class": [
+        []
+      ]
+    },
+    "upf": {
+      "upf": [
+        []
+      ]
+    },
+    "vcs": {
+      "vcs": [
+        []
+      ]
+    }
+  }
+]
diff --git a/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-get.out b/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-get.out
new file mode 100644
index 0000000..4b3d3c0
--- /dev/null
+++ b/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-get.out
@@ -0,0 +1,239 @@
+[
+  {
+    "ap-list": {
+      "ap-list": [
+        [
+          {
+            "access_points": [
+              {
+                "address": "ap2^chicago^acme^com",
+                "enable": true,
+                "tac": 8002
+              }
+            ],
+            "description": "Chicago APs",
+            "display_name": "Chicago",
+            "enterprise": "acme",
+            "id": "acme_chicago_aps"
+          }
+        ]
+      ]
+    },
+    "application": {
+      "application": [
+        [
+          {
+            "description": "Data Acquisition",
+            "display_name": "DA",
+            "endpoint": [
+              {
+                "address": "da.acme.com",
+                "name": "da",
+                "port_end": 7585,
+                "port_start": 7588,
+                "protocol": "TCP"
+              }
+            ],
+            "enterprise": "acme",
+            "id": "acme_dataacquisition"
+          }
+        ]
+      ]
+    },
+    "connectivity-service": {
+      "connectivity-service": [
+        [
+          {
+            "core_5g_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/5g",
+            "description": "5G Test",
+            "display_name": "ROC 5G Test Connectivity Service",
+            "id": "cs5gtest"
+          },
+          {
+            "description": "ROC 4G Test Connectivity Service",
+            "display_name": "4G Test",
+            "hss_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/imsis",
+            "id": "cs4gtest",
+            "pcrf_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/policies",
+            "spgwc_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config"
+          }
+        ]
+      ]
+    },
+    "device-group": {
+      "device-group": [
+        [
+          {
+            "display_name": "ACME Robots",
+            "id": "acme_chicago_robots",
+            "imsis": [
+              {
+                "imsi_range_from": 13698808332993000,
+                "imsi_range_to": 13698808332993003,
+                "name": "production"
+              },
+              {
+                "imsi_range_from": 13698808332993010,
+                "imsi_range_to": 13698808332993012,
+                "name": "warehouse"
+              }
+            ],
+            "ip_domain": "acme_chicago",
+            "site": "acme_chicago"
+          }
+        ]
+      ]
+    },
+    "enterprise": {
+      "enterprise": [
+        [
+          {
+            "connectivity_service": [
+              {
+                "connectivity_service": "cs5gtest",
+                "enabled": true
+              }
+            ],
+            "description": "ACME Corporation",
+            "display_name": "ACME Corp",
+            "id": "acme"
+          }
+        ]
+      ]
+    },
+    "ip-domain": {
+      "ip-domain": [
+        []
+      ]
+    },
+    "network": {
+      "network": [
+        [
+          {
+            "description": "Chicago 123_456",
+            "display_name": "Chicago",
+            "enterprise": "acme",
+            "id": "acme_chicago",
+            "mcc": 123,
+            "mnc": 456
+          }
+        ]
+      ]
+    },
+    "site": {
+      "site": [
+        [
+          {
+            "description": "ACME HQ",
+            "display_name": "Chicago",
+            "enterprise": "acme",
+            "id": "acme_chicago",
+            "network": "acme_chicago"
+          }
+        ]
+      ]
+    },
+    "template": {
+      "template": [
+        [
+          {
+            "description": "VCS Template 1",
+            "display_name": "Template 1",
+            "downlink": 24669539,
+            "id": "template_1",
+            "sd": 10886763,
+            "sst": 158,
+            "traffic_class": "class_1",
+            "uplink": 23770218
+          },
+          {
+            "description": "VCS Template 2",
+            "display_name": "Template 2",
+            "downlink": 2791589,
+            "id": "template_2",
+            "sd": 16619900,
+            "sst": 157,
+            "traffic_class": "class_2",
+            "uplink": 24721051
+          }
+        ]
+      ]
+    },
+    "traffic_class": {
+      "traffic_class": [
+        [
+          {
+            "description": "High Priority TC",
+            "display_name": "Class 1",
+            "id": "class_1",
+            "pdb": 577,
+            "pelr": 3,
+            "qci": 10
+          },
+          {
+            "description": "Medium Priority TC",
+            "display_name": "Class 2",
+            "id": "class_2",
+            "pdb": 831,
+            "pelr": 4,
+            "qci": 20
+          },
+          {
+            "description": "Low Priority TC",
+            "display_name": "Class 3",
+            "id": "class_3",
+            "pdb": 833,
+            "pelr": 4,
+            "qci": 30
+          }
+        ]
+      ]
+    },
+    "upf": {
+      "upf": [
+        [
+          {
+            "address": "chicago.robots_upf.acme.com",
+            "description": "Chicago Robots UPF",
+            "display_name": "Chicago Robots",
+            "enterprise": "acme",
+            "id": "acme_chicago_robots",
+            "port": 6161
+          }
+        ]
+      ]
+    },
+    "vcs": {
+      "vcs": [
+        [
+          {
+            "ap": "acme_chicago_aps",
+            "application": [
+              {
+                "allow": false,
+                "application": "acme_dataacquisition"
+              }
+            ],
+            "description": "Chicago Robots",
+            "device_group": [
+              {
+                "device_group": "acme_chicago_robots",
+                "enable": true
+              }
+            ],
+            "display_name": "Chicago Robots VCS",
+            "downlink": 28492626,
+            "enterprise": "acme",
+            "id": "acme_chicago_robots",
+            "sd": 2973238,
+            "sst": 79,
+            "template": "template_2",
+            "traffic_class": "class_2",
+            "upf": "acme_chicago_robots",
+            "uplink": 13227287
+          }
+        ]
+      ]
+    }
+  }
+]
diff --git a/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-set.out b/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-set.out
new file mode 100644
index 0000000..6f88625
--- /dev/null
+++ b/aether-roc-umbrella/files/opa-rbac/test/out/aether-3.0.0-example-set.out
@@ -0,0 +1,128 @@
+[
+  {
+    "ap-list": {
+      "ap-list": [
+        []
+      ]
+    },
+    "application": {
+      "application": [
+        []
+      ]
+    },
+    "connectivity-service": {
+      "connectivity-service": [
+        []
+      ]
+    },
+    "device-group": {
+      "device-group": [
+        [
+          {
+            "display-name": "tempor ut",
+            "id": "amet",
+            "imsis": [
+              {
+                "imsi-range-from": 170029313275000,
+                "imsi-range-to": 69764015096000,
+                "name": "enim"
+              },
+              {
+                "imsi-range-from": 116299798497000,
+                "imsi-range-to": 22297092854800,
+                "name": "ad"
+              }
+            ],
+            "ip-domain": "qui",
+            "site": "inc"
+          }
+        ]
+      ]
+    },
+    "enterprise": {
+      "enterprise": [
+        [
+          {
+            "connectivity-service": [
+              {
+                "connectivity-service": "repre",
+                "enabled": true
+              },
+              {
+                "connectivity-service": "irure",
+                "enabled": true
+              }
+            ],
+            "description": "minim et",
+            "display-name": "laborum in",
+            "id": "dolor"
+          }
+        ]
+      ]
+    },
+    "ip-domain": {
+      "ip-domain": [
+        []
+      ]
+    },
+    "network": {
+      "network": [
+        []
+      ]
+    },
+    "site": {
+      "site": [
+        [
+          {
+            "description": "pariatur culpa",
+            "display-name": "occaecat nostrud",
+            "enterprise": "dolor",
+            "id": "inc",
+            "network": "irur"
+          }
+        ]
+      ]
+    },
+    "template": {
+      "template": [
+        [
+          {
+            "description": "enim ",
+            "display-name": "do labore laborum elit",
+            "downlink": 24669539,
+            "id": "magn",
+            "sd": 10886763,
+            "sst": 158,
+            "traffic-class": "consectetur in cillum",
+            "uplink": 23770218
+          },
+          {
+            "description": "aute dolore dolo",
+            "display-name": "quis pariatur dolore magna commodo",
+            "downlink": 2791589,
+            "id": "aliqua",
+            "sd": 16619900,
+            "sst": 157,
+            "traffic-class": "dolor in in et",
+            "uplink": 24721051
+          }
+        ]
+      ]
+    },
+    "traffic_class": {
+      "traffic_class": [
+        []
+      ]
+    },
+    "upf": {
+      "upf": [
+        []
+      ]
+    },
+    "vcs": {
+      "vcs": [
+        []
+      ]
+    }
+  }
+]
diff --git a/aether-roc-umbrella/files/opa-rbac/test/out/aether-4.0.0-example-get.out b/aether-roc-umbrella/files/opa-rbac/test/out/aether-4.0.0-example-get.out
new file mode 100644
index 0000000..30bca26
--- /dev/null
+++ b/aether-roc-umbrella/files/opa-rbac/test/out/aether-4.0.0-example-get.out
@@ -0,0 +1,297 @@
+[
+  {
+    "application": {
+      "application": [
+        [
+          {
+            "address": "da.acme.com",
+            "description": "Data Acquisition",
+            "display_name": "DA",
+            "endpoint": [
+              {
+                "display_name": "data acquisition endpoint",
+                "endpoint_id": "da",
+                "mbr": {
+                  "downlink": 1000000,
+                  "uplink": 2000000
+                },
+                "port_end": 7588,
+                "port_start": 7585,
+                "protocol": "TCP",
+                "traffic_class": "class_2"
+              }
+            ],
+            "enterprise": "acme",
+            "id": "acme_dataacquisition"
+          }
+        ]
+      ]
+    },
+    "connectivity-service": {
+      "connectivity-service": [
+        [
+          {
+            "acc_prometheus_url": "./prometheus_acc",
+            "core_5g_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/5g",
+            "description": "5G Test",
+            "display_name": "ROC 5G Test Connectivity Service",
+            "id": "cs5gtest"
+          },
+          {
+            "description": "ROC 4G Test Connectivity Service",
+            "display_name": "4G Test",
+            "hss_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/imsis",
+            "id": "cs4gtest",
+            "pcrf_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config/policies",
+            "spgwc_endpoint": "http://aether_roc_umbrella_sdcore_test_dummy/v1/config"
+          }
+        ]
+      ]
+    },
+    "device-group": {
+      "device-group": [
+        [
+          {
+            "display_name": "ACME Default",
+            "id": "acme_chicago_default",
+            "ip_domain": "acme_chicago",
+            "site": "acme_chicago"
+          },
+          {
+            "device": {
+              "mbr": {
+                "downlink": 1000000,
+                "uplink": 5000000
+              },
+              "traffic_class": "class_1"
+            },
+            "display_name": "ACME Robots",
+            "id": "acme_chicago_robots",
+            "imsis": [
+              {
+                "display_name": "production robots",
+                "imsi_id": "production",
+                "imsi_range_from": 0,
+                "imsi_range_to": 3
+              },
+              {
+                "display_name": "warehouse robots",
+                "imsi_id": "warehouse",
+                "imsi_range_from": 10,
+                "imsi_range_to": 12
+              }
+            ],
+            "ip_domain": "acme_chicago",
+            "site": "acme_chicago"
+          }
+        ]
+      ]
+    },
+    "enterprise": {
+      "enterprise": [
+        [
+          {
+            "connectivity_service": [
+              {
+                "connectivity_service": "cs5gtest",
+                "enabled": true
+              }
+            ],
+            "description": "ACME Corporation",
+            "display_name": "ACME Corp",
+            "id": "acme"
+          }
+        ]
+      ]
+    },
+    "ip-domain": {
+      "ip-domain": [
+        [
+          {
+            "admin_status": "DISABLE",
+            "description": "Chicago IP Domain",
+            "display_name": "Chicago",
+            "dns_primary": "8.8.8.4",
+            "dns_secondary": "8.8.8.4",
+            "enterprise": "acme",
+            "id": "acme_chicago",
+            "mtu": 12690,
+            "subnet": "163.25.44.0/31"
+          }
+        ]
+      ]
+    },
+    "site": {
+      "site": [
+        [
+          {
+            "description": "ACME HQ",
+            "display_name": "Chicago",
+            "enterprise": "acme",
+            "id": "acme_chicago",
+            "imsi_definition": {
+              "enterprise": 1,
+              "format": "CCCNNNEEESSSSSS",
+              "mcc": "123",
+              "mnc": "456"
+            },
+            "monitoring": {
+              "edge_cluster_prometheus_url": "prometheus_ace1",
+              "edge_device": [
+                {
+                  "description": "monitoring device placed near the sprocket manufacturing machine",
+                  "display_name": "sprocket monitoring pi",
+                  "edge_device_id": "acme_chicago_monitoring_pi_1"
+                },
+                {
+                  "description": "monitoring device placed near the widget refinisher",
+                  "display_name": "widget monitoring pi",
+                  "edge_device_id": "acme_chicago_monitoring_pi_2"
+                }
+              ],
+              "edge_monitoring_prometheus_url": "prometheus_amp"
+            },
+            "small_cell": [
+              {
+                "address": "ap2.chicago.acme.com",
+                "display_name": "cell number one",
+                "enable": true,
+                "small_cell_id": "cell1",
+                "tac": "8002"
+              }
+            ]
+          }
+        ]
+      ]
+    },
+    "template": {
+      "template": [
+        [
+          {
+            "default_behavior": "DENY_ALL",
+            "description": "VCS Template 1",
+            "display_name": "Template 1",
+            "id": "template_1",
+            "sd": 10886763,
+            "slice": {
+              "mbr": {
+                "downlink": 5000000,
+                "downlink_burst_size": 600000,
+                "uplink": 10000000,
+                "uplink_burst_size": 600000
+              }
+            },
+            "sst": 158
+          },
+          {
+            "default_behavior": "DENY_ALL",
+            "description": "VCS Template 2",
+            "display_name": "Template 2",
+            "id": "template_2",
+            "sd": 16619900,
+            "slice": {
+              "mbr": {
+                "downlink": 5000000,
+                "uplink": 10000000,
+                "uplink_burst_size": 500000
+              }
+            },
+            "sst": 157
+          }
+        ]
+      ]
+    },
+    "traffic-class": {
+      "traffic-class": [
+        [
+          {
+            "arp": 1,
+            "description": "High Priority TC",
+            "display_name": "Class 1",
+            "id": "class_1",
+            "pdb": 100,
+            "pelr": 10,
+            "qci": 10
+          },
+          {
+            "arp": 1,
+            "description": "Medium Priority TC",
+            "display_name": "Class 2",
+            "id": "class_2",
+            "pdb": 100,
+            "pelr": 10,
+            "qci": 20
+          },
+          {
+            "arp": 1,
+            "description": "Low Priority TC",
+            "display_name": "Class 3",
+            "id": "class_3",
+            "pdb": 100,
+            "pelr": 10,
+            "qci": 30
+          }
+        ]
+      ]
+    },
+    "upf": {
+      "upf": [
+        [
+          {
+            "address": "entry1.upfpool.chicago.acme.com",
+            "description": "Chicago UPF Pool _ Entry 1",
+            "display_name": "Chicago Pool 1",
+            "enterprise": "acme",
+            "id": "acme_chicago_pool_entry1",
+            "port": 6161,
+            "site": "acme_chicago"
+          },
+          {
+            "address": "entry2.upfpool.chicago.acme.com",
+            "description": "Chicago UPF Pool _ Entry 2",
+            "display_name": "Chicago Pool 2",
+            "enterprise": "acme",
+            "id": "acme_chicago_pool_entry2",
+            "port": 6161,
+            "site": "acme_chicago"
+          }
+        ]
+      ]
+    },
+    "vcs": {
+      "vcs": [
+        [
+          {
+            "default_behavior": "DENY_ALL",
+            "description": "Chicago Robots",
+            "device_group": [
+              {
+                "device_group": "acme_chicago_robots",
+                "enable": true
+              }
+            ],
+            "display_name": "Chicago Robots VCS",
+            "enterprise": "acme",
+            "filter": [
+              {
+                "allow": false,
+                "application": "acme_dataacquisition"
+              }
+            ],
+            "id": "acme_chicago_robots",
+            "sd": 2973238,
+            "site": "acme_chicago",
+            "slice": {
+              "mbr": {
+                "downlink": 5000000,
+                "downlink_burst_size": 600000
+              }
+            },
+            "sst": 79,
+            "upf": "acme_chicago_pool_entry1"
+          }
+        ]
+      ]
+    }
+  }
+]