Files
cloud-services/services/ota_update_go/handlers/get_car_version_test.go

51 lines
1.7 KiB
Go

package handlers_test
import (
"net/http"
"otaupdate/handlers"
"otaupdate/services"
"testing"
mo "github.com/fiskerinc/cloud-services/pkg/db/queries/mocks"
th "github.com/fiskerinc/cloud-services/pkg/testhelper"
)
func TestHandleVersionGet(t *testing.T) {
mock := mo.MockCarVersionsLog{
GetCarVersionsResult: map[string]string{
"DBC": "dbc-version",
"TREX": "trex-version",
},
}
services.GetDB().SetCarVersionsLog(&mock)
tests := []th.BasicHttpTest{
{
Name: "Invalid VIN",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/vehicle/1111/version", nil),
ExpectedStatus: http.StatusBadRequest,
ExpectedResponse: `{"message":"VIN '1111' invalid","error":"Bad Request"}`,
},
{
Name: "Invalid timestamp",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/vehicle/11111111111111111/version?timestamp=99-99-99", nil),
ExpectedStatus: http.StatusBadRequest,
ExpectedResponse: `{"message":"Timestamp yyyymmdddate ","error":"Bad Request"}`,
},
{
Name: "Good request no timestamp",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/vehicle/11111111111111111/version", nil),
ExpectedStatus: http.StatusOK,
ExpectedResponse: `{"DBC":"dbc-version","TREX":"trex-version"}`,
},
{
Name: "Good request with timestamp",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/vehicle/11111111111111111/version?timestamp=2023-01-30", nil),
ExpectedStatus: http.StatusOK,
ExpectedResponse: `{"DBC":"dbc-version","TREX":"trex-version"}`,
},
}
th.RunParamHttpTests(t, tests, handlers.HandleVersionsGet, "/vehicle/:vin/version")
}