auth

Paddy 2014-09-07 Parent:607708cd8829 Child:1f7b44b130a0

36:bd274615ce72 Go to Latest

auth/memstore.go

Allow executing tests in parallel. Add t.Parallel() to tests so they can execute in parallel.

History
paddy@28 1 package auth
paddy@28 2
paddy@31 3 import (
paddy@31 4 "sync"
paddy@31 5
paddy@31 6 "secondbit.org/uuid"
paddy@31 7 )
paddy@28 8
paddy@28 9 type Memstore struct {
paddy@28 10 tokens map[string]Token
paddy@28 11 refreshTokenLookup map[string]string
paddy@28 12 profileTokenLookup map[string][]string
paddy@28 13 tokenLock sync.RWMutex
paddy@29 14
paddy@29 15 grants map[string]Grant
paddy@29 16 grantLock sync.RWMutex
paddy@31 17
paddy@31 18 clients map[string]Client
paddy@31 19 profileClientLookup map[string][]uuid.ID
paddy@31 20 clientLock sync.RWMutex
paddy@28 21 }
paddy@28 22
paddy@28 23 func NewMemstore() *Memstore {
paddy@28 24 return &Memstore{
paddy@31 25 tokens: map[string]Token{},
paddy@31 26 refreshTokenLookup: map[string]string{},
paddy@31 27 profileTokenLookup: map[string][]string{},
paddy@31 28 grants: map[string]Grant{},
paddy@31 29 clients: map[string]Client{},
paddy@31 30 profileClientLookup: map[string][]uuid.ID{},
paddy@28 31 }
paddy@28 32 }
paddy@28 33
paddy@28 34 func (m *Memstore) lookupTokenByRefresh(token string) (string, error) {
paddy@28 35 m.tokenLock.RLock()
paddy@28 36 defer m.tokenLock.RUnlock()
paddy@28 37 t, ok := m.refreshTokenLookup[token]
paddy@28 38 if !ok {
paddy@28 39 return "", ErrTokenNotFound
paddy@28 40 }
paddy@28 41 return t, nil
paddy@28 42 }
paddy@28 43
paddy@28 44 func (m *Memstore) lookupTokensByProfileID(id string) ([]string, error) {
paddy@28 45 m.tokenLock.RLock()
paddy@28 46 defer m.tokenLock.RUnlock()
paddy@28 47 return m.profileTokenLookup[id], nil
paddy@28 48 }
paddy@31 49
paddy@33 50 func (m *Memstore) lookupClientsByProfileID(id string) []uuid.ID {
paddy@31 51 m.clientLock.RLock()
paddy@31 52 defer m.clientLock.RUnlock()
paddy@33 53 c, ok := m.profileClientLookup[id]
paddy@33 54 if !ok {
paddy@33 55 return []uuid.ID{}
paddy@33 56 }
paddy@33 57 return c
paddy@31 58 }