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

75 lines
2.5 KiB
Go

package handlers_test
import (
"net/http"
"otaupdate/handlers"
"otaupdate/services"
"testing"
"github.com/fiskerinc/cloud-services/pkg/common"
"github.com/fiskerinc/cloud-services/pkg/db/queries/mocks"
th "github.com/fiskerinc/cloud-services/pkg/testhelper"
"github.com/fiskerinc/cloud-services/pkg/utils/elptr"
)
func TestUpdateManifestUpdate(t *testing.T) {
services.GetDB().SetUpdateManifests(&mocks.MockUpdateManifests{})
tests := []th.BasicHttpTest{
{
Name: "No id",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/manifest", nil),
ExpectedStatus: http.StatusBadRequest,
ExpectedResponse: `{"message":"id required","error":"Bad Request"}`,
},
{
Name: "Zero id",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/manifest?id=0", nil),
ExpectedStatus: http.StatusBadRequest,
ExpectedResponse: `{"message":"id required","error":"Bad Request"}`,
},
{
Name: "Validation error, empty manifest",
Request: th.MakeTestRequest(
http.MethodGet,
"http://example.com/manifest?id=1",
common.UpdateManifestUpdateRequest{}),
ExpectedStatus: http.StatusBadRequest,
ExpectedResponse: `{"message":"Name required. Type required","error":"Bad Request"}`,
},
{
Name: "Success",
Request: th.MakeTestRequest(
http.MethodGet,
"http://example.com/manifest?id=1",
common.UpdateManifestUpdateRequest{
Name: "new_name",
Type: "standard",
Country: "US",
PowerTrain: "None",
Restraint: "MD12",
Model: "Ocean",
Trim: "Sport",
Year: 2022,
BodyType: "trailer",
UpdateDuration: 30,
MaxAttempts: 5,
ReleaseNotes: "https://fiskerinc.com",
}),
ExpectedStatus: http.StatusOK,
ExpectedResponse: `{"id":1,"name":"new_name","release_notes":"https://fiskerinc.com","rollback":false,"type":"standard","country":"US","powertrain":"None","restraint":"MD12","model":"Ocean","trim":"Sport","year":2022,"body_type":"trailer","update_duration":30,"max_attempts":5}`,
},
{
Name: "Active",
Request: th.MakeTestRequest(
http.MethodGet,
"http://example.com/manifest?id=1",
common.UpdateManifestUpdateRequest{Name: "new_name", Type: "standard", Active: elptr.ElPtr(false)}),
ExpectedStatus: http.StatusOK,
ExpectedResponse: `{"id":1,"name":"new_name","rollback":false,"type":"standard","active":false}`,
},
}
th.RunBasicHttpTests(t, tests, handlers.HandleUpdateManifestUpdate)
}