73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package handlers_test
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/fiskerinc/cloud-services/pkg/httpclient/tester"
|
|
"github.com/fiskerinc/cloud-services/pkg/redis"
|
|
th "github.com/fiskerinc/cloud-services/pkg/testhelper"
|
|
"github.com/pkg/errors"
|
|
"otaupdate/handlers"
|
|
)
|
|
|
|
var someErr = errors.New("some err")
|
|
|
|
func TestHandleDashboardToken(t *testing.T) {
|
|
tests := map[string]struct {
|
|
mockGetAccessToken func(r redis.Client) (string, error)
|
|
mockGetGuestToken func(r redis.Client, accToken string) (string, error)
|
|
http tester.HttpTestCase
|
|
}{
|
|
"success": {
|
|
mockGetAccessToken: successGetAccessToken,
|
|
mockGetGuestToken: successGetGuestToken,
|
|
http: tester.HttpTestCase{
|
|
Request: th.MakeTestRequest(http.MethodGet, "", nil),
|
|
ExpectedStatus: http.StatusOK,
|
|
ExpectedResponse: `{"token":"valid_token"}`,
|
|
},
|
|
},
|
|
"fail_get_access": {
|
|
mockGetAccessToken: failGetAccessToken,
|
|
http: tester.HttpTestCase{
|
|
Request: th.MakeTestRequest(http.MethodGet, "", nil),
|
|
ExpectedStatus: http.StatusServiceUnavailable,
|
|
ExpectedResponse: `{"message":"some err","error":"Service Unavailable"}`,
|
|
},
|
|
},
|
|
"fail_get_guest": {
|
|
mockGetAccessToken: successGetAccessToken,
|
|
mockGetGuestToken: failGetGuestToken,
|
|
http: tester.HttpTestCase{
|
|
Request: th.MakeTestRequest(http.MethodGet, "", nil),
|
|
ExpectedStatus: http.StatusServiceUnavailable,
|
|
ExpectedResponse: `{"message":"some err","error":"Service Unavailable"}`,
|
|
},
|
|
},
|
|
}
|
|
for name, tt := range tests {
|
|
t.Run(name, func(t *testing.T) {
|
|
handlers.SetGetAccessTokenFunc(tt.mockGetAccessToken)
|
|
handlers.SetGetGuestTokenFunc(tt.mockGetGuestToken)
|
|
w := tt.http.Test(handlers.HandleDashboardToken)
|
|
|
|
tt.http.ValidateHttp(t, name, w)
|
|
})
|
|
}
|
|
}
|
|
|
|
func successGetAccessToken(r redis.Client) (string, error) {
|
|
return "", nil
|
|
}
|
|
func failGetAccessToken(r redis.Client) (string, error) {
|
|
return "", someErr
|
|
}
|
|
|
|
func successGetGuestToken(r redis.Client, accToken string) (string, error) {
|
|
return "valid_token", nil
|
|
}
|
|
func failGetGuestToken(r redis.Client, accToken string) (string, error) {
|
|
return "", someErr
|
|
}
|