Пример #1
0
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)
}
Пример #2
0
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)
}
Пример #3
0
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)
}
Пример #4
0
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)
}
Пример #5
0
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)
}
Пример #6
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)
}
Пример #7
0
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)
}
Пример #8
0
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])
	}
}
Пример #9
0
func (s *StoreSuite) TestEmptyAllCredentials(c *C) {
	db, _ := store.Create(":memory:", "pass", 1)
	credentials := db.AllCredentials()
	c.Assert(len(credentials), Equals, 0)
}
Пример #10
0
func (s *StoreSuite) TestClose(c *C) {
	db, _ := store.Create(":memory:", "pass", 1)
	db.Close()
}