From 62efad2d5783973a5a6819d3982304cd41ff3e51 Mon Sep 17 00:00:00 2001
From: Lyuben Penkovski <lyuben.penkovski@vereign.com>
Date: Thu, 26 May 2022 15:59:58 +0300
Subject: [PATCH] Update Goa DSL to include default example values for policy
 evaluation

---
 design/types.go               | 12 +++++++---
 gen/http/cli/policy/cli.go    |  8 +++----
 gen/http/openapi3.json        |  2 +-
 gen/http/openapi3.yaml        | 44 +++++++++++++++++------------------
 gen/http/policy/client/cli.go |  2 +-
 5 files changed, 37 insertions(+), 31 deletions(-)

diff --git a/design/types.go b/design/types.go
index 3c83c2c6..26996205 100644
--- a/design/types.go
+++ b/design/types.go
@@ -4,9 +4,15 @@ package design
 import . "goa.design/goa/v3/dsl"
 
 var EvaluateRequest = Type("EvaluateRequest", func() {
-	Field(1, "group", String, "Policy group.")
-	Field(2, "policyName", String, "Policy name.")
-	Field(3, "version", String, "Policy version.")
+	Field(1, "group", String, "Policy group.", func() {
+		Example("example")
+	})
+	Field(2, "policyName", String, "Policy name.", func() {
+		Example("example")
+	})
+	Field(3, "version", String, "Policy version.", func() {
+		Example("1.0")
+	})
 	Field(4, "input", Any, "Input data passed to the policy execution runtime.")
 	Required("group", "policyName", "version", "input")
 })
diff --git a/gen/http/cli/policy/cli.go b/gen/http/cli/policy/cli.go
index ca3c7841..43194037 100644
--- a/gen/http/cli/policy/cli.go
+++ b/gen/http/cli/policy/cli.go
@@ -32,7 +32,7 @@ policy (evaluate|lock|unlock)
 // UsageExamples produces an example of a valid invocation of the CLI tool.
 func UsageExamples() string {
 	return os.Args[0] + ` health liveness` + "\n" +
-		os.Args[0] + ` policy evaluate --body "Similique quisquam optio." --group "Repellat velit omnis." --policy-name "Vitae qui." --version "Provident fugiat at cupiditate."` + "\n" +
+		os.Args[0] + ` policy evaluate --body "Ab accusamus voluptatem et est." --group "example" --policy-name "example" --version "1.0"` + "\n" +
 		""
 }
 
@@ -247,7 +247,7 @@ Evaluate executes a policy with the given 'data' as input.
     -version STRING: Policy version.
 
 Example:
-    %[1]s policy evaluate --body "Similique quisquam optio." --group "Repellat velit omnis." --policy-name "Vitae qui." --version "Provident fugiat at cupiditate."
+    %[1]s policy evaluate --body "Ab accusamus voluptatem et est." --group "example" --policy-name "example" --version "1.0"
 `, os.Args[0])
 }
 
@@ -260,7 +260,7 @@ Lock a policy so that it cannot be evaluated.
     -version STRING: Policy version.
 
 Example:
-    %[1]s policy lock --group "Deleniti non nihil dolor aut sed." --policy-name "Incidunt unde consequatur voluptas dolorem nisi temporibus." --version "Omnis quasi aut consequuntur."
+    %[1]s policy lock --group "Vitae qui." --policy-name "Provident fugiat at cupiditate." --version "Commodi vitae voluptatem."
 `, os.Args[0])
 }
 
@@ -273,6 +273,6 @@ Unlock a policy so it can be evaluated again.
     -version STRING: Policy version.
 
 Example:
