Skip to content

Commit

Permalink
More test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
jleeh committed Apr 15, 2019
1 parent 61e1973 commit 6ed8459
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 10 deletions.
2 changes: 0 additions & 2 deletions bridge/bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"gopkg.in/guregu/null.v3"
"io/ioutil"
"net/http"
"net/url"
"os"
"time"
)
Expand Down Expand Up @@ -302,7 +301,6 @@ type CallOpts struct {
Query map[string]interface{} `json:"query"`
QueryPassthrough bool `json:"queryPassthrough"`
Body string `json:"body"`
PostForm url.Values `json:"postForm"`
ExpectedCode int `json:"expectedCode"`
}

Expand Down
1 change: 1 addition & 0 deletions json/invalid.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{
9 changes: 1 addition & 8 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,17 +68,10 @@ func NewJSONBridges(uri string) ([]bridge.Bridge, error) {
func (ja *JSON) Run(h *bridge.Helper) (interface{}, error) {
r := make(map[string]interface{})
p := make(map[string]interface{})
f := make(map[string][]string)
for k, v := range ja.bridge.Opts.Query {
p[k] = h.GetParam(fmt.Sprintf("%s", v))
}
ja.bridge.Opts.Query = p
for k, s := range ja.bridge.Opts.PostForm {
for _, v := range s {
f[k] = append(f[k], h.GetParam(v))
}
}
ja.bridge.Opts.PostForm = f
var url string
if len(ja.bridge.URL) == 0 {
url = h.GetParam("url")
Expand All @@ -102,7 +95,7 @@ func (ja *JSON) Opts() *bridge.Opts {
// Handler is the entrypoint for GCP functions
func Handler(w http.ResponseWriter, r *http.Request) {
env := os.Getenv("BRIDGE")
if len(env) != 0 {
if len(env) == 0 {
w.Write([]byte("No bridge set"))
return
} else if b, err := NewJSONBridges(env); err != nil {
Expand Down
97 changes: 97 additions & 0 deletions main_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
package main

import (
"bytes"
"encoding/json"
"github.com/linkpoolio/bridges/bridge"
"github.com/stretchr/testify/assert"
"io/ioutil"
"net/http"
"net/http/httptest"
"os"
"testing"
)

Expand Down Expand Up @@ -55,3 +61,94 @@ func TestNewJSONBridges(t *testing.T) {
})
}
}

func TestNewJSONBridges_Errors(t *testing.T) {
_, err := NewJSONBridges("")
assert.Equal(t, "Empty bridge URI given", err.Error())

_, err = NewJSONBridges("json/invalid.json")
assert.Equal(t, "unexpected end of JSON input", err.Error())

_, err = NewJSONBridges("http://invalidqwerty.com")
assert.Contains(t, err.Error(), "no such host")
}

func TestHandler(t *testing.T) {
p := map[string]interface{}{
"jobRunId": "1234",
}
pb, err := json.Marshal(p)
assert.Nil(t, err)

req, err := http.NewRequest(http.MethodPost, "/", bytes.NewReader(pb))
assert.Nil(t, err)
rr := httptest.NewRecorder()

err = os.Setenv("BRIDGE", "json/cryptocompare.json")
assert.Nil(t, err)
Handler(rr, req)
assert.Equal(t, http.StatusOK, rr.Code)
err = os.Unsetenv("BRIDGE")
assert.Nil(t, err)

body, err := ioutil.ReadAll(rr.Body)
assert.Nil(t, err)
json, err := bridge.Parse(body)
assert.Nil(t, err)

assert.Equal(t, "1234", json.Get("jobRunId").String())

data := json.Get("data").Map()
_, ok := data["USD"]
assert.True(t, ok)
_, ok = data["JPY"]
assert.True(t, ok)
_, ok = data["EUR"]
assert.True(t, ok)
}

func TestHandler_NilBridge(t *testing.T) {
p := map[string]interface{}{
"jobRunId": "1234",
}
pb, err := json.Marshal(p)
assert.Nil(t, err)

req, err := http.NewRequest(http.MethodPost, "/", bytes.NewReader(pb))
assert.Nil(t, err)
rr := httptest.NewRecorder()

err = os.Setenv("BRIDGE", "")
assert.Nil(t, err)
Handler(rr, req)
assert.Equal(t, http.StatusOK, rr.Code)
err = os.Unsetenv("BRIDGE")
assert.Nil(t, err)

body, err := ioutil.ReadAll(rr.Body)
assert.Nil(t, err)
assert.Equal(t, "No bridge set", string(body))
}

func TestHandler_InvalidBridge(t *testing.T) {
p := map[string]interface{}{
"jobRunId": "1234",
}
pb, err := json.Marshal(p)
assert.Nil(t, err)

req, err := http.NewRequest(http.MethodPost, "/", bytes.NewReader(pb))
assert.Nil(t, err)
rr := httptest.NewRecorder()

err = os.Setenv("BRIDGE", "json/invalid.json")
assert.Nil(t, err)
Handler(rr, req)
assert.Equal(t, http.StatusOK, rr.Code)
err = os.Unsetenv("BRIDGE")
assert.Nil(t, err)

body, err := ioutil.ReadAll(rr.Body)
assert.Nil(t, err)
assert.Equal(t, "unexpected end of JSON input", string(body))
}

0 comments on commit 6ed8459

Please sign in to comment.