OSDN Git Service

new repo
[bytom/vapor.git] / net / http / authn / authn_test.go
1 package authn
2
3 import (
4         "net/http"
5         "os"
6         "strings"
7         "testing"
8
9         dbm "github.com/tendermint/tmlibs/db"
10
11         "github.com/vapor/accesstoken"
12         "github.com/vapor/errors"
13 )
14
15 func TestAuthenticate(t *testing.T) {
16         tokenDB := dbm.NewDB("testdb", "leveldb", "temp")
17         defer os.RemoveAll("temp")
18         tokenStore := accesstoken.NewStore(tokenDB)
19         token, err := tokenStore.Create("alice", "test")
20         if err != nil {
21                 t.Errorf("create token error")
22         }
23
24         cases := []struct {
25                 id, tok string
26                 want    error
27         }{
28                 {"alice", token.Token, nil},
29                 {"alice", "alice:abcsdsdfassdfsefsfsfesfesfefsefa", ErrInvalidToken},
30         }
31
32         api := NewAPI(tokenStore, false)
33
34         for _, c := range cases {
35                 var username, password string
36                 toks := strings.SplitN(c.tok, ":", 2)
37                 if len(toks) > 0 {
38                         username = toks[0]
39                 }
40                 if len(toks) > 1 {
41                         password = toks[1]
42                 }
43
44                 req, _ := http.NewRequest("GET", "/", nil)
45                 req.SetBasicAuth(username, password)
46
47                 _, err := api.Authenticate(req)
48                 if errors.Root(err) != c.want {
49                         t.Errorf("Authenticate(%s) error = %s want %s", c.id, err, c.want)
50                 }
51         }
52 }