Add depot, attendant, jetfire, optimus, ota services with kustomize overlays

This commit is contained in:
Chris Rai
2026-01-31 15:35:07 -05:00
parent a0ec642ca1
commit 9a5cb2f547
404 changed files with 38817 additions and 16 deletions

View File

@@ -0,0 +1,103 @@
package handlers_test
import (
"context"
"net/http"
"reflect"
"testing"
"time"
"otaupdate/handlers"
"otaupdate/services"
"github.com/fiskerinc/cloud-services/pkg/common"
th "github.com/fiskerinc/cloud-services/pkg/testhelper"
"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
"github.com/pkg/errors"
)
type CHMockConn struct {
query string
args []interface{}
ret interface{}
}
func (c *CHMockConn) Select(ctx context.Context, dest interface{}, query string, args ...interface{}) error {
if query != c.query {
return errors.Errorf("queries are not equal: %s != %s", query, c.query)
}
if len(args) != len(c.args) {
return errors.Errorf("args are not of the same length, %d != %d", len(args), len(c.args))
}
for i := 0; i < len(args); i++ {
if !reflect.DeepEqual(args[i], c.args[i]) {
return errors.Errorf("args[i] != mock.args[i], %v, %v", args[i], c.args[i])
}
}
if reflect.TypeOf(dest) != reflect.TypeOf(c.ret) {
return errors.Errorf("type of dest is not equal to the needed return type, %v, %v", dest, c.ret)
}
valOfPtr := c.ret.(*[]common.ClickHouseSignal)
val := reflect.ValueOf(dest)
val.Elem().Set(reflect.ValueOf(*valOfPtr))
return nil
}
func (c *CHMockConn) PrepareBatch(ctx context.Context, query string) (driver.Batch, error) {
return nil, nil
}
func (c *CHMockConn) AsyncInsert(ctx context.Context, query string, wait bool) error {
return nil
}
func (c *CHMockConn) QueryRow(ctx context.Context, query string, args ...interface{}) driver.Row {
return nil
}
func (c *CHMockConn) Query(ctx context.Context, query string, args ...interface{}) (driver.Rows, error) {
return nil, nil
}
func (c *CHMockConn) Exec(ctx context.Context, query string, args ...interface{}) error {
return nil
}
func floatPointer(num float64) *float64 {
return &num
}
func TestHandleVehicleSignals(t *testing.T) {
services.SetClickhouseConn(&CHMockConn{
query: handlers.SqlCHSelectSignals,
args: []interface{}{"2D4FV48T95H646760", time.UnixMilli(0), 20},
ret: &[]common.ClickHouseSignal{{
Timestamp: time.Date(2022, 9, 1, 0, 0, 0, 0, time.UTC),
Name: "Signal",
Value: floatPointer(123),
}},
})
tests := []th.BasicHttpTest{
{
Name: "Invalid vin parameter",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/cansignals/TESTVIN123", nil),
ExpectedStatus: http.StatusBadRequest,
ExpectedResponse: `{"message":"vin 'TESTVIN123' invalid","error":"Bad Request"}`,
},
{
Name: "Valid data",
Request: th.MakeTestRequest(http.MethodGet, "http://example.com/cansignals/2D4FV48T95H646760", nil),
ExpectedStatus: http.StatusOK,
ExpectedResponse: `{"data":[{"timestamp":"2022-09-01T00:00:00Z","name":"Signal","value":123}]}`,
},
}
th.RunParamHttpTests(t, tests, handlers.HandleVehiclesSignals, "/cansignals/:vin")
}