func (s *StoreSuite) TestCreate(c *C) { db, _ := store.Create(":memory:", "pass", 1) c.Assert(db, NotNil) db, _ = store.Create(":memory:", "pass", 500) c.Assert(db, NotNil) db, _ = store.Create(":memory:", "", 1) c.Assert(db, IsNil) db, _ = store.Create(":memory:", "pass", 0) c.Assert(db, IsNil) }
func (s *StoreSuite) TestAddCredential(c *C) { db, _ := store.Create(":memory:", "pass", 1) credential := &store.Credential{ Login: "******", Password: "******", Realm: "realm", Note: "note", } db.AddCredential(credential) credentials := db.AllCredentials() c.Assert(len(credentials), Equals, 1) assertCredentialsEqual(c, credentials[0], credential) }
func (app *App) runInit(keyStretch int) { fmt.Println("Creating new credential database.") password := readPasswordConfirm("Master password") db, err := store.Create(app.storeFileName, password, keyStretch) if err != nil { printError("Failed to create database: %s\n", err.Error()) return } defer db.Close() printSuccess("Credential database created at %s.\n", app.storeFileName) }
func (s *StoreSuite) TestAddManyCredentials(c *C) { db, _ := store.Create(":memory:", "pass", 1) credential := &store.Credential{ Login: "******", Password: "******", Realm: "realm", Note: "note", } for i := 0; i < 1000; i++ { db.AddCredential(credential) } credentials := db.AllCredentials() c.Assert(len(credentials), Equals, 1000) }
func (s *StoreSuite) TestDeleteCredential(c *C) { db, _ := store.Create(":memory:", "pass", 1) foo := &store.Credential{ Login: "******", Password: "******", Realm: "baz", Note: "quux", } db.AddCredential(foo) foo = db.AllCredentials()[0] db.DeleteCredential(foo) credentials := db.AllCredentials() c.Assert(len(credentials), Equals, 0) }
func (s *StoreSuite) TestFindCredentials(c *C) { db, _ := store.Create(":memory:", "pass", 1) foo := &store.Credential{ Login: "******", Password: "******", Realm: "shared", Note: "quux", } bar := &store.Credential{ Login: "******", Password: "******", Realm: "shared", Note: "wsad", } db.AddCredential(foo) db.AddCredential(bar) found := db.FindCredentials([]string{"foo"}) c.Assert(len(found), Equals, 1) assertCredentialsEqual(c, found[0], foo) found = db.FindCredentials([]string{"bar"}) c.Assert(len(found), Equals, 1) assertCredentialsEqual(c, found[0], bar) found = db.FindCredentials([]string{"shared"}) c.Assert(len(found), Equals, 2) if found[0].Login == foo.Login { assertCredentialsEqual(c, found[0], foo) assertCredentialsEqual(c, found[1], bar) } else { assertCredentialsEqual(c, found[0], bar) assertCredentialsEqual(c, found[1], foo) } found = db.FindCredentials([]string{"bar", "shared"}) c.Assert(len(found), Equals, 1) assertCredentialsEqual(c, found[0], bar) found = db.FindCredentials([]string{"waldo"}) c.Assert(len(found), Equals, 0) found = db.FindCredentials([]string{"wsad"}) c.Assert(len(found), Equals, 1) assertCredentialsEqual(c, found[0], bar) found = db.FindCredentials([]string{"bar", "shared", "wsad"}) c.Assert(len(found), Equals, 1) assertCredentialsEqual(c, found[0], bar) found = db.FindCredentials([]string{"oo", "uu"}) c.Assert(len(found), Equals, 1) assertCredentialsEqual(c, found[0], foo) }
func (s *StoreSuite) TestUpdateCredential(c *C) { db, _ := store.Create(":memory:", "pass", 1) foo := &store.Credential{ Login: "******", Password: "******", Realm: "baz", Note: "quux", } db.AddCredential(foo) updated := db.AllCredentials()[0] updated.Login = "******" db.UpdateCredential(updated) credentials := db.AllCredentials() c.Assert(len(credentials), Equals, 1) new := credentials[0] assertCredentialsEqual(c, new, updated) }
func (s *StoreSuite) TestUpdateMasterPassword(c *C) { fileName := tempFileName() db, _ := store.Create(fileName, "pass", 1) credentials := make(map[string]*store.Credential, 100) for i := 0; i < 100; i++ { login := strconv.Itoa(i) credentials[login] = &store.Credential{ Login: login, Password: "******", Realm: "baz", Note: "quux", } db.AddCredential(credentials[login]) } c.Assert(len(db.AllCredentials()), Equals, len(credentials)) db.UpdateMasterPassword("newpass", 100) db.Close() db, _ = store.Open(fileName, "newpass") newCredentials := db.AllCredentials() c.Assert(len(newCredentials), Equals, len(credentials)) for _, credential := range newCredentials { assertCredentialsEqual(c, credential, credentials[credential.Login]) } }
func (s *StoreSuite) TestEmptyAllCredentials(c *C) { db, _ := store.Create(":memory:", "pass", 1) credentials := db.AllCredentials() c.Assert(len(credentials), Equals, 0) }
func (s *StoreSuite) TestClose(c *C) { db, _ := store.Create(":memory:", "pass", 1) db.Close() }