fix: isolate in-memory client persistence

This commit is contained in:
2026-07-22 18:50:46 +08:00
parent 3200089fa4
commit 8523b01231
5 changed files with 64 additions and 12 deletions
+34
View File
@@ -602,6 +602,40 @@ func TestNewDeviceDefaults(t *testing.T) {
}
}
func TestNewDeviceMemoryClientDefaultsToNoCache(t *testing.T) {
testServer := newDeviceTestServer(t, loadSpecFixture(t), []string{`{"homelist":[{"id":"10","uid":1}]}`, `{"device_info":[{"did":"a","model":"test.light.v1"}],"has_more":false}`})
client, err := NewClientWithAuthData(testAuthData(), WithHTTPClient(testServer.server.Client()))
if err != nil {
t.Fatal(err)
}
client.baseURL = testServer.server.URL
client.availability = true
client.availabilityValid = true
client.availabilityAt = time.Now()
workingDirectory := t.TempDir()
previousWorkingDirectory, err := os.Getwd()
if err != nil {
t.Fatal(err)
}
if err := os.Chdir(workingDirectory); err != nil {
t.Fatal(err)
}
t.Cleanup(func() {
if err := os.Chdir(previousWorkingDirectory); err != nil {
t.Errorf("restore working directory: %v", err)
}
})
if _, err := NewDevice(context.Background(), client, DeviceSelector{DID: "a"}, WithDeviceDelay(0)); err != nil {
t.Fatal(err)
}
cachePath := filepath.Join(workingDirectory, "test.light.v1.json")
if _, err := os.Stat(cachePath); !errors.Is(err, os.ErrNotExist) {
t.Fatalf("memory client default cache stat error = %v, want not exist", err)
}
}
func TestDeviceGetSetAndAction(t *testing.T) {
testServer := newDeviceTestServer(t, loadSpecFixture(t), []string{
`{"homelist":[{"id":"10","uid":1}]}`, `{"device_info":[{"did":"a","name":"Lamp","model":"test.light.v1"}],"has_more":false}`,