(t *testing.T)
| 61 | } |
| 62 | |
| 63 | func TestServer_HandleList(t *testing.T) { |
| 64 | t.Run("EmptyStore", func(t *testing.T) { |
| 65 | store := litestream.NewStore(nil, litestream.CompactionLevels{{Level: 0}}) |
| 66 | store.CompactionMonitorEnabled = false |
| 67 | require.NoError(t, store.Open(t.Context())) |
| 68 | defer store.Close(t.Context()) |
| 69 | |
| 70 | server := litestream.NewServer(store) |
| 71 | server.SocketPath = testSocketPath(t) |
| 72 | require.NoError(t, server.Start()) |
| 73 | defer server.Close() |
| 74 | |
| 75 | client := newSocketClient(t, server.SocketPath) |
| 76 | resp, err := client.Get("http://localhost/list") |
| 77 | require.NoError(t, err) |
| 78 | defer resp.Body.Close() |
| 79 | |
| 80 | require.Equal(t, http.StatusOK, resp.StatusCode) |
| 81 | |
| 82 | var result litestream.ListResponse |
| 83 | require.NoError(t, json.NewDecoder(resp.Body).Decode(&result)) |
| 84 | require.Empty(t, result.Databases) |
| 85 | }) |
| 86 | |
| 87 | t.Run("WithDatabases", func(t *testing.T) { |
| 88 | db1, sqldb1 := testingutil.MustOpenDBs(t) |
| 89 | defer testingutil.MustCloseDBs(t, db1, sqldb1) |
| 90 | |
| 91 | db2, sqldb2 := testingutil.MustOpenDBs(t) |
| 92 | defer testingutil.MustCloseDBs(t, db2, sqldb2) |
| 93 | |
| 94 | store := litestream.NewStore([]*litestream.DB{db1, db2}, litestream.CompactionLevels{{Level: 0}}) |
| 95 | store.CompactionMonitorEnabled = false |
| 96 | require.NoError(t, store.Open(t.Context())) |
| 97 | defer store.Close(t.Context()) |
| 98 | |
| 99 | server := litestream.NewServer(store) |
| 100 | server.SocketPath = testSocketPath(t) |
| 101 | require.NoError(t, server.Start()) |
| 102 | defer server.Close() |
| 103 | |
| 104 | client := newSocketClient(t, server.SocketPath) |
| 105 | resp, err := client.Get("http://localhost/list") |
| 106 | require.NoError(t, err) |
| 107 | defer resp.Body.Close() |
| 108 | |
| 109 | require.Equal(t, http.StatusOK, resp.StatusCode) |
| 110 | |
| 111 | var result litestream.ListResponse |
| 112 | require.NoError(t, json.NewDecoder(resp.Body).Decode(&result)) |
| 113 | require.Len(t, result.Databases, 2) |
| 114 | |
| 115 | // Verify both databases are listed (order may vary). |
| 116 | paths := make(map[string]string) |
| 117 | for _, db := range result.Databases { |
| 118 | paths[db.Path] = db.Status |
| 119 | } |
| 120 | require.Contains(t, paths, db1.Path()) |
nothing calls this directly
no test coverage detected