48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package charger
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/evcc-io/evcc/api"
|
|
"github.com/evcc-io/evcc/util/templates"
|
|
"github.com/evcc-io/evcc/util/test"
|
|
)
|
|
|
|
var acceptable = []string{
|
|
api.ErrMissingCredentials.Error(),
|
|
api.ErrMissingToken.Error(),
|
|
"invalid plugin source: ...",
|
|
"missing mqtt broker configuration",
|
|
"mqtt not configured",
|
|
"invalid charger type: nrgkick-bluetooth",
|
|
"NRGKick bluetooth is only supported on linux",
|
|
"invalid pin:",
|
|
"hciconfig provided no response",
|
|
"connect: no route to host",
|
|
"connect: connection refused",
|
|
"connector already registered: 1", // ocpp
|
|
"error connecting: Network Error",
|
|
"i/o timeout",
|
|
"loadpoint 1 is not configured", // openWB
|
|
"recv timeout",
|
|
"(Client.Timeout exceeded while awaiting headers)",
|
|
"can only have either uri or device", // modbus
|
|
"connection already registered with different protocol: localhost:502", // modbus
|
|
"sponsorship required, see https://docs.evcc.io/docs/sponsorship",
|
|
"eebus not configured",
|
|
"context deadline exceeded",
|
|
"timeout", // ocpp
|
|
"must have uri and password", // Wattpilot
|
|
"either identity or uuid are required", // Plugchoice
|
|
}
|
|
|
|
func TestTemplates(t *testing.T) {
|
|
templates.TestClass(t, templates.Charger, func(t *testing.T, values map[string]any) {
|
|
t.Helper()
|
|
if _, err := NewFromConfig(context.TODO(), "template", values); err != nil && !test.Acceptable(err, acceptable) {
|
|
t.Log(values)
|
|
t.Error(err)
|
|
}
|
|
})
|
|
}
|