Add depot, attendant, jetfire, optimus, ota services with kustomize overlays
This commit is contained in:
124
services/attendant/handlers/get_filekeys_test.go
Normal file
124
services/attendant/handlers/get_filekeys_test.go
Normal file
@@ -0,0 +1,124 @@
|
||||
package handlers_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/pkg/db/queries/mocks"
|
||||
"github.com/fiskerinc/cloud-services/pkg/testhelper"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/services/attendant/handlers"
|
||||
"github.com/fiskerinc/cloud-services/services/attendant/services"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/redis/tester"
|
||||
)
|
||||
|
||||
func TestGetFileKey(t *testing.T) {
|
||||
testVIN := "JH4KA7680RC01"
|
||||
trexKey := "1:JH4KA7680RC01"
|
||||
hmiKey := "2:JH4KA7680RC01"
|
||||
fileCache1 := "fileid:b7d94be8c94062cf"
|
||||
fileCache2 := "fileid:83165a80c940e8b3"
|
||||
testPayload := `{"file_ids": ["b7d94be8c94062cf","83165a80c940e8b3"]}`
|
||||
testDBQuery := []common.FileKey{
|
||||
{
|
||||
FileID: "b7d94be8c94062cf",
|
||||
Auth: []byte("AuthValue"),
|
||||
Key: []byte("KeyValue"),
|
||||
Nonce: []byte("NonceValue"),
|
||||
},
|
||||
{
|
||||
FileID: "83165a80c940e8b3",
|
||||
Auth: []byte("AuthValue2"),
|
||||
Key: []byte("KeyValue2"),
|
||||
Nonce: []byte("NonceValue2"),
|
||||
},
|
||||
}
|
||||
|
||||
mockRedis := tester.NewRedisMock()
|
||||
services.SetRedisClientPool(tester.NewMockClientPool(mockRedis))
|
||||
mockFileKeys := &mocks.MockFileKeys{}
|
||||
mockDB := &services.DB{}
|
||||
mockDB.SetFileKeys(mockFileKeys)
|
||||
|
||||
tests := []AttendentRouteTestCase{
|
||||
{
|
||||
Name: "[TREX] From DB",
|
||||
RedisTestCase: tester.RedisTestCase{
|
||||
Device: common.TRex,
|
||||
DeviceKey: testVIN,
|
||||
PayloadData: testPayload,
|
||||
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
||||
fileCache1: {
|
||||
Value: `{"file_id":"b7d94be8c94062cf","key":"S2V5VmFsdWU=","auth":"QXV0aFZhbHVl","nonce":"Tm9uY2VWYWx1ZQ=="}`,
|
||||
Expires: 86400,
|
||||
},
|
||||
fileCache2: {
|
||||
Value: `{"file_id":"83165a80c940e8b3","key":"S2V5VmFsdWUy","auth":"QXV0aFZhbHVlMg==","nonce":"Tm9uY2VWYWx1ZTI="}`,
|
||||
Expires: 86400,
|
||||
},
|
||||
},
|
||||
ExpectedMessages: map[string]string{
|
||||
trexKey: `{"handler":"filekeys","data":[{"file_id":"b7d94be8c94062cf","key":"S2V5VmFsdWU=","auth":"QXV0aFZhbHVl","nonce":"Tm9uY2VWYWx1ZQ=="},{"file_id":"83165a80c940e8b3","key":"S2V5VmFsdWUy","auth":"QXV0aFZhbHVlMg==","nonce":"Tm9uY2VWYWx1ZTI="}]}`,
|
||||
},
|
||||
},
|
||||
MockFileKeysSelect: testDBQuery,
|
||||
MockFileKeysError: nil,
|
||||
},
|
||||
{
|
||||
Name: "[HMI] From DB",
|
||||
RedisTestCase: tester.RedisTestCase{
|
||||
Device: common.HMI,
|
||||
DeviceKey: testVIN,
|
||||
PayloadData: testPayload,
|
||||
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
||||
fileCache1: {
|
||||
Value: `{"file_id":"b7d94be8c94062cf","key":"S2V5VmFsdWU=","auth":"QXV0aFZhbHVl","nonce":"Tm9uY2VWYWx1ZQ=="}`,
|
||||
Expires: 86400,
|
||||
},
|
||||
fileCache2: {
|
||||
Value: `{"file_id":"83165a80c940e8b3","key":"S2V5VmFsdWUy","auth":"QXV0aFZhbHVlMg==","nonce":"Tm9uY2VWYWx1ZTI="}`,
|
||||
Expires: 86400,
|
||||
},
|
||||
},
|
||||
ExpectedMessages: map[string]string{
|
||||
hmiKey: `{"handler":"filekeys","data":[{"file_id":"b7d94be8c94062cf","key":"S2V5VmFsdWU=","auth":"QXV0aFZhbHVl","nonce":"Tm9uY2VWYWx1ZQ=="},{"file_id":"83165a80c940e8b3","key":"S2V5VmFsdWUy","auth":"QXV0aFZhbHVlMg==","nonce":"Tm9uY2VWYWx1ZTI="}]}`,
|
||||
},
|
||||
},
|
||||
MockFileKeysSelect: testDBQuery,
|
||||
MockFileKeysError: nil,
|
||||
},
|
||||
}
|
||||
|
||||
schemaTester := testhelper.NewSchemaTestHelper(t, schemaToTRex)
|
||||
for _, test := range tests {
|
||||
t.Run(test.Name, func(t *testing.T) {
|
||||
mockRedis.Reset()
|
||||
test.SetupRedis(mockRedis)
|
||||
mockFileKeys.GetMultiResponse = test.MockFileKeysSelect
|
||||
mockFileKeys.Error = test.MockFileKeysError
|
||||
|
||||
err := handlers.GetFileKeys(mockDB, test.Device, test.DeviceKey, []byte(test.PayloadData))
|
||||
|
||||
test.CheckHandlerError(t, test.Name, err)
|
||||
test.Validate(t, test.Name, mockRedis)
|
||||
|
||||
for _, m := range test.ExpectedMessages {
|
||||
schemaTester.ValidateSchemaObject(test.Name, []byte(m))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkGetFileKey(b *testing.B) {
|
||||
db := services.GetDB()
|
||||
vin := "1F15K3R45N1234567"
|
||||
id := []byte(`{"file_ids": ["b7d94be8c94062cf","83165a80c940e8b3"]}`)
|
||||
|
||||
for n := 0; n < b.N; n++ {
|
||||
err := handlers.GetFileKeys(db, common.TRex, vin, id)
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user