MCPcopy
hub / github.com/benbjohnson/litestream / TestServer_HandleUnregister

Function TestServer_HandleUnregister

server_test.go:418–502  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

416}
417
418func TestServer_HandleUnregister(t *testing.T) {
419 t.Run("MissingPath", func(t *testing.T) {
420 store := litestream.NewStore(nil, litestream.CompactionLevels{{Level: 0}})
421 store.CompactionMonitorEnabled = false
422 require.NoError(t, store.Open(t.Context()))
423 defer store.Close(t.Context())
424
425 server := litestream.NewServer(store)
426 server.SocketPath = testSocketPath(t)
427 require.NoError(t, server.Start())
428 defer server.Close()
429
430 client := newSocketClient(t, server.SocketPath)
431 body := `{}`
432 resp, err := client.Post("http://localhost/unregister", "application/json", io.NopCloser(stringReader(body)))
433 require.NoError(t, err)
434 defer resp.Body.Close()
435
436 require.Equal(t, http.StatusBadRequest, resp.StatusCode)
437
438 var result litestream.ErrorResponse
439 require.NoError(t, json.NewDecoder(resp.Body).Decode(&result))
440 require.Equal(t, "path required", result.Error)
441 })
442
443 t.Run("NotFoundIsIdempotent", func(t *testing.T) {
444 store := litestream.NewStore(nil, litestream.CompactionLevels{{Level: 0}})
445 store.CompactionMonitorEnabled = false
446 require.NoError(t, store.Open(t.Context()))
447 defer store.Close(t.Context())
448
449 server := litestream.NewServer(store)
450 server.SocketPath = testSocketPath(t)
451 require.NoError(t, server.Start())
452 defer server.Close()
453
454 client := newSocketClient(t, server.SocketPath)
455 body := `{"path": "/nonexistent/db"}`
456 resp, err := client.Post("http://localhost/unregister", "application/json", io.NopCloser(stringReader(body)))
457 require.NoError(t, err)
458 defer resp.Body.Close()
459
460 // UnregisterDB is idempotent - returns success even if DB not found.
461 require.Equal(t, http.StatusOK, resp.StatusCode)
462
463 var result litestream.UnregisterDatabaseResponse
464 require.NoError(t, json.NewDecoder(resp.Body).Decode(&result))
465 require.Equal(t, "already_unregistered", result.Status)
466 require.Zero(t, result.TXID)
467 })
468
469 t.Run("Success", func(t *testing.T) {
470 db, sqldb := testingutil.MustOpenDBs(t)
471 defer testingutil.MustCloseDBs(t, db, sqldb)
472 dbPath := db.Path()
473
474 store := litestream.NewStore([]*litestream.DB{db}, litestream.CompactionLevels{{Level: 0}})
475 store.CompactionMonitorEnabled = false

Callers

nothing calls this directly

Calls 15

OpenMethod · 0.95
CloseMethod · 0.95
StartMethod · 0.95
CloseMethod · 0.95
DBsMethod · 0.95
NewStoreFunction · 0.92
NewServerFunction · 0.92
MustOpenDBsFunction · 0.92
MustCloseDBsFunction · 0.92
newSocketClientFunction · 0.85
stringReaderFunction · 0.85
testSocketPathFunction · 0.70

Tested by

no test coverage detected