75 lines
2.5 KiB
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)
|
|
}
|