auth

Paddy 2014-09-07 Parent:bd274615ce72 Child:690561c6619a

38:1f7b44b130a0 Go to Latest

auth/client_test.go

Update profiles and add tests. Add tests for profile storage. Make Memstore implement the profilestore interface. Get the groundwork of profiles laid.

History
1 package auth
3 import (
4 "testing"
6 "secondbit.org/uuid"
7 )
9 var clientStores = []ClientStore{NewMemstore()}
11 func compareClients(client1, client2 Client) (success bool, field string, val1, val2 interface{}) {
12 if !client1.ID.Equal(client2.ID) {
13 return false, "ID", client1.ID, client2.ID
14 }
15 if client1.Secret != client2.Secret {
16 return false, "secret", client1.Secret, client2.Secret
17 }
18 if client1.RedirectURI != client2.RedirectURI {
19 return false, "redirect URI", client1.RedirectURI, client2.RedirectURI
20 }
21 if !client1.OwnerID.Equal(client2.OwnerID) {
22 return false, "owner ID", client1.OwnerID, client2.OwnerID
23 }
24 if client1.Name != client2.Name {
25 return false, "name", client1.Name, client2.Name
26 }
27 if client1.Logo != client2.Logo {
28 return false, "logo", client1.Logo, client2.Logo
29 }
30 if client1.Website != client2.Website {
31 return false, "website", client1.Website, client2.Website
32 }
33 return true, "", nil, nil
34 }
36 func TestClientStoreSuccess(t *testing.T) {
37 t.Parallel()
38 client := Client{
39 ID: uuid.NewID(),
40 Secret: "secret",
41 RedirectURI: "redirectURI",
42 OwnerID: uuid.NewID(),
43 Name: "name",
44 Logo: "logo",
45 Website: "website",
46 }
47 for _, store := range clientStores {
48 err := store.SaveClient(client)
49 if err != nil {
50 t.Errorf("Error saving client to %T: %s", store, err)
51 }
52 err = store.SaveClient(client)
53 if err != ErrClientAlreadyExists {
54 t.Errorf("Expected ErrClientAlreadyExists, got %v from %T", err, store)
55 }
56 retrieved, err := store.GetClient(client.ID)
57 if err != nil {
58 t.Errorf("Error retrieving client from %T: %s", store, err)
59 }
60 success, field, expectation, result := compareClients(client, retrieved)
61 if !success {
62 t.Errorf("Expected field %s to be %v, but %T returned %v", field, expectation, store, result)
63 }
64 clients, err := store.ListClientsByOwner(client.OwnerID, 25, 0)
65 if err != nil {
66 t.Errorf("Error retrieving clients by owner from %T: %s", store, err)
67 }
68 if len(clients) != 1 {
69 t.Errorf("Expected 1 client in response from %T, got %+v", store, clients)
70 }
71 success, field, expectation, result = compareClients(client, clients[0])
72 if !success {
73 t.Errorf("Expected field %s to be %v, but %T returned %v", field, expectation, store, result)
74 }
75 err = store.DeleteClient(client.ID)
76 if err != nil {
77 t.Errorf("Error deleting client from %T: %s", store, err)
78 }
79 err = store.DeleteClient(client.ID)
80 if err != ErrClientNotFound {
81 t.Errorf("Expected ErrClientNotFound, got %s from %T", err, store)
82 }
83 retrieved, err = store.GetClient(client.ID)
84 if err != ErrClientNotFound {
85 t.Errorf("Expected ErrClientNotFound from %T, got %+v and %s", store, retrieved, err)
86 }
87 clients, err = store.ListClientsByOwner(client.OwnerID, 25, 0)
88 if err != nil {
89 t.Errorf("Error listing clients by owner from %T: %s", store, err)
90 }
91 if len(clients) != 0 {
92 t.Errorf("Expected 0 clients in response from %T, got %+v", store, clients)
93 }
94 }
95 }