From ae85dc35eb05626ba3c67bbdb594b3194a26277e Mon Sep 17 00:00:00 2001
From: Trishna Saeharaseelan <trishna.saeharaseelan@noc.ac.uk>
Date: Fri, 17 Mar 2023 16:39:58 +0000
Subject: [PATCH] fix: failing oneof schemas for 3 encoded message types

---
 formats/encoded.py                 |  6 ------
 formats/mission_plan_encoded.py    | 10 ++++++++++
 formats/observation_encoded.py     | 10 ++++++++++
 formats/platform_status_encoded.py | 10 ++++++++++
 generate_schema_config.py          | 10 ++++++----
 project/soar/swagger.json          | 22 ++++++++--------------
 tests-js/soar-examples.test.js     |  2 +-
 7 files changed, 45 insertions(+), 25 deletions(-)
 create mode 100644 formats/mission_plan_encoded.py
 create mode 100644 formats/observation_encoded.py
 create mode 100644 formats/platform_status_encoded.py

diff --git a/formats/encoded.py b/formats/encoded.py
index 02069b6..8d6d700 100644
--- a/formats/encoded.py
+++ b/formats/encoded.py
@@ -12,12 +12,6 @@ encoded_schema = {
         "message_type": {
             "type": "string",
             "description": "Type of message",
-            "example": "mission_plan",
-            "enum": [
-                "mission_plan_encoded",
-                "observation_encoded",
-                "platform_status_encoded",
-            ],
         },
         "data": {
             "type": "string",
diff --git a/formats/mission_plan_encoded.py b/formats/mission_plan_encoded.py
new file mode 100644
index 0000000..bc32ab4
--- /dev/null
+++ b/formats/mission_plan_encoded.py
@@ -0,0 +1,10 @@
+from formats.encoded import encoded_schema
+
+mission_plan_encoded_schema = encoded_schema
+
+mission_plan_encoded_schema["properties"]["message_type"]["enum"] = [
+    "mission_plan_encoded"
+]
+mission_plan_encoded_schema["properties"]["message_type"][
+    "example"
+] = "mission_plan_encoded"
diff --git a/formats/observation_encoded.py b/formats/observation_encoded.py
new file mode 100644
index 0000000..257c21a
--- /dev/null
+++ b/formats/observation_encoded.py
@@ -0,0 +1,10 @@
+from formats.encoded import encoded_schema
+
+observation_encoded_schema = encoded_schema
+
+observation_encoded_schema["properties"]["message_type"]["enum"] = [
+    "observation_encoded"
+]
+observation_encoded_schema["properties"]["message_type"][
+    "example"
+] = "observation_encoded"
diff --git a/formats/platform_status_encoded.py b/formats/platform_status_encoded.py
new file mode 100644
index 0000000..23b54a9
--- /dev/null
+++ b/formats/platform_status_encoded.py
@@ -0,0 +1,10 @@
+from formats.encoded import encoded_schema
+
+platform_status_encoded_schema = encoded_schema
+
+platform_status_encoded_schema["properties"]["message_type"]["enum"] = [
+    "platform_status_encoded"
+]
+platform_status_encoded_schema["properties"]["message_type"][
+    "example"
+] = "platform_status_encoded"
diff --git a/generate_schema_config.py b/generate_schema_config.py
index 51f081f..52fd786 100644
--- a/generate_schema_config.py
+++ b/generate_schema_config.py
@@ -1,9 +1,11 @@
 from formats import message_header
-from formats.encoded import encoded_schema
 from formats.mission_plan import mission_plan_schema
+from formats.mission_plan_encoded import mission_plan_encoded_schema
 from formats.observation import observation_schema
+from formats.observation_encoded import observation_encoded_schema
 from formats.planning_configuration import planning_configuration_schema
 from formats.platform_status import platform_status_schema
+from formats.platform_status_encoded import platform_status_encoded_schema
 from formats.acknowledgement import acknowledgement_schema
 
 from flasgger import Swagger
@@ -78,12 +80,12 @@ swagger_config = {
             },
             "header": message_header,
             "mission_plan": mission_plan_schema,
-            "mission_plan_encoded": encoded_schema,
+            "mission_plan_encoded": mission_plan_encoded_schema,
             "observation": observation_schema,
-            "observation_encoded": encoded_schema,
+            "observation_encoded": observation_encoded_schema,
             "planning_configuration": planning_configuration_schema,
             "platform_status": platform_status_schema,
-            "platform_status_encoded": encoded_schema,
+            "platform_status_encoded": platform_status_encoded_schema,
             "acknowledgement": acknowledgement_schema,
         }
     },
diff --git a/project/soar/swagger.json b/project/soar/swagger.json
index 0b4be39..cbb07a5 100644
--- a/project/soar/swagger.json
+++ b/project/soar/swagger.json
@@ -196,7 +196,7 @@
          "mission_plan_encoded":{
             "properties":{
                "data":{
-                  "description":"Encoded string. E.g.: base64 encoded",
+                  "description":"encoded string. E.g. Base64 encoded",
                   "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
                   "type":"string"
                },
@@ -213,11 +213,9 @@
                "message_type":{
                   "description":"Type of message",
                   "enum":[
-                     "mission_plan_encoded",
-                     "observation_encoded",
-                     "platform_status_encoded"
+                     "mission_plan_encoded"
                   ],
-                  "example":"mission_plan",
+                  "example":"mission_plan_encoded",
                   "type":"string"
                },
                "mime_type":{
@@ -299,7 +297,7 @@
          "observation_encoded":{
             "properties":{
                "data":{
-                  "description":"Encoded string. E.g. base64 encoding",
+                  "description":"encoded string. E.g. Base64 encoded",
                   "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
                   "type":"string"
                },
@@ -316,11 +314,9 @@
                "message_type":{
                   "description":"Type of message",
                   "enum":[
-                     "mission_plan_encoded",
-                     "observation_encoded",
-                     "platform_status_encoded"
+                     "observation_encoded"
                   ],
-                  "example":"mission_plan",
+                  "example":"observation_encoded",
                   "type":"string"
                },
                "mime_type":{
@@ -782,7 +778,7 @@
          "platform_status_encoded":{
             "properties":{
                "data":{
-                  "description":"Encoded string. E.g. base64 encoding",
+                  "description":"encoded string. E.g. Base64 encoded",
                   "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
                   "type":"string"
                },
@@ -799,11 +795,9 @@
                "message_type":{
                   "description":"Type of message",
                   "enum":[
-                     "mission_plan_encoded",
-                     "observation_encoded",
                      "platform_status_encoded"
                   ],
-                  "example":"mission_plan",
+                  "example":"platform_status_encoded",
                   "type":"string"
                },
                "mime_type":{
diff --git a/tests-js/soar-examples.test.js b/tests-js/soar-examples.test.js
index ce5f341..7c0ec71 100644
--- a/tests-js/soar-examples.test.js
+++ b/tests-js/soar-examples.test.js
@@ -3,7 +3,7 @@ const Validator = require('swagger-model-validator');
 const OpenAPISchemaValidator = require('openapi-schema-validator').default;
 
 const getSchema = () => {
-  const schema = require(`${__dirname}/../projects/soar/swagger.json`);
+  const schema = require(`${__dirname}/../project/soar/swagger.json`);
   return schema;
 };
 
-- 
GitLab