making progress
This commit is contained in:
122
main.go
122
main.go
@@ -9,20 +9,16 @@ import (
|
||||
"github.com/iancoleman/orderedmap"
|
||||
)
|
||||
|
||||
type CommonTestSettings struct {
|
||||
RootUrl string
|
||||
Name string
|
||||
Headers map[string]string // Need to initialise with make
|
||||
type TestDefinitions struct {
|
||||
Name string `json:"name"`
|
||||
TestCases []TestCase `json:"testCases"`
|
||||
BaseUrl string `json:"url"`
|
||||
Headers map[string]string // Need to initialise with make
|
||||
//Header HeaderOptions `json:"header"`
|
||||
}
|
||||
|
||||
type InputData struct {
|
||||
Name string `json:"name"`
|
||||
TestCases []TestCases `json:"testCases"`
|
||||
URL string `json:"url"`
|
||||
Header HeaderOptions `json:"header"`
|
||||
}
|
||||
|
||||
type TestCases struct {
|
||||
type TestCase struct {
|
||||
Name string
|
||||
Path string `json:"path"`
|
||||
Method string `json:"method"`
|
||||
Description string `json:"description"`
|
||||
@@ -92,10 +88,11 @@ func TestOutput() {
|
||||
func main() {
|
||||
var s []byte
|
||||
var err error
|
||||
var ok bool
|
||||
|
||||
// Prepare struct to store settings common to all tests
|
||||
testSettings := new(CommonTestSettings)
|
||||
testSettings.Headers = make(map[string]string)
|
||||
testDefinitions := new(TestDefinitions)
|
||||
testDefinitions.Headers = make(map[string]string)
|
||||
|
||||
//testCaseDefinition := new(InputData)
|
||||
|
||||
@@ -126,9 +123,11 @@ func main() {
|
||||
|
||||
topLevel := o.Keys()
|
||||
fmt.Printf("Found %d top-level keys in json data\n", len(topLevel))
|
||||
for i, key := range topLevel {
|
||||
fmt.Printf("[%d] : %s\n", i, key)
|
||||
}
|
||||
/*
|
||||
for i, key := range topLevel {
|
||||
fmt.Printf("[%d] : %s\n", i, key)
|
||||
}
|
||||
*/
|
||||
|
||||
// TODO : Check required top level keys are present
|
||||
if len(topLevel) <= 1 {
|
||||
@@ -136,25 +135,41 @@ func main() {
|
||||
panic(error)
|
||||
}
|
||||
|
||||
// Get a reference to the node containing all our test cases
|
||||
// Get the name of the group of tests
|
||||
if data, ok := o.Get("name"); ok {
|
||||
testDefinitions.Name = data.(string)
|
||||
fmt.Printf("test name: '%s'\n", testDefinitions.Name)
|
||||
}
|
||||
|
||||
// Get a reference to the node containing each of the test cases
|
||||
testsInterface, ok := o.Get("testCases")
|
||||
if !ok {
|
||||
fmt.Printf("No key defining test cases found\n")
|
||||
}
|
||||
|
||||
// Test Cases is an array, need to go one level down before we start looking at key/values
|
||||
vs := testsInterface.([]interface{})
|
||||
fmt.Printf("Listing %d test definitions\n", len(vs))
|
||||
for i, vInterface := range vs {
|
||||
v := vInterface.(orderedmap.OrderedMap)
|
||||
keys := v.Keys()
|
||||
fmt.Printf("Test %d\n", i)
|
||||
for j := range keys {
|
||||
fmt.Printf("[%d] : %s\n", j, keys[j])
|
||||
/*
|
||||
// Test Cases is an array, need to go one level down before we start looking at key/values
|
||||
vs := testsInterface.([]interface{})
|
||||
fmt.Printf("Listing %d test definitions\n", len(vs))
|
||||
for i, vInterface := range vs {
|
||||
v := vInterface.(orderedmap.OrderedMap)
|
||||
keys := v.Keys()
|
||||
fmt.Printf("Test %d\n", i)
|
||||
for j := range keys {
|
||||
fmt.Printf("[%d] : %s\n", j, keys[j])
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
return
|
||||
/*
|
||||
vslice := testsInterface.([]interface{})
|
||||
vmap := vslice[2].(orderedmap.OrderedMap)
|
||||
k := vmap.Keys()
|
||||
for i := range k {
|
||||
fmt.Printf("[%d] : %s\n", i, k[i])
|
||||
}
|
||||
return
|
||||
*/
|
||||
|
||||
// Get the keys for the first test so we know what config options have been specified
|
||||
testCasesMap := testsInterface.(orderedmap.OrderedMap)
|
||||
@@ -163,16 +178,45 @@ func main() {
|
||||
// Parse json into our testCaseDefinition
|
||||
|
||||
// Parse each key into our config struct
|
||||
for i, key := range testCasesKeys {
|
||||
/*
|
||||
if strings.EqualFold(key, "path") {
|
||||
fmt.Printf("Found config element for path\n")
|
||||
e, _ := configMap.Get(key)
|
||||
for i, e := range strings.Split(e.(string), ",") {
|
||||
config.keyOrder[i] = e
|
||||
}
|
||||
fmt.Printf("Listing %d test cases\n", len(testCasesKeys))
|
||||
for i, outerKey := range testCasesKeys {
|
||||
|
||||
fmt.Printf("Test %d : %s\n", i, outerKey)
|
||||
|
||||
thisTestCase := new(TestCase)
|
||||
thisTestCase.Name = outerKey
|
||||
|
||||
if testCase, ok := testCasesMap.Get(outerKey); ok {
|
||||
|
||||
// Get the details of the test case
|
||||
thisTestCaseMap := testCase.(orderedmap.OrderedMap)
|
||||
|
||||
// Path
|
||||
if val, ok := thisTestCaseMap.Get("path"); ok {
|
||||
thisTestCase.Path = val.(string)
|
||||
}
|
||||
*/
|
||||
fmt.Printf("[%d] : %s\n", i, key)
|
||||
// Method
|
||||
if val, ok := thisTestCaseMap.Get("method"); ok {
|
||||
thisTestCase.Method = val.(string)
|
||||
}
|
||||
// Description
|
||||
if val, ok := thisTestCaseMap.Get("description"); ok {
|
||||
thisTestCase.Description = val.(string)
|
||||
}
|
||||
// Expect - this is more tricky since it is yet another json fragment
|
||||
|
||||
/*
|
||||
for j, key := range thisTestCaseMap.Keys() {
|
||||
val, _ := thisTestCaseMap.Get(key)
|
||||
|
||||
fmt.Printf("[%d] %s : %s\n", j, key, val)
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
testDefinitions.TestCases = append(testDefinitions.TestCases, *thisTestCase)
|
||||
}
|
||||
|
||||
// For debugging, just dump the output
|
||||
fmt.Printf("%+v\n", testDefinitions)
|
||||
}
|
||||
|
Reference in New Issue
Block a user