Skip to content

Commit 03f2852

Browse files
committed
#7 Add override of operations headers
1 parent a1441a5 commit 03f2852

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

cmd/test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ func (c *testComamnd) Execute() {
6464
var keycloakClientID string
6565
var keycloakClientSecret string
6666
var waitFor string
67+
var operationsHeaders string
6768
var insecureTLS bool
6869
var caCertPaths string
6970
var verbose bool
@@ -72,6 +73,7 @@ func (c *testComamnd) Execute() {
7273
testCmd.StringVar(&keycloakClientID, "keycloakClientId", "", "Keycloak Realm Service Account ClientId")
7374
testCmd.StringVar(&keycloakClientSecret, "keycloakClientSecret", "", "Keycloak Realm Service Account ClientSecret")
7475
testCmd.StringVar(&waitFor, "waitFor", "5sec", "Time to wait for test to finish")
76+
testCmd.StringVar(&operationsHeaders, "operationsHeaders", "", "Override of operations headers as JSON string")
7577
testCmd.BoolVar(&insecureTLS, "insecure", false, "Whether to accept insecure HTTPS connection")
7678
testCmd.StringVar(&caCertPaths, "caCerts", "", "Comma separated paths of CRT files to add to Root CAs")
7779
testCmd.BoolVar(&verbose, "verbose", false, "Produce dumps of HTTP exchanges")
@@ -142,7 +144,7 @@ func (c *testComamnd) Execute() {
142144
mc.SetOAuthToken(oauthToken)
143145

144146
var testResultID string
145-
testResultID, err = mc.CreateTestResult(serviceRef, testEndpoint, runnerType)
147+
testResultID, err = mc.CreateTestResult(serviceRef, testEndpoint, runnerType, operationsHeaders)
146148
if err != nil {
147149
fmt.Printf("Got error when invoking Microcks client creating Test: %s", err)
148150
os.Exit(1)

pkg/connectors/microcks_client.go

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package connectors
22

33
import (
44
"encoding/json"
5+
"fmt"
56
"io/ioutil"
67
"net/http"
78
"net/url"
@@ -14,7 +15,7 @@ import (
1415
type MicrocksClient interface {
1516
GetKeycloakURL() (string, error)
1617
SetOAuthToken(oauthToken string)
17-
CreateTestResult(serviceID string, testEndpoint string, runnerType string) (string, error)
18+
CreateTestResult(serviceID string, testEndpoint string, runnerType string, operationsHeaders string) (string, error)
1819
GetTestResult(testResultID string) (*TestResultSummary, error)
1920
}
2021

@@ -31,6 +32,12 @@ type TestResultSummary struct {
3132
InProgress bool `json:"inProgress"`
3233
}
3334

35+
// HeaderDTO represents an operation header passed for Test
36+
type HeaderDTO struct {
37+
Name string `json:"name"`
38+
Values string `json:"values"`
39+
}
40+
3441
type microcksClient struct {
3542
APIURL *url.URL
3643
OAuthToken string
@@ -100,7 +107,7 @@ func (c *microcksClient) SetOAuthToken(oauthToken string) {
100107
c.OAuthToken = oauthToken
101108
}
102109

103-
func (c *microcksClient) CreateTestResult(serviceID string, testEndpoint string, runnerType string) (string, error) {
110+
func (c *microcksClient) CreateTestResult(serviceID string, testEndpoint string, runnerType string, operationsHeaders string) (string, error) {
104111
// Ensure we have a correct URL.
105112
rel := &url.URL{Path: "tests"}
106113
u := c.APIURL.ResolveReference(rel)
@@ -110,6 +117,10 @@ func (c *microcksClient) CreateTestResult(serviceID string, testEndpoint string,
110117
input += ("\"serviceId\": \"" + serviceID + "\", ")
111118
input += ("\"testEndpoint\": \"" + testEndpoint + "\", ")
112119
input += ("\"runnerType\": \"" + runnerType + "\"")
120+
if len(operationsHeaders) > 0 && ensureValid(operationsHeaders) {
121+
input += (", \"operationsHeaders\": " + operationsHeaders)
122+
}
123+
113124
input += "}"
114125

115126
req, err := http.NewRequest("POST", u.String(), strings.NewReader(input))
@@ -122,7 +133,7 @@ func (c *microcksClient) CreateTestResult(serviceID string, testEndpoint string,
122133
req.Header.Set("Authorization", "Bearer "+c.OAuthToken)
123134

124135
// Dump request if verbose required.
125-
config.DumpRequestIfRequired("Microcks for creating test", req, false)
136+
config.DumpRequestIfRequired("Microcks for creating test", req, true)
126137

127138
resp, err := c.httpClient.Do(req)
128139
if err != nil {
@@ -182,3 +193,14 @@ func (c *microcksClient) GetTestResult(testResultID string) (*TestResultSummary,
182193

183194
return &result, err
184195
}
196+
197+
func ensureValid(operationsHeaders string) bool {
198+
// Unmarshal using a generic interface
199+
var headers = map[string][]HeaderDTO{}
200+
err := json.Unmarshal([]byte(operationsHeaders), &headers)
201+
if err != nil {
202+
fmt.Println("Error parsing JSON in operationsHeaders: ", err)
203+
return false
204+
}
205+
return true
206+
}

0 commit comments

Comments
 (0)