195 lines
4.7 KiB
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)
|
|
}
|