Skip to content

Commit

Permalink
Use url.URL instead of fmt.Sprintf in restResolver client
Browse files Browse the repository at this point in the history
  • Loading branch information
Tim Churchard committed Dec 1, 2021
1 parent 398057a commit 52ba9b8
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 21 deletions.
20 changes: 14 additions & 6 deletions pkg/register/restResolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,12 @@ func (c *RestResolverClient) GetDocument(documentID string) (*RegisterDocument,
return nil, err
}

discoverURL := fmt.Sprintf("%s/1.0/discover/%s", c.url.String(), url.QueryEscape(documentID)) // todo: join path?
response, err := c.client.Get(discoverURL)
discoverURL := url.URL{
Scheme: c.url.Scheme,
Host: c.url.Host,
Path: fmt.Sprintf("/1.0/discover/%s", url.QueryEscape(documentID)),
}
response, err := c.client.Get(discoverURL.String())
if err != nil {
neterr, ok := err.(net.Error)
if ok && neterr.Timeout() {
Expand Down Expand Up @@ -117,8 +121,8 @@ func (c *RestResolverClient) GetDocument(documentID string) (*RegisterDocument,
return nil, &ResolverError{err: errors.New(errMsg), errType: ServerError}
}

// Verify the document using ourselves
claims, err := DecodeDocumentTokenNoVerify(JwtToken(resp["token"].(string))) // TODO: Must verify here !!
// Decode the token without verification (todo: verifcation)
claims, err := DecodeDocumentTokenNoVerify(JwtToken(resp["token"].(string)))
if err != nil {
return nil, err
}
Expand All @@ -132,9 +136,13 @@ func (c *RestResolverClient) RegisterDocument(document *RegisterDocument, privat
return err
}

registerURL := fmt.Sprintf("%s/1.0/register", c.url.String())
registerURL := url.URL{
Scheme: c.url.Scheme,
Host: c.url.Host,
Path: "/1.0/register",
}
rdr := strings.NewReader(string(token))
response, err := c.client.Post(registerURL, "text/plain", rdr) // FIXME content type
response, err := c.client.Post(registerURL.String(), "text/plain", rdr)
if err != nil {
neterr, ok := err.(net.Error)
if ok && neterr.Timeout() {
Expand Down
55 changes: 40 additions & 15 deletions pkg/register/restResolver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ import (
)

var (
// Resolver URL for these tests
resolverURL = url.URL{
Scheme: "http",
Host: "localhost:9034",
}
// 'agent1'
ValidID = "did:iotics:iotYJuJs2V31BHc5HvVRM3Aa5T2BD5Q9v3Rq"
ValidToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJkaWQ6aW90aWNzOmlvdFlKdUpzMlYzMUJIYzVIdlZSTTNBYTVUMkJENVE5djNScSNhZ2VudC0wIiwiYXVkIjoibW9jazovL3Jlc29sdmVyIiwiZG9jIjp7IkBjb250ZXh0IjoiaHR0cHM6Ly93M2lkLm9yZy9kaWQvdjEiLCJpZCI6ImRpZDppb3RpY3M6aW90WUp1SnMyVjMxQkhjNUh2VlJNM0FhNVQyQkQ1UTl2M1JxIiwiaW90aWNzU3BlY1ZlcnNpb24iOiIwLjAuMSIsImlvdGljc0RJRFR5cGUiOiJhZ2VudCIsInVwZGF0ZVRpbWUiOjE2MDI0OTgyOTc5MjcsInByb29mIjoiTUVVQ0lRQ0xFNWZVdWlTVXZvbklEaEUzT1ZIcXY2cVNuK1UxdFY4RFNleHpaMHl4M1FJZ2FyV3pONzFsaTlLU3VBOHhMUWg3NmpkSkJHN1QyRUEwMjJMbnFnR1hxUDA9IiwicHVibGljS2V5IjpbeyJpZCI6IiNhZ2VudC0wIiwidHlwZSI6IlNlY3AyNTZrMVZlcmlmaWNhdGlvbktleTIwMTgiLCJwdWJsaWNLZXlCYXNlNTgiOiJSR2p6TDU4Zmd4dlZxR1Iyam5YRWZCZlMzV3g0ZHZNQnR4NzRRWXBObUN4dHdGeDJtNTZxSlBkeU5Xa1Z3dVBSOGs2WlB2dTI5N1Z6aTlDWVNQdTdpMmdoIiwicmV2b2tlZCI6ZmFsc2V9XSwiYXV0aGVudGljYXRpb24iOltdLCJkZWxlZ2F0ZUNvbnRyb2wiOltdLCJkZWxlZ2F0ZUF1dGhlbnRpY2F0aW9uIjpbXSwibWV0YWRhdGEiOnt9fX0.CHl_30AhfFe-Cfny8axwdmZ_iF4nhFFxUsm0rcMJIQGCrN3X-HcSX60X7x2IDVM4Sbw-JGbgpgZ6QRJJyhxYTA"
Expand Down Expand Up @@ -48,20 +53,24 @@ func Test_Resolver_Successful_Get(t *testing.T) {
reg := prometheus.NewRegistry()
register.RegisterMetrics(reg)

addr, _ := url.Parse("http://localhost:9034")
addr := url.URL{
Scheme: resolverURL.Scheme,
Host: resolverURL.Host,
Path: "/1.0/discover/" + url.QueryEscape(ValidID),
}

// Setup a resolver client
// Note: Passing in http.DefaultClient since by default, e.g. via NewDefaultRestResolverClient, a new http.Client
// instance is used. httpmock however expects to work against the default client, unless using
// httpmock.ActivateNonDefault().
rslv := register.NewRestResolverClientWithCustomClient(addr, http.DefaultClient)
rslv := register.NewRestResolverClientWithCustomClient(&resolverURL, http.DefaultClient)

// Setup a mock resolver
discoverReply := map[string]interface{}{
"token": ValidToken,
}
responder, _ := httpmock.NewJsonResponder(200, discoverReply)
httpmock.RegisterResponder("GET", addr.String()+"/1.0/discover/"+url.QueryEscape(ValidID), responder)
httpmock.RegisterResponder("GET", addr.String(), responder)

// Place the call
_, err := rslv.GetDocument(ValidID)
Expand All @@ -76,17 +85,21 @@ func Test_Resolver_Notfound_Error(t *testing.T) {
reg := prometheus.NewRegistry()
register.RegisterMetrics(reg)

addr, _ := url.Parse("http://localhost:9044")
addr := url.URL{
Scheme: resolverURL.Scheme,
Host: resolverURL.Host,
Path: "/1.0/discover/" + url.QueryEscape(ValidID),
}

// Setup a resolver client
rslv := register.NewRestResolverClientWithCustomClient(addr, http.DefaultClient)
rslv := register.NewRestResolverClientWithCustomClient(&resolverURL, http.DefaultClient)

// Setup a mock resolver
discoverReply := map[string]interface{}{
"error": "Notfound",
}
responder, _ := httpmock.NewJsonResponder(http.StatusNotFound, discoverReply)
httpmock.RegisterResponder("GET", addr.String()+"/1.0/discover/"+url.QueryEscape(ValidID), responder)
httpmock.RegisterResponder("GET", addr.String(), responder)

// Place the call
_, err := rslv.GetDocument(ValidID)
Expand All @@ -110,10 +123,14 @@ func Test_Resolver_Server_Error(t *testing.T) {
reg := prometheus.NewRegistry()
register.RegisterMetrics(reg)

addr, _ := url.Parse("http://localhost:9044")
addr := url.URL{
Scheme: resolverURL.Scheme,
Host: resolverURL.Host,
Path: "/1.0/discover/" + url.QueryEscape(ValidID),
}

// Setup a resolver client
rslv := register.NewRestResolverClientWithCustomClient(addr, http.DefaultClient)
rslv := register.NewRestResolverClientWithCustomClient(&resolverURL, http.DefaultClient)

errCode := http.StatusBadRequest
errMsg := "Something invalid"
Expand All @@ -122,7 +139,7 @@ func Test_Resolver_Server_Error(t *testing.T) {
"error": errMsg,
}
responder, _ := httpmock.NewJsonResponder(errCode, discoverReply)
httpmock.RegisterResponder("GET", addr.String()+"/1.0/discover/"+url.QueryEscape(ValidID), responder)
httpmock.RegisterResponder("GET", addr.String(), responder)

// Place the call
_, err := rslv.GetDocument(ValidID)
Expand All @@ -145,17 +162,21 @@ func Test_Resolver_Successful_Register(t *testing.T) {
reg := prometheus.NewRegistry()
register.RegisterMetrics(reg)

addr, _ := url.Parse("http://localhost:9031")
addr := url.URL{
Scheme: resolverURL.Scheme,
Host: resolverURL.Host,
Path: "/1.0/register",
}

// Setup a resolver client
rslv := register.NewRestResolverClientWithCustomClient(addr, http.DefaultClient)
rslv := register.NewRestResolverClientWithCustomClient(&resolverURL, http.DefaultClient)

// Setup a mock resolver
registerReply := map[string]interface{}{
"message": "ok",
}
responder, _ := httpmock.NewJsonResponder(200, registerReply)
httpmock.RegisterResponder("POST", addr.String()+"/1.0/register", responder)
httpmock.RegisterResponder("POST", addr.String(), responder)

// Place the call
document, issuer, keypair := test.HelperGetRegisterDocument()
Expand All @@ -171,10 +192,14 @@ func Test_Resolver_Failed_Register(t *testing.T) {
reg := prometheus.NewRegistry()
register.RegisterMetrics(reg)

addr, _ := url.Parse("http://localhost:9031")
addr := url.URL{
Scheme: resolverURL.Scheme,
Host: resolverURL.Host,
Path: "/1.0/register",
}

// Setup a resolver client
rslv := register.NewRestResolverClientWithCustomClient(addr, http.DefaultClient)
rslv := register.NewRestResolverClientWithCustomClient(&resolverURL, http.DefaultClient)

errCode := http.StatusInternalServerError
errMsg := "oh dear"
Expand All @@ -183,7 +208,7 @@ func Test_Resolver_Failed_Register(t *testing.T) {
"error": errMsg,
}
responder, _ := httpmock.NewJsonResponder(errCode, registerReply)
httpmock.RegisterResponder("POST", addr.String()+"/1.0/register", responder)
httpmock.RegisterResponder("POST", addr.String(), responder)

// Place the call
document, issuer, keypair := test.HelperGetRegisterDocument()
Expand Down

0 comments on commit 52ba9b8

Please sign in to comment.