8 dbm "github.com/vapor/database/leveldb"
9 "github.com/vapor/errors"
12 func TestCreate(t *testing.T) {
13 testDB := dbm.NewDB("testdb", "leveldb", "temp")
14 defer os.RemoveAll("temp")
15 cs := NewStore(testDB)
22 {"b", "network", nil},
23 {"", "client", ErrBadID},
24 {"bad:id", "client", ErrBadID},
25 {"a", "network", ErrDuplicateID}, // this aborts the transaction, so no tests can follow
28 for _, c := range cases {
29 if _, err := cs.Create(c.id, c.typ); errors.Root(err) != c.want {
30 t.Errorf("Create(%s, %s) error = %s want %s", c.id, c.typ, err, c.want)
35 func TestList(t *testing.T) {
36 testDB := dbm.NewDB("testdb", "leveldb", "temp")
37 defer os.RemoveAll("temp")
39 cs := NewStore(testDB)
40 tokenMap := make(map[string]*Token)
41 tokenMap["ab"] = mustCreateToken(t, cs, "ab", "test")
42 tokenMap["bc"] = mustCreateToken(t, cs, "bc", "test")
43 tokenMap["cd"] = mustCreateToken(t, cs, "cd", "test")
47 t.Errorf("List errored: get list error")
50 if len(got) != len(tokenMap) {
51 t.Error("List errored: get invalid length")
54 for _, v := range got {
55 if v.Token != tokenMap[v.ID].Token {
56 t.Errorf("List error: ID: %s, expected token: %s, DB token: %s", v.ID, *tokenMap[v.ID], v.Token)
62 func TestCheck(t *testing.T) {
63 testDB := dbm.NewDB("testdb", "leveldb", "temp")
64 defer os.RemoveAll("temp")
65 cs := NewStore(testDB)
67 token := mustCreateToken(t, cs, "x", "client")
68 tokenParts := strings.Split(token.Token, ":")
70 if err := cs.Check(tokenParts[0], tokenParts[1]); err != nil {
74 if err := cs.Check("x", "badsecret"); err != ErrInvalidToken {
75 t.Fatal("invalid token check passed")
79 func TestDelete(t *testing.T) {
80 testDB := dbm.NewDB("testdb", "leveldb", "temp")
81 defer os.RemoveAll("temp")
82 cs := NewStore(testDB)
85 mustCreateToken(t, cs, id, "client")
92 value := cs.DB.Get([]byte(id))
94 t.Fatal("delete fail")
98 func TestDeleteWithInvalidId(t *testing.T) {
99 testDB := dbm.NewDB("testdb", "leveldb", "temp")
100 defer os.RemoveAll("temp")
101 cs := NewStore(testDB)
103 if err := cs.Delete("@"); errors.Root(err) != ErrBadID {
104 t.Errorf("Deletion with invalid id success, while it should not")
108 func mustCreateToken(t *testing.T, cs *CredentialStore, id, typ string) *Token {
109 token, err := cs.Create(id, typ)