-    %[1]s policy unlock --group "Aut facere veniam repudiandae id." --policy-name "Aut minus alias." --version "At eos facilis molestias in voluptas rem."
+    %[1]s policy unlock --group "Aut ut fuga quae eius minus." --policy-name "Architecto quibusdam ab." --version "In illum est et hic."
 `, os.Args[0])
 }
diff --git a/gen/http/openapi3.json b/gen/http/openapi3.json
index 157c1dd6..87f8be38 100644
--- a/gen/http/openapi3.json
+++ b/gen/http/openapi3.json
@@ -1 +1 @@
-{"openapi":"3.0.3","info":{"title":"Policy Service","description":"The policy service exposes HTTP API for executing policies.","version":"1.0"},"servers":[{"url":"http://localhost:8081","description":"Policy Server"}],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}}}},"/policy/{group}/{policyName}/{version}/evaluation":{"post":{"tags":["policy"],"summary":"Evaluate policy","description":"Evaluate executes a policy with the given 'data' as input.","operationId":"policy#Evaluate","parameters":[{"name":"group","in":"path","description":"Policy group.","required":true,"schema":{"type":"string","description":"Policy group.","example":"Sint nam voluptatem ea consequatur similique et."},"example":"Non mollitia nesciunt impedit facere."},{"name":"policyName","in":"path","description":"Policy name.","required":true,"schema":{"type":"string","description":"Policy name.","example":"Ut commodi perspiciatis corporis."},"example":"Accusamus autem sequi."},{"name":"version","in":"path","description":"Policy version.","required":true,"schema":{"type":"string","description":"Policy version.","example":"Et nulla."},"example":"In quis nesciunt autem et."}],"requestBody":{"description":"Input data passed to the policy execution runtime.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Input data passed to the policy execution runtime.","example":"Ab accusantium ut ut aliquid sint animi.","format":"binary"},"example":"Aut voluptas."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","example":"Dolorem cumque laborum quis nesciunt.","format":"binary"},"example":"Sunt in et quia cum."}}}}}},"/policy/{group}/{policyName}/{version}/lock":{"delete":{"tags":["policy"],"summary":"Unlock policy","description":"Unlock a policy so it can be evaluated again.","operationId":"policy#Unlock","parameters":[{"name":"group","in":"path","description":"Policy group.","required":true,"schema":{"type":"string","description":"Policy group.","example":"Accusamus enim."},"example":"Recusandae est rerum corrupti quia."},{"name":"policyName","in":"path","description":"Policy name.","required":true,"schema":{"type":"string","description":"Policy name.","example":"Quam dolores architecto itaque."},"example":"Voluptas ad corporis adipisci inventore ipsum."},{"name":"version","in":"path","description":"Policy version.","required":true,"schema":{"type":"string","description":"Policy version.","example":"Recusandae dolorum nisi distinctio vitae ad."},"example":"Perspiciatis voluptatem."}],"responses":{"200":{"description":"OK response."}}},"post":{"tags":["policy"],"summary":"Lock policy","description":"Lock a policy so that it cannot be evaluated.","operationId":"policy#Lock","parameters":[{"name":"group","in":"path","description":"Policy group.","required":true,"schema":{"type":"string","description":"Policy group.","example":"Commodi nemo fugiat id praesentium accusantium expedita."},"example":"Qui non quia."},{"name":"policyName","in":"path","description":"Policy name.","required":true,"schema":{"type":"string","description":"Policy name.","example":"Error maxime quasi quia non voluptatibus error."},"example":"Optio quia et laborum."},{"name":"version","in":"path","description":"Policy version.","required":true,"schema":{"type":"string","description":"Policy version.","example":"In libero perspiciatis voluptatum ut soluta."},"example":"Ut amet."}],"responses":{"200":{"description":"OK response."}}}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}}}}},"components":{},"tags":[{"name":"health","description":"Health service provides health check endpoints."},{"name":"policy","description":"Policy Service provides evaluation of policies through Open Policy Agent."}]}
\ No newline at end of file
+{"openapi":"3.0.3","info":{"title":"Policy Service","description":"The policy service exposes HTTP API for executing policies.","version":"1.0"},"servers":[{"url":"http://localhost:8081","description":"Policy Server"}],"paths":{"/liveness":{"get":{"tags":["health"],"summary":"Liveness health","operationId":"health#Liveness","responses":{"200":{"description":"OK response."}}}},"/policy/{group}/{policyName}/{version}/evaluation":{"post":{"tags":["policy"],"summary":"Evaluate policy","description":"Evaluate executes a policy with the given 'data' as input.","operationId":"policy#Evaluate","parameters":[{"name":"group","in":"path","description":"Policy group.","required":true,"schema":{"type":"string","description":"Policy group.","example":"example"},"example":"example"},{"name":"policyName","in":"path","description":"Policy name.","required":true,"schema":{"type":"string","description":"Policy name.","example":"example"},"example":"example"},{"name":"version","in":"path","description":"Policy version.","required":true,"schema":{"type":"string","description":"Policy version.","example":"1.0"},"example":"1.0"}],"requestBody":{"description":"Input data passed to the policy execution runtime.","required":true,"content":{"application/json":{"schema":{"type":"string","description":"Input data passed to the policy execution runtime.","example":"Deleniti non nihil dolor aut sed.","format":"binary"},"example":"Omnis quasi aut consequuntur."}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","example":"Incidunt unde consequatur voluptas dolorem nisi temporibus.","format":"binary"},"example":"Tempore minus."}}}}}},"/policy/{group}/{policyName}/{version}/lock":{"delete":{"tags":["policy"],"summary":"Unlock policy","description":"Unlock a policy so it can be evaluated again.","operationId":"policy#Unlock","parameters":[{"name":"group","in":"path","description":"Policy group.","required":true,"schema":{"type":"string","description":"Policy group.","example":"Dolorem cumque laborum quis nesciunt."},"example":"Aut voluptas."},{"name":"policyName","in":"path","description":"Policy name.","required":true,"schema":{"type":"string","description":"Policy name.","example":"Sint nam voluptatem ea consequatur similique et."},"example":"Non mollitia nesciunt impedit facere."},{"name":"version","in":"path","description":"Policy version.","required":true,"schema":{"type":"string","description":"Policy version.","example":"Ut commodi perspiciatis corporis."},"example":"Accusamus autem sequi."}],"responses":{"200":{"description":"OK response."}}},"post":{"tags":["policy"],"summary":"Lock policy","description":"Lock a policy so that it cannot be evaluated.","operationId":"policy#Lock","parameters":[{"name":"group","in":"path","description":"Policy group.","required":true,"schema":{"type":"string","description":"Policy group.","example":"Quis quos qui earum velit illum."},"example":"Aliquam atque voluptatum ut dolorem."},{"name":"policyName","in":"path","description":"Policy name.","required":true,"schema":{"type":"string","description":"Policy name.","example":"Aut facere veniam repudiandae id."},"example":"Aut minus alias."},{"name":"version","in":"path","description":"Policy version.","required":true,"schema":{"type":"string","description":"Policy version.","example":"At eos facilis molestias in voluptas rem."},"example":"Ab accusantium ut ut aliquid sint animi."}],"responses":{"200":{"description":"OK response."}}}},"/readiness":{"get":{"tags":["health"],"summary":"Readiness health","operationId":"health#Readiness","responses":{"200":{"description":"OK response."}}}}},"components":{},"tags":[{"name":"health","description":"Health service provides health check endpoints."},{"name":"policy","description":"Policy Service provides evaluation of policies through Open Policy Agent."}]}
\ No newline at end of file
diff --git a/gen/http/openapi3.yaml b/gen/http/openapi3.yaml
index f5940267..f5a2f231 100644
--- a/gen/http/openapi3.yaml
+++ b/gen/http/openapi3.yaml
@@ -31,8 +31,8 @@ paths:
         schema:
           type: string
           description: Policy group.
-          example: Sint nam voluptatem ea consequatur similique et.
-        example: Non mollitia nesciunt impedit facere.
+          example: example
+        example: example
       - name: policyName
         in: path
         description: Policy name.
@@ -40,8 +40,8 @@ paths:
         schema:
           type: string
           description: Policy name.
-          example: Ut commodi perspiciatis corporis.
-        example: Accusamus autem sequi.
+          example: example
+        example: example
       - name: version
         in: path
         description: Policy version.
@@ -49,8 +49,8 @@ paths:
         schema:
           type: string
           description: Policy version.
-          example: Et nulla.
-        example: In quis nesciunt autem et.
+          example: "1.0"
+        example: "1.0"
       requestBody:
         description: Input data passed to the policy execution runtime.
         required: true
@@ -59,9 +59,9 @@ paths:
             schema:
               type: string
               description: Input data passed to the policy execution runtime.
-              example: Ab accusantium ut ut aliquid sint animi.
+              example: Deleniti non nihil dolor aut sed.
               format: binary
-            example: Aut voluptas.
+            example: Omnis quasi aut consequuntur.
       responses:
         "200":
           description: OK response.
@@ -69,9 +69,9 @@ paths:
             application/json:
               schema:
                 type: string
-                example: Dolorem cumque laborum quis nesciunt.
+                example: Incidunt unde consequatur voluptas dolorem nisi temporibus.
                 format: binary
-              example: Sunt in et quia cum.
+              example: Tempore minus.
   /policy/{group}/{policyName}/{version}/lock:
     delete:
       tags:
@@ -87,8 +87,8 @@ paths:
         schema:
           type: string
           description: Policy group.
-          example: Accusamus enim.
-        example: Recusandae est rerum corrupti quia.
+          example: Dolorem cumque laborum quis nesciunt.
+        example: Aut voluptas.
       - name: policyName
         in: path
         description: Policy name.
@@ -96,8 +96,8 @@ paths:
         schema:
           type: string
           description: Policy name.
-          example: Quam dolores architecto itaque.
-        example: Voluptas ad corporis adipisci inventore ipsum.
+          example: Sint nam voluptatem ea consequatur similique et.
+        example: Non mollitia nesciunt impedit facere.
       - name: version
         in: path
         description: Policy version.
@@ -105,8 +105,8 @@ paths:
         schema:
           type: string
           description: Policy version.
-          example: Recusandae dolorum nisi distinctio vitae ad.
-        example: Perspiciatis voluptatem.
+          example: Ut commodi perspiciatis corporis.
+        example: Accusamus autem sequi.
       responses:
         "200":
           description: OK response.
@@ -124,8 +124,8 @@ paths:
         schema:
           type: string
           description: Policy group.
-          example: Commodi nemo fugiat id praesentium accusantium expedita.
-        example: Qui non quia.
+          example: Quis quos qui earum velit illum.
+        example: Aliquam atque voluptatum ut dolorem.
       - name: policyName
         in: path
         description: Policy name.
@@ -133,8 +133,8 @@ paths:
         schema:
           type: string
           description: Policy name.
-          example: Error maxime quasi quia non voluptatibus error.
-        example: Optio quia et laborum.
+          example: Aut facere veniam repudiandae id.
+        example: Aut minus alias.
       - name: version
         in: path
         description: Policy version.
@@ -142,8 +142,8 @@ paths:
         schema:
           type: string
           description: Policy version.
-          example: In libero perspiciatis voluptatum ut soluta.
-        example: Ut amet.
+          example: At eos facilis molestias in voluptas rem.
+        example: Ab accusantium ut ut aliquid sint animi.
       responses:
         "200":
           description: OK response.
diff --git a/gen/http/policy/client/cli.go b/gen/http/policy/client/cli.go
index 8b74da63..931cc1ad 100644
--- a/gen/http/policy/client/cli.go
+++ b/gen/http/policy/client/cli.go
@@ -22,7 +22,7 @@ func BuildEvaluatePayload(policyEvaluateBody string, policyEvaluateGroup string,
 	{
 		err = json.Unmarshal([]byte(policyEvaluateBody), &body)
 		if err != nil {
-			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Similique quisquam optio.\"")
+			return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "\"Ab accusamus voluptatem et est.\"")
 		}
 	}
 	var group string
-- 
GitLab