func TestManager(t *testing.T) { Convey("Manager test", t, func() { manager := manage.NewDefaultManager() manager.MapClientStorage(store.NewTestClientStore()) Convey("GetClient test", func() { cli, err := manager.GetClient("1") So(err, ShouldBeNil) So(cli.GetSecret(), ShouldEqual, "11") }) Convey("Memory store test", func() { manager.MapTokenStorage(store.NewMemoryTokenStore(0)) testManager(manager) }) }) }
func main() { manager := manage.NewDefaultManager() // token store manager.MapTokenStorage(store.NewMemoryTokenStore(0)) // client store manager.MapClientStorage(store.NewTestClientStore(&models.Client{ ID: "222222", Secret: "22222222", Domain: "http://localhost:9094", })) srv := server.NewServer(server.NewConfig(), manager) srv.SetUserAuthorizationHandler(userAuthorizeHandler) srv.SetInternalErrorHandler(func(r *http.Request, err error) { fmt.Println("OAuth2 Error:", r.RequestURI, err.Error()) }) http.HandleFunc("/login", loginHandler) http.HandleFunc("/auth", authHandler) http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) { err := srv.HandleAuthorizeRequest(w, r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) } }) http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { err := srv.HandleTokenRequest(w, r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) } }) log.Println("Server is running at 9096 port.") log.Fatal(http.ListenAndServe(":9096", nil)) }
func init() { manager = manage.NewDefaultManager() manager.MapTokenStorage(store.NewMemoryTokenStore(0)) }
func TestTokenStore(t *testing.T) { Convey("Test memory store", t, func() { store := store.NewMemoryTokenStore(time.Second * 1) Convey("Test access token store", func() { info := &models.Token{ ClientID: "1", UserID: "1_1", RedirectURI: "http://localhost/", Scope: "all", Access: "1_1_1", AccessCreateAt: time.Now(), AccessExpiresIn: time.Second * 5, } err := store.Create(info) So(err, ShouldBeNil) ainfo, err := store.GetByAccess(info.GetAccess()) So(err, ShouldBeNil) So(ainfo.GetUserID(), ShouldEqual, info.GetUserID()) err = store.RemoveByAccess(info.GetAccess()) So(err, ShouldBeNil) ainfo, err = store.GetByAccess(info.GetAccess()) So(err, ShouldBeNil) So(ainfo, ShouldBeNil) }) Convey("Test refresh token store", func() { info := &models.Token{ ClientID: "1", UserID: "1_2", RedirectURI: "http://localhost/", Scope: "all", Access: "1_2_1", AccessCreateAt: time.Now(), AccessExpiresIn: time.Second * 5, Refresh: "1_2_2", RefreshCreateAt: time.Now(), RefreshExpiresIn: time.Second * 15, } err := store.Create(info) So(err, ShouldBeNil) rinfo, err := store.GetByRefresh(info.GetRefresh()) So(err, ShouldBeNil) So(rinfo.GetUserID(), ShouldEqual, info.GetUserID()) err = store.RemoveByRefresh(info.GetRefresh()) So(err, ShouldBeNil) rinfo, err = store.GetByRefresh(info.GetRefresh()) So(err, ShouldBeNil) So(rinfo, ShouldBeNil) }) Convey("Test gc", func() { info := &models.Token{ ClientID: "1", UserID: "1_3", RedirectURI: "http://localhost/", Scope: "all", Access: "1_3_1", AccessCreateAt: time.Now(), AccessExpiresIn: time.Second * 1, } err := store.Create(info) So(err, ShouldBeNil) time.Sleep(time.Second * 1) ainfo, err := store.GetByRefresh(info.GetAccess()) So(err, ShouldBeNil) So(ainfo, ShouldBeNil) }) }) }