Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

63
pkg/testhelper/schema.go Normal file
View File

@@ -0,0 +1,63 @@
package testhelper
import (
"testing"
"github.com/xeipuuv/gojsonschema"
)
func NewSchemaTestHelper(t *testing.T, schemaFile string) SchemaTestHelper {
schema, err := getSchema(schemaFile)
if err != nil {
t.Fatalf(TestErrorTemplate, "RunSchemaTests", nil, err)
}
return SchemaTestHelper{
schema: schema,
t: t,
}
}
type SchemaTestHelper struct {
schema *gojsonschema.Schema
t *testing.T
}
type SchemaTest struct {
Name string
Object interface{}
}
func (h SchemaTestHelper) RunSchemaTests(tests []SchemaTest) {
for _, test := range tests {
h.runSchemaTest(test)
}
}
func (h SchemaTestHelper) ValidateSchemaObject(testName string, data []byte) {
objectLoader := gojsonschema.NewBytesLoader(data)
h.validate(testName, objectLoader)
}
func (h SchemaTestHelper) runSchemaTest(test SchemaTest) {
objectLoader := gojsonschema.NewGoLoader(test.Object)
h.validate(test.Name, objectLoader)
}
func (h SchemaTestHelper) validate(testName string, objectLoader gojsonschema.JSONLoader) {
result, err := h.schema.Validate(objectLoader)
if err != nil {
h.t.Fatalf(TestErrorTemplate, testName, nil, err)
}
if !result.Valid() {
for _, err := range result.Errors() {
h.t.Errorf(TestErrorTemplate, testName, nil, err)
}
}
}
func getSchema(filePath string) (*gojsonschema.Schema, error) {
schemaLoader := gojsonschema.NewReferenceLoader(filePath)
return gojsonschema.NewSchema(schemaLoader)
}