Files
cloud-services/pkg/common/trex_rx_test.go

195 lines
4.7 KiB
Go

package common_test
import (
"testing"
"fiskerinc.com/modules/common"
"fiskerinc.com/modules/common/handlers"
"fiskerinc.com/modules/testhelper"
"fiskerinc.com/modules/utils/elptr"
)
func TestTRexRXMessages(t *testing.T) {
schema := "file://" + testhelper.GetSchemaDirPath() + "/trex/RXMessage.json"
var bhex common.BinaryHex
bhex = []byte("test")
manifest := common.UpdateManifest{
ID: 1234567890,
Name: "Test Update Manifest",
Version: "1.2.3",
Description: "This is a test manifest",
ReleaseNotes: "https://fiskerinc.com",
Fingerprint: "8fe27f7fb079ebe06db5f88586b98797",
Type: "standard",
Country: "US",
PowerTrain: "MD23",
Restraint: "None",
Model: "Ocean",
Trim: "Sport",
Year: 2022,
BodyType: "truck",
ECUs: []*common.UpdateManifestECU{
{
ECU: "adas",
Version: "1.2.3",
CurrentVersion: "1.0.0",
HWVersions: []string{"10000"},
ConfigurationMask: "04d923318b8e1517a9cc8b52af11b051",
Configuration: "04d923318b8e1517a9cc8b52af11b051",
Files: []*common.UpdateManifestFile{
{
FileID: "XXXXXXXXXX",
URL: "https://fiskerinc.com/adas_test.txt",
Checksum: "CHECKSUM",
FileType: common.Calibration,
FileSize: 90,
Signature: "53e976bd61161e4f425186e560f0797767d10fd6f0116e224efc444fa014754cb299e51827468c03c9b06508740ed738b1ec14b9cc753a1875971e335408660e",
WriteRegionID: 100,
WriteRegion: common.MemoryRegion{
Offset: 101,
Length: 102,
},
EraseRegionID: 200,
EraseRegion: &common.MemoryRegion{
Offset: 201,
Length: 202,
},
FileKey: &common.FileKeyResponse{
FileID: "fileid",
Key: "key",
Auth: "auth",
Nonce: "nonce",
Error: "NoError",
},
},
},
Rollback: []*common.UpdateManifestECU{
{
Version: "1.2.3",
ConfigurationMask: "04d923318b8e1517a9cc8b52af11b051",
Configuration: "04d923318b8e1517a9cc8b52af11b051",
Files: []*common.UpdateManifestFile{
{
FileID: "XXXXXXXXXX",
URL: "https://fiskerinc.com/adas_test.txt",
FileType: common.Calibration,
Checksum: "CHECKSUM",
FileSize: 100,
WriteRegionID: 100,
WriteRegion: common.MemoryRegion{
Offset: 101,
Length: 102,
},
},
},
},
},
ECCKeys: &common.ECCKeys{
PrivKey1: &bhex,
PrivKey2: &bhex,
PrivKey3: &bhex,
},
},
},
CarUpdateID: 1,
}
manifest.Scrub(common.TRex)
tests := []testhelper.SchemaTest{
{
Name: "TestTRexCarFileKeys",
Object: common.Message{
Handler: "filekeys",
Data: []common.FileKeyResponse{
{
FileID: "abc123",
Key: "testKey",
Auth: "testAuth",
Nonce: "testNonce",
Error: "noError",
},
},
},
},
{
Name: "TestTRexCarUpdateInstall",
Object: common.Message{
Handler: "update_manifest",
Data: manifest,
},
},
{
Name: "TestTRexConfigResponse",
Object: common.Message{
Handler: "config",
Data: common.TRexConfigResponse{
CANBus: common.CANBus{
Enabled: true,
Filters: []common.CANFilter{
{
CANID: "1234",
Interval: elptr.ElPtr(1000),
},
{
CANID: "5128",
EdgeMask: elptr.ElPtr(common.BinaryHex("")), // it won't serialize if it's empty
},
{
CANID: "5678",
Interval: elptr.ElPtr(2000),
},
{
CANID: "5678",
EdgeMask: elptr.ElPtr(bhex),
},
},
DataLogger: true,
DTCEnabled: elptr.ElPtr(true),
MemBuffSize: 1 * 1024 * 1024,
DiskBuffSize: 10 * 1024 * 1024,
},
LogLevel: common.Debug,
},
},
},
{
Name: "TestTRexConfigEmptyResponse",
Object: common.Message{
Handler: "config",
Data: common.TRexConfigResponse{
CANBus: common.CANBus{
Enabled: false,
Filters: []common.CANFilter{},
DataLogger: false,
DTCEnabled: elptr.ElPtr(false),
MemBuffSize: 0,
DiskBuffSize: 0,
},
LogLevel: common.Info,
},
},
},
{
Name: "TestTRexError",
Object: common.Message{
Handler: "error",
Data: common.MessageString{
Message: "disconnected by duplicate ID",
},
},
},
{
Name: "TestCancelUpdateManifest",
Object: common.Message{
Handler: handlers.UpdateManifestCancel,
Data: common.CarUpdateRequest{
CarUpdateID: 1000,
},
},
},
}
testhelper.NewSchemaTestHelper(t, schema).
RunSchemaTests(tests)
}