Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
313
pkg/db/queries/updatemanifests_test.go
Normal file
313
pkg/db/queries/updatemanifests_test.go
Normal file
@@ -0,0 +1,313 @@
|
||||
package queries_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/db"
|
||||
"fiskerinc.com/modules/db/queries"
|
||||
"fiskerinc.com/modules/testhelper"
|
||||
)
|
||||
|
||||
func TestUpdatePackagesManifest(t *testing.T) {
|
||||
t.Skip()
|
||||
query := setupUpdateManifest(t)
|
||||
manifestID := insertUpdateManifest(t, query)
|
||||
if manifestID == 0 {
|
||||
t.Error("setup failed")
|
||||
return
|
||||
}
|
||||
selectUpdateManifest(t, query, manifestID)
|
||||
searchUpdateManifest(t, query, manifestID)
|
||||
updateUpdateManifest(t, query, manifestID)
|
||||
archiveUpdateManifest(t, query, []int64{manifestID}, true)
|
||||
deleteUpdateManifest(t, query, manifestID)
|
||||
}
|
||||
|
||||
func setupUpdateManifest(t *testing.T) queries.UpdateManifestsInterface {
|
||||
instance := queries.NewUpdateManifest(nil)
|
||||
conn := instance.GetDBConn()
|
||||
conn.AddQueryHook(db.SQLLogger{})
|
||||
|
||||
client := instance.GetClient()
|
||||
client.InitSchema([]interface{}{
|
||||
(*common.UpdateManifest)(nil),
|
||||
(*common.UpdateManifestECU)(nil),
|
||||
(*common.UpdateManifestFile)(nil),
|
||||
(*common.MemoryRegion)(nil),
|
||||
})
|
||||
|
||||
return instance
|
||||
}
|
||||
|
||||
func insertUpdateManifest(t *testing.T, query queries.UpdateManifestsInterface) int64 {
|
||||
expectedRows := 20
|
||||
manifest := common.UpdateManifest{
|
||||
Name: fmt.Sprintf("NAME %s", time.Now().String()),
|
||||
Version: "VERSION",
|
||||
Description: "DESCRIPTION",
|
||||
ReleaseNotes: "RELEASENOTES",
|
||||
RollbackEnabled: true,
|
||||
Type: "standard",
|
||||
Fingerprint: "10203040",
|
||||
Country: "US",
|
||||
PowerTrain: "MD23",
|
||||
Restraint: "None",
|
||||
Model: "Ocean",
|
||||
Trim: "Sport",
|
||||
Year: 2022,
|
||||
BodyType: "truck",
|
||||
ECUs: []*common.UpdateManifestECU{
|
||||
{
|
||||
ECU: "ECU",
|
||||
Version: "VERSION",
|
||||
HWVersion: "BIGBADVERSION",
|
||||
HWVersions: []string{"HWVERSION"},
|
||||
ConfigurationMask: "CONFIGURATIONMASK",
|
||||
Mode: "D",
|
||||
SelfDownload: true,
|
||||
Files: []*common.UpdateManifestFile{
|
||||
{
|
||||
FileID: "FILEID",
|
||||
URL: "URL",
|
||||
Filename: "FILENAME",
|
||||
FileSize: 5,
|
||||
Checksum: "CHECKSUM",
|
||||
FileType: "bootloader",
|
||||
FileOrder: 9,
|
||||
WriteRegionID: 100,
|
||||
WriteRegion: common.MemoryRegion{
|
||||
Offset: 101,
|
||||
Length: 102,
|
||||
},
|
||||
EraseRegionID: 200,
|
||||
EraseRegion: &common.MemoryRegion{
|
||||
Offset: 201,
|
||||
Length: 202,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
result, err := query.Insert(&manifest)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest insert", nil, err)
|
||||
return 0
|
||||
}
|
||||
|
||||
if result.RowsAffected() != expectedRows {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest insert RowsAffected", expectedRows, result.RowsAffected())
|
||||
}
|
||||
if result.RowsReturned() != expectedRows {
|
||||
// file insert does not return row
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest insert RowsReturned", expectedRows, result.RowsReturned())
|
||||
}
|
||||
|
||||
return manifest.ID
|
||||
}
|
||||
|
||||
func selectUpdateManifest(t *testing.T, query queries.UpdateManifestsInterface, manifestID int64) {
|
||||
manifest := common.UpdateManifest{ID: manifestID}
|
||||
err := query.Load(&manifest)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Load", nil, err)
|
||||
}
|
||||
if manifest.Name == "" {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Load Name", "not empty", manifest.Name)
|
||||
}
|
||||
|
||||
manifestValues := map[string]interface{}{
|
||||
"Version": "VERSION",
|
||||
"Description": "DESCRIPTION",
|
||||
"ReleaseNotes": "RELEASENOTES",
|
||||
"RollbackEnabled": true,
|
||||
"Type": "standard",
|
||||
"Fingerprint": "10203040",
|
||||
}
|
||||
testhelper.PropsTester(t, &manifest, manifestValues)
|
||||
if len(manifest.ECUs) != 1 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Load ECUs", 1, len(manifest.ECUs))
|
||||
} else {
|
||||
ecu := manifest.ECUs[0]
|
||||
ecuValues := map[string]interface{}{
|
||||
"ECU": "ECU",
|
||||
"Version": "VERSION",
|
||||
"HWVersion": "",
|
||||
"HWVersions": []string{"HWVERSION"},
|
||||
"ConfigurationMask": "CONFIGURATIONMASK",
|
||||
"Mode": "D",
|
||||
"SelfDownload": true,
|
||||
}
|
||||
testhelper.PropsTester(t, ecu, ecuValues)
|
||||
|
||||
if len(ecu.Files) != 1 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Load Files", 1, len(ecu.Files))
|
||||
} else {
|
||||
file := ecu.Files[0]
|
||||
fileValues := map[string]interface{}{
|
||||
"FileID": "FILEID",
|
||||
"URL": "URL",
|
||||
"Filename": "FILENAME",
|
||||
"FileSize": uint64(5),
|
||||
"Checksum": "CHECKSUM",
|
||||
"FileType": "bootloader",
|
||||
"FileOrder": 9,
|
||||
}
|
||||
testhelper.PropsTester(t, file, fileValues)
|
||||
}
|
||||
}
|
||||
|
||||
manifests, err := query.Select(&common.UpdateManifest{ID: manifestID}, nil)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Select", nil, err)
|
||||
}
|
||||
if len(manifests) != 1 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Select count", 1, len(manifests))
|
||||
} else {
|
||||
testhelper.PropsTester(t, &manifests[0], manifestValues)
|
||||
}
|
||||
|
||||
count, err := query.Count(common.UpdateManifest{ID: manifestID})
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Count", nil, err)
|
||||
}
|
||||
if count != 1 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Count", 1, count)
|
||||
}
|
||||
}
|
||||
|
||||
func archiveUpdateManifest(t *testing.T, query queries.UpdateManifestsInterface, ids []int64, active bool) {
|
||||
result, err := query.Archive(ids, active)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest archive", nil, err)
|
||||
return
|
||||
}
|
||||
|
||||
if result.RowsAffected() != 1 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest archive RowsAffected", 1, result.RowsAffected())
|
||||
}
|
||||
|
||||
if result.RowsReturned() != 0 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest archive RowsReturned", 0, result.RowsReturned())
|
||||
}
|
||||
}
|
||||
|
||||
func searchUpdateManifest(t *testing.T, query queries.UpdateManifestsInterface, manifestID int64) {
|
||||
manifest := common.UpdateManifest{ID: manifestID}
|
||||
err := query.Load(&manifest)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Search Load", nil, err)
|
||||
}
|
||||
|
||||
search := common.UpdateManifestSearch{
|
||||
Search: manifest.Name,
|
||||
}
|
||||
manifests, err := query.Search(search, nil)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Search", nil, err)
|
||||
}
|
||||
if len(manifests) == 0 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Search len", "gt 0", len(manifests))
|
||||
}
|
||||
|
||||
count, err := query.SearchCount(search)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest SearchCount", nil, err)
|
||||
}
|
||||
if count == 0 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest SearchCount count", "gt 0", count)
|
||||
}
|
||||
}
|
||||
|
||||
func updateUpdateManifest(t *testing.T, query queries.UpdateManifestsInterface, manifestID int64) {
|
||||
manifest := common.UpdateManifest{ID: manifestID}
|
||||
err := query.Load(&manifest)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Update Load", nil, err)
|
||||
}
|
||||
|
||||
manifest.Type = "forced"
|
||||
manifest.Name = "some very nice update"
|
||||
result, err := query.Update(&manifest)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Update", nil, err)
|
||||
return
|
||||
}
|
||||
if result.RowsAffected() != 1 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Update RowsAffected", 1, result.RowsAffected())
|
||||
}
|
||||
if result.RowsReturned() != 0 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Update RowsReturned", 0, result.RowsReturned())
|
||||
}
|
||||
|
||||
manifest = common.UpdateManifest{ID: manifestID}
|
||||
err = query.Load(&manifest)
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest Update Reload", nil, err)
|
||||
}
|
||||
if manifest.Type != "forced" && manifest.Name != "some very nice update" {
|
||||
t.Errorf(
|
||||
testhelper.TestErrorTemplate,
|
||||
"UpdateManifest Update",
|
||||
"forced, some very nice update",
|
||||
fmt.Sprintf("%s, %s", manifest.Type, manifest.Name))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func deleteUpdateManifest(t *testing.T, query queries.UpdateManifestsInterface, manifestID int64) {
|
||||
result, err := query.Delete(&common.UpdateManifest{ID: manifestID})
|
||||
if err != nil {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest delete", nil, err)
|
||||
return
|
||||
}
|
||||
|
||||
// Used to be 15 as the delete wasn't cascaded and the count of rows deletes was the total of all the deletes being ran
|
||||
if result.RowsAffected() != 1 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest delete RowsAffected", 1, result.RowsAffected())
|
||||
}
|
||||
|
||||
if result.RowsReturned() != 0 {
|
||||
t.Errorf(testhelper.TestErrorTemplate, "UpdateManifest delete RowsReturned", 0, result.RowsReturned())
|
||||
}
|
||||
}
|
||||
|
||||
// Testing to see if ECURollbakcs query works successfully on the database
|
||||
func TestECURollbacks(t *testing.T) {
|
||||
t.Skip()
|
||||
vin := "VCF1ZBU28PG003392"
|
||||
instance := queries.NewUpdateManifest(nil)
|
||||
|
||||
man := common.UpdateManifestECU{
|
||||
ECU: "ICC",
|
||||
}
|
||||
res, err := instance.ECURollback(&man, vin)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if len(res) != 1{
|
||||
t.Logf("Rollback length wrong: expected 1 got %d", len(res))
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestManifestSearch(t *testing.T){
|
||||
t.Skip()
|
||||
filter := common.UpdateManifestSearch{}
|
||||
filter.ManifestType = common.AftersalesUpdateType
|
||||
|
||||
paging := queries.PageQueryOptions{
|
||||
Order: "id DESC",
|
||||
Limit: 5,
|
||||
Offset: 0,
|
||||
}
|
||||
|
||||
query := setupUpdateManifest(t)
|
||||
_, err := query.Search(filter, &paging)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user