Пример #1
0
func TestEncryptDecrypt(t *testing.T) {
	e := vsafe.Entry{
		Title:    "title",
		Desc:     "desc",
		UName:    "foo",
		Password: "******",
		Special:  "baz"}
	key := &vsafe.Key{Id: 1, Value: kdf.Random(32)}
	encrypted := e
	if err := encrypted.Encrypt(key); err != nil {
		t.Fatalf("Got error encrypting: %v", err)
	}
	if encrypted.UName == e.UName || encrypted.Password == e.Password || encrypted.Special == e.Special {
		t.Error("Encrypted is the same as plain text")
	}
	if encrypted.Title != e.Title || encrypted.Desc != e.Desc {
		t.Error("Encrypted fields should be the same as plain text")
	}
	decrypted := encrypted
	if err := decrypted.Decrypt(key); err != nil {
		t.Fatalf("Got error encrypting: %v", err)
	}
	// Owner of entity changes to key Id
	e.Owner = key.Id
	if decrypted != e {
		t.Errorf("Expected %v, got %v", e, decrypted)
	}
	if err := decrypted.Decrypt(&vsafe.Key{Id: 2, Value: kdf.Random(32)}); err != vsafe.ErrKeyMismatch {
		t.Errorf("Expected ErrKeyMismatch, got %v", err)
	}
}
Пример #2
0
func UpdateEntry(t *testing.T, store UpdateEntryStore) {
	var first, second vsafe.Entry
	var firstResult, secondResult vsafe.Entry
	createEntries(t, store, &first, &second)
	first.Owner = 23
	first.Url = url2
	first.Title = "abar"
	first.Desc = "aaa"
	first.UName = "back"
	first.Password = "******"
	first.Special = "new again"
	if err := store.UpdateEntry(nil, &first); err != nil {
		t.Fatalf("Got error updating database: %v", err)
	}
	if err := store.EntryById(nil, first.Id, &firstResult); err != nil {
		t.Fatalf("Got error reading database by id: %v", err)
	}
	if err := store.EntryById(nil, second.Id, &secondResult); err != nil {
		t.Fatalf("Got error reading database by id: %v", err)
	}
	assertEntryEqual(t, &first, &firstResult)
	assertEntryEqual(t, &second, &secondResult)
}