diff --git a/pkg/client/client_test.go b/pkg/client/client_test.go index e44fac9..1efd53c 100644 --- a/pkg/client/client_test.go +++ b/pkg/client/client_test.go @@ -385,6 +385,7 @@ func TestAll(t *testing.T) { test_HistoryUniqueness(t) test_HistoryError(t) test_ReadOnlyMode(t) + test_DumpExport(t) teardownClient() teardown() diff --git a/pkg/client/dump_test.go b/pkg/client/dump_test.go new file mode 100644 index 0000000..95d1c3a --- /dev/null +++ b/pkg/client/dump_test.go @@ -0,0 +1,42 @@ +package client + +import ( + "fmt" + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +func test_DumpExport(t *testing.T) { + url := fmt.Sprintf("postgres://%s@%s:%s/%s?sslmode=disable", serverUser, serverHost, serverPort, serverDatabase) + + savePath := "/tmp/dump.sql.gz" + os.Remove(savePath) + + saveFile, err := os.Create(savePath) + if err != nil { + t.Fatal(err.Error()) + } + + defer func() { + saveFile.Close() + os.Remove(savePath) + }() + + // Test full db dump + dump := Dump{} + err = dump.Export(url, saveFile) + assert.NoError(t, err) + + // Test nonexistent database + invalidUrl := fmt.Sprintf("postgres://%s@%s:%s/%s?sslmode=disable", serverUser, serverHost, serverPort, "foobar") + err = dump.Export(invalidUrl, saveFile) + assert.Contains(t, err.Error(), `database "foobar" does not exist`) + + // Test dump of non existent db + dump = Dump{Table: "foobar"} + err = dump.Export(url, saveFile) + assert.NotNil(t, err) + assert.Contains(t, err.Error(), "pg_dump: no matching tables were found") +}