auth
auth/authd/server.go
Let's test our verifyClient function. C'mon, it'll be fun! Add a function that tests the verifyClient function to our unit test suite. Basically, make sure that all the conceivable types of input have the right logic flow for what a "valid client" is. Also leave a note in client.go that makes it clear that public clients _should not be issued secrets in the first place_, because a public client that is issued a secret and specifies its client ID using the `client_id` POST body format will be told that it is not a valid client. While there are ways around this, the spec clearly states that non-confidential clients are not supposed to be issued secrets, so this seems like a nice way to conform to the spec or break trying.
| paddy@100 | 1 package main |
| paddy@100 | 2 |
| paddy@100 | 3 import ( |
| paddy@100 | 4 "html/template" |
| paddy@100 | 5 "log" |
| paddy@100 | 6 "net/http" |
| paddy@100 | 7 |
| paddy@107 | 8 "code.secondbit.org/auth.hg" |
| paddy@100 | 9 "github.com/gorilla/mux" |
| paddy@100 | 10 ) |
| paddy@100 | 11 |
| paddy@100 | 12 func main() { |
| paddy@100 | 13 store := auth.NewMemstore() |
| paddy@100 | 14 config := auth.Config{ |
| paddy@100 | 15 ClientStore: store, |
| paddy@100 | 16 AuthCodeStore: store, |
| paddy@100 | 17 ProfileStore: store, |
| paddy@100 | 18 TokenStore: store, |
| paddy@100 | 19 SessionStore: store, |
| paddy@100 | 20 Template: template.Must(template.New("base").ParseGlob("./templates/*.gotmpl")), |
| paddy@100 | 21 LoginURI: "/login", |
| paddy@100 | 22 } |
| paddy@106 | 23 err := config.Init() |
| paddy@106 | 24 if err != nil { |
| paddy@106 | 25 log.Fatal(err) |
| paddy@106 | 26 } |
| paddy@100 | 27 context, err := auth.NewContext(config) |
| paddy@100 | 28 if err != nil { |
| paddy@100 | 29 panic(err) |
| paddy@100 | 30 } |
| paddy@100 | 31 |
| paddy@100 | 32 router := mux.NewRouter() |
| paddy@100 | 33 auth.RegisterOAuth2(router, context) |
| paddy@100 | 34 auth.RegisterSessionHandlers(router, context) |
| paddy@106 | 35 auth.RegisterProfileHandlers(router, context) |
| paddy@108 | 36 auth.RegisterClientHandlers(router, context) |
| paddy@100 | 37 http.Handle("/", router) |
| paddy@100 | 38 log.Fatal(http.ListenAndServe(":8080", nil)) |
| paddy@100 | 39 } |