package main_test import ( "io/ioutil" "testing" "github.com/boltdb/bolt" . "github.com/boltdb/bolt/cmd/bolt" "github.com/stretchr/testify/assert" ) // Ensure that a database can be imported. func TestImport(t *testing.T) { SetTestMode(true) // Write input file. input := tempfile() assert.NoError(t, ioutil.WriteFile(input, []byte(`[{"type":"bucket","key":"d2lkZ2V0cw==","value":[{"key":"YmFy","value":""},{"key":"Zm9v","value":"MDAwMA=="}]},{"type":"bucket","key":"d29vaml0cw==","value":[{"key":"YmF6","value":"WFhYWA=="}]}]`), 0600)) // Import database. path := tempfile() output := run("import", path, "--input", input) assert.Equal(t, ``, output) // Open database and verify contents. db, err := bolt.Open(path, 0600) assert.NoError(t, err) db.View(func(tx *bolt.Tx) error { b := tx.Bucket("widgets") if assert.NotNil(t, b) { assert.Equal(t, []byte("0000"), b.Get([]byte("foo"))) assert.Equal(t, []byte(""), b.Get([]byte("bar"))) } b = tx.Bucket("woojits") if assert.NotNil(t, b) { assert.Equal(t, []byte("XXXX"), b.Get([]byte("baz"))) } return nil }) db.Close() } // Ensure that an error is reported if the database is not found. func TestImport_NotFound(t *testing.T) { SetTestMode(true) output := run("import", "path/to/db", "--input", "no/such/file") assert.Equal(t, "open no/such/file: no such file or directory", output) }