Files
fn-serverless/test/fn-api-tests/calls_test.go
2017-07-21 20:03:43 +03:00

107 lines
2.6 KiB
Go

package tests
import (
"bytes"
"net/url"
"path"
"testing"
"time"
"github.com/funcy/functions_go/client/call"
)
func TestCalls(t *testing.T) {
s := SetupDefaultSuite()
t.Run("list-calls-for-missing-app", func(t *testing.T) {
cfg := &call.GetAppsAppCallsRouteParams{
App: s.AppName,
Route: s.RoutePath,
Context: s.Context,
}
_, err := s.Client.Call.GetAppsAppCallsRoute(cfg)
if err == nil {
t.Fatalf("Must fail with missing app error, but got %s", err)
}
})
CreateApp(t, s.Context, s.Client, s.AppName, map[string]string{})
u := url.URL{
Scheme: "http",
Host: Host(),
}
u.Path = path.Join(u.Path, "r", s.AppName, s.RoutePath)
t.Run("list-calls-for-missing-route", func(t *testing.T) {
cfg := &call.GetAppsAppCallsRouteParams{
App: s.AppName,
Route: s.RoutePath,
Context: s.Context,
}
_, err := s.Client.Call.GetAppsAppCallsRoute(cfg)
if err == nil {
t.Fatalf("Must fail with missing route error, but got %s", err)
}
})
CreateRoute(t, s.Context, s.Client, s.AppName, s.RoutePath, s.Image, s.RouteType,
s.RouteConfig, s.RouteHeaders)
t.Run("get-dummy-call", func(t *testing.T) {
cfg := &call.GetCallsCallParams{
Call: "dummy",
Context: s.Context,
}
cfg.WithTimeout(time.Second * 60)
_, err := s.Client.Call.GetCallsCall(cfg)
if err == nil {
t.Fatal("Must fail because `dummy` call does not exist.")
}
t.Logf("Test `%v` passed.", t.Name())
})
t.Run("get-real-call", func(t *testing.T) {
callID := CallAsync(t, u, &bytes.Buffer{})
time.Sleep(time.Second * 5)
cfg := &call.GetCallsCallParams{
Call: callID,
Context: s.Context,
}
cfg.WithTimeout(time.Second * 60)
_, err := s.Client.Call.GetCallsCall(cfg)
if err != nil {
switch err.(type) {
case *call.GetCallsCallNotFound:
msg := err.(*call.GetCallsCallNotFound).Payload.Error.Message
t.Fatalf("Unexpected error occurred: %v.", msg)
}
}
t.Logf("Test `%v` passed.", t.Name())
})
t.Run("list-calls", func(t *testing.T) {
cfg := &call.GetAppsAppCallsRouteParams{
App: s.AppName,
Route: s.RoutePath,
Context: s.Context,
}
calls, err := s.Client.Call.GetAppsAppCallsRoute(cfg)
if err != nil {
t.Fatalf("Unexpected error: %s", err)
}
if len(calls.Payload.Calls) == 0 {
t.Fatalf("Must fail. There should be at least one call to `%v` route.", s.RoutePath)
}
for _, c := range calls.Payload.Calls {
if c.Path != s.RoutePath {
t.Fatalf("Call path mismatch.\n\tExpected: %v\n\tActual: %v", c.Path, s.RoutePath)
}
}
})
DeleteRoute(t, s.Context, s.Client, s.AppName, s.RoutePath)
DeleteApp(t, s.Context, s.Client, s.AppName)
}