diff --git a/vehicle/toyota/api_test.go b/vehicle/toyota/api_test.go new file mode 100644 index 000000000..0ef3e65d4 --- /dev/null +++ b/vehicle/toyota/api_test.go @@ -0,0 +1,46 @@ +//go:build integration + +package toyota + +import ( + "fmt" + "os" + "testing" + + "github.com/evcc-io/evcc/util" + "github.com/stretchr/testify/require" +) + +func TestAPI(t *testing.T) { + // Skip if no credentials provided + user := os.Getenv("TOYOTA_USER") + password := os.Getenv("TOYOTA_PASSWORD") + if user == "" || password == "" { + t.Skip("TOYOTA_USER or TOYOTA_PASSWORD not set") + } + + // Create and login identity + log := util.NewLogger("foo") + identity := NewIdentity(log) + err := identity.Login(user, password) + require.NoError(t, err) + + // Create API client + api := NewAPI(log, identity) + + // Test Vehicles method + vehicles, err := api.Vehicles() + require.NoError(t, err) + fmt.Printf("Vehicles: %+v\n", vehicles) + require.NotEmpty(t, vehicles, "expected at least one vehicle") + + for _, vin := range vehicles { + require.NotEmpty(t, vin, "expected non-empty VIN") + } + + // Test Status method for first vehicle + status, err := api.Status(vehicles[0]) + require.NoError(t, err) + require.NotNil(t, status) + fmt.Printf("Vehicle status: %+v\n", status) +} diff --git a/vehicle/toyota/identity_test.go b/vehicle/toyota/identity_test.go new file mode 100644 index 000000000..187e96e5b --- /dev/null +++ b/vehicle/toyota/identity_test.go @@ -0,0 +1,46 @@ +//go:build integration + +package toyota + +import ( + "os" + "testing" + + "github.com/evcc-io/evcc/util" + "github.com/stretchr/testify/require" +) + +func TestIdentityLogin(t *testing.T) { + // Skip if no credentials provided + user := os.Getenv("TOYOTA_USER") + password := os.Getenv("TOYOTA_PASSWORD") + if user == "" || password == "" { + t.Fatal("TOYOTA_USER or TOYOTA_PASSWORD not set") + } + + util.LogLevel("trace", nil) // Enable trace logging + log := util.NewLogger("test") + identity := NewIdentity(log) + + err := identity.Login(user, password) + require.NoError(t, err) + + // Verify we got a valid token + token, err := identity.Token() + require.NoError(t, err) + require.NotEmpty(t, token.AccessToken) + require.NotEmpty(t, token.RefreshToken) + require.True(t, token.Valid()) + + originalAccessToken := token.AccessToken + + // Test token refresh + newToken, err := identity.RefreshToken(token) + require.NoError(t, err) + require.NotEmpty(t, newToken.AccessToken) + require.NotEmpty(t, newToken.RefreshToken) + require.True(t, newToken.Valid()) + + // Verify we got a new access token + require.NotEqual(t, originalAccessToken, newToken.AccessToken, "Expected new access token after refresh") +}