Compare commits
No commits in common. "b5dca6fa53c6fd059bef775882ad7d4eeb922399" and "fbf14704e734ca812bbb2f1919706009a4188228" have entirely different histories.
b5dca6fa53
...
fbf14704e7
|
@ -8,7 +8,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/julienschmidt/httprouter"
|
"github.com/julienschmidt/httprouter"
|
||||||
)
|
)
|
||||||
|
@ -250,78 +249,6 @@ func postMediaHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Requ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func userMicropubHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Request, httprouter.Params) {
|
|
||||||
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
|
||||||
user, err := getUserFromRepo(repo, ps)
|
|
||||||
if err != nil {
|
|
||||||
println("Error getting user: ", err.Error())
|
|
||||||
notFoundHandler(repo)(w, r)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse request form
|
|
||||||
err = r.ParseForm()
|
|
||||||
if err != nil {
|
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
|
||||||
w.Write([]byte("Bad request"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// verify access token
|
|
||||||
token := r.Header.Get("Authorization")
|
|
||||||
if token == "" {
|
|
||||||
token = r.Form.Get("access_token")
|
|
||||||
} else {
|
|
||||||
token = strings.TrimPrefix(token, "Bearer ")
|
|
||||||
}
|
|
||||||
|
|
||||||
valid, _ := user.ValidateAccessToken(token)
|
|
||||||
if !valid {
|
|
||||||
w.WriteHeader(http.StatusUnauthorized)
|
|
||||||
w.Write([]byte("Unauthorized"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
h := r.Form.Get("h")
|
|
||||||
content := r.Form.Get("content")
|
|
||||||
name := r.Form.Get("name")
|
|
||||||
inReplyTo := r.Form.Get("in-reply-to")
|
|
||||||
|
|
||||||
if h != "entry" {
|
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
|
||||||
w.Write([]byte("Bad request. h must be entry. Got " + h))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if content == "" {
|
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
|
||||||
w.Write([]byte("Bad request. content is required"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// create post
|
|
||||||
post, err := user.CreateNewPostFull(
|
|
||||||
owl.PostMeta{
|
|
||||||
Title: name,
|
|
||||||
Reply: owl.Reply{
|
|
||||||
Url: inReplyTo,
|
|
||||||
},
|
|
||||||
Date: time.Now(),
|
|
||||||
},
|
|
||||||
content,
|
|
||||||
)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
|
||||||
w.Write([]byte("Internal server error"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Add("Location", post.FullUrl())
|
|
||||||
w.WriteHeader(http.StatusCreated)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func userMediaHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Request, httprouter.Params) {
|
func userMediaHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Request, httprouter.Params) {
|
||||||
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
filepath := ps.ByName("filepath")
|
filepath := ps.ByName("filepath")
|
||||||
|
|
|
@ -1,183 +0,0 @@
|
||||||
package web_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"h4kor/owl-blogs"
|
|
||||||
main "h4kor/owl-blogs/cmd/owl/web"
|
|
||||||
"h4kor/owl-blogs/test/assertions"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"net/url"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestMicropubMinimalArticle(t *testing.T) {
|
|
||||||
repo, user := getSingleUserTestRepo()
|
|
||||||
user.ResetPassword("testpassword")
|
|
||||||
|
|
||||||
code, _ := user.GenerateAuthCode(
|
|
||||||
"test", "test", "test", "test", "test",
|
|
||||||
)
|
|
||||||
token, _, _ := user.GenerateAccessToken(owl.AuthCode{
|
|
||||||
Code: code,
|
|
||||||
ClientId: "test",
|
|
||||||
RedirectUri: "test",
|
|
||||||
CodeChallenge: "test",
|
|
||||||
CodeChallengeMethod: "test",
|
|
||||||
Scope: "test",
|
|
||||||
})
|
|
||||||
|
|
||||||
// Create Request and Response
|
|
||||||
form := url.Values{}
|
|
||||||
form.Add("h", "entry")
|
|
||||||
form.Add("name", "Test Article")
|
|
||||||
form.Add("content", "Test Content")
|
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", user.MicropubUrl(), strings.NewReader(form.Encode()))
|
|
||||||
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
|
||||||
req.Header.Add("Content-Length", strconv.Itoa(len(form.Encode())))
|
|
||||||
req.Header.Add("Authorization", "Bearer "+token)
|
|
||||||
assertions.AssertNoError(t, err, "Error creating request")
|
|
||||||
rr := httptest.NewRecorder()
|
|
||||||
router := main.SingleUserRouter(&repo)
|
|
||||||
router.ServeHTTP(rr, req)
|
|
||||||
|
|
||||||
assertions.AssertStatus(t, rr, http.StatusCreated)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMicropubWithoutName(t *testing.T) {
|
|
||||||
repo, user := getSingleUserTestRepo()
|
|
||||||
user.ResetPassword("testpassword")
|
|
||||||
|
|
||||||
code, _ := user.GenerateAuthCode(
|
|
||||||
"test", "test", "test", "test", "test",
|
|
||||||
)
|
|
||||||
token, _, _ := user.GenerateAccessToken(owl.AuthCode{
|
|
||||||
Code: code,
|
|
||||||
ClientId: "test",
|
|
||||||
RedirectUri: "test",
|
|
||||||
CodeChallenge: "test",
|
|
||||||
CodeChallengeMethod: "test",
|
|
||||||
Scope: "test",
|
|
||||||
})
|
|
||||||
|
|
||||||
// Create Request and Response
|
|
||||||
form := url.Values{}
|
|
||||||
form.Add("h", "entry")
|
|
||||||
form.Add("content", "Test Content")
|
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", user.MicropubUrl(), strings.NewReader(form.Encode()))
|
|
||||||
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
|
||||||
req.Header.Add("Content-Length", strconv.Itoa(len(form.Encode())))
|
|
||||||
req.Header.Add("Authorization", "Bearer "+token)
|
|
||||||
assertions.AssertNoError(t, err, "Error creating request")
|
|
||||||
rr := httptest.NewRecorder()
|
|
||||||
router := main.SingleUserRouter(&repo)
|
|
||||||
router.ServeHTTP(rr, req)
|
|
||||||
|
|
||||||
assertions.AssertStatus(t, rr, http.StatusCreated)
|
|
||||||
loc_header := rr.Header().Get("Location")
|
|
||||||
assertions.Assert(t, loc_header != "", "Location header should be set")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMicropubAccessTokenInBody(t *testing.T) {
|
|
||||||
repo, user := getSingleUserTestRepo()
|
|
||||||
user.ResetPassword("testpassword")
|
|
||||||
|
|
||||||
code, _ := user.GenerateAuthCode(
|
|
||||||
"test", "test", "test", "test", "test",
|
|
||||||
)
|
|
||||||
token, _, _ := user.GenerateAccessToken(owl.AuthCode{
|
|
||||||
Code: code,
|
|
||||||
ClientId: "test",
|
|
||||||
RedirectUri: "test",
|
|
||||||
CodeChallenge: "test",
|
|
||||||
CodeChallengeMethod: "test",
|
|
||||||
Scope: "test",
|
|
||||||
})
|
|
||||||
|
|
||||||
// Create Request and Response
|
|
||||||
form := url.Values{}
|
|
||||||
form.Add("h", "entry")
|
|
||||||
form.Add("content", "Test Content")
|
|
||||||
form.Add("access_token", token)
|
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", user.MicropubUrl(), strings.NewReader(form.Encode()))
|
|
||||||
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
|
||||||
req.Header.Add("Content-Length", strconv.Itoa(len(form.Encode())))
|
|
||||||
assertions.AssertNoError(t, err, "Error creating request")
|
|
||||||
rr := httptest.NewRecorder()
|
|
||||||
router := main.SingleUserRouter(&repo)
|
|
||||||
router.ServeHTTP(rr, req)
|
|
||||||
|
|
||||||
assertions.AssertStatus(t, rr, http.StatusCreated)
|
|
||||||
loc_header := rr.Header().Get("Location")
|
|
||||||
assertions.Assert(t, loc_header != "", "Location header should be set")
|
|
||||||
}
|
|
||||||
|
|
||||||
// func TestMicropubAccessTokenInBoth(t *testing.T) {
|
|
||||||
// repo, user := getSingleUserTestRepo()
|
|
||||||
// user.ResetPassword("testpassword")
|
|
||||||
|
|
||||||
// code, _ := user.GenerateAuthCode(
|
|
||||||
// "test", "test", "test", "test", "test",
|
|
||||||
// )
|
|
||||||
// token, _, _ := user.GenerateAccessToken(owl.AuthCode{
|
|
||||||
// Code: code,
|
|
||||||
// ClientId: "test",
|
|
||||||
// RedirectUri: "test",
|
|
||||||
// CodeChallenge: "test",
|
|
||||||
// CodeChallengeMethod: "test",
|
|
||||||
// Scope: "test",
|
|
||||||
// })
|
|
||||||
|
|
||||||
// // Create Request and Response
|
|
||||||
// form := url.Values{}
|
|
||||||
// form.Add("h", "entry")
|
|
||||||
// form.Add("content", "Test Content")
|
|
||||||
// form.Add("access_token", token)
|
|
||||||
|
|
||||||
// req, err := http.NewRequest("POST", user.MicropubUrl(), strings.NewReader(form.Encode()))
|
|
||||||
// req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
|
||||||
// req.Header.Add("Content-Length", strconv.Itoa(len(form.Encode())))
|
|
||||||
// req.Header.Add("Authorization", "Bearer "+token)
|
|
||||||
// assertions.AssertNoError(t, err, "Error creating request")
|
|
||||||
// rr := httptest.NewRecorder()
|
|
||||||
// router := main.SingleUserRouter(&repo)
|
|
||||||
// router.ServeHTTP(rr, req)
|
|
||||||
|
|
||||||
// assertions.AssertStatus(t, rr, http.StatusBadRequest)
|
|
||||||
// }
|
|
||||||
|
|
||||||
func TestMicropubNoAccessToken(t *testing.T) {
|
|
||||||
repo, user := getSingleUserTestRepo()
|
|
||||||
user.ResetPassword("testpassword")
|
|
||||||
|
|
||||||
code, _ := user.GenerateAuthCode(
|
|
||||||
"test", "test", "test", "test", "test",
|
|
||||||
)
|
|
||||||
user.GenerateAccessToken(owl.AuthCode{
|
|
||||||
Code: code,
|
|
||||||
ClientId: "test",
|
|
||||||
RedirectUri: "test",
|
|
||||||
CodeChallenge: "test",
|
|
||||||
CodeChallengeMethod: "test",
|
|
||||||
Scope: "test",
|
|
||||||
})
|
|
||||||
|
|
||||||
// Create Request and Response
|
|
||||||
form := url.Values{}
|
|
||||||
form.Add("h", "entry")
|
|
||||||
form.Add("content", "Test Content")
|
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", user.MicropubUrl(), strings.NewReader(form.Encode()))
|
|
||||||
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
|
||||||
req.Header.Add("Content-Length", strconv.Itoa(len(form.Encode())))
|
|
||||||
assertions.AssertNoError(t, err, "Error creating request")
|
|
||||||
rr := httptest.NewRecorder()
|
|
||||||
router := main.SingleUserRouter(&repo)
|
|
||||||
router.ServeHTTP(rr, req)
|
|
||||||
|
|
||||||
assertions.AssertStatus(t, rr, http.StatusUnauthorized)
|
|
||||||
}
|
|
|
@ -23,7 +23,6 @@ func Router(repo *owl.Repository) http.Handler {
|
||||||
router.GET("/user/:user/posts/:post/", postHandler(repo))
|
router.GET("/user/:user/posts/:post/", postHandler(repo))
|
||||||
router.GET("/user/:user/posts/:post/media/*filepath", postMediaHandler(repo))
|
router.GET("/user/:user/posts/:post/media/*filepath", postMediaHandler(repo))
|
||||||
router.POST("/user/:user/webmention/", userWebmentionHandler(repo))
|
router.POST("/user/:user/webmention/", userWebmentionHandler(repo))
|
||||||
router.POST("/user/:user/micropub/", userMicropubHandler(repo))
|
|
||||||
router.GET("/user/:user/.well-known/oauth-authorization-server", userAuthMetadataHandler(repo))
|
router.GET("/user/:user/.well-known/oauth-authorization-server", userAuthMetadataHandler(repo))
|
||||||
router.NotFound = http.HandlerFunc(notFoundHandler(repo))
|
router.NotFound = http.HandlerFunc(notFoundHandler(repo))
|
||||||
return router
|
return router
|
||||||
|
@ -42,7 +41,6 @@ func SingleUserRouter(repo *owl.Repository) http.Handler {
|
||||||
router.GET("/posts/:post/", postHandler(repo))
|
router.GET("/posts/:post/", postHandler(repo))
|
||||||
router.GET("/posts/:post/media/*filepath", postMediaHandler(repo))
|
router.GET("/posts/:post/media/*filepath", postMediaHandler(repo))
|
||||||
router.POST("/webmention/", userWebmentionHandler(repo))
|
router.POST("/webmention/", userWebmentionHandler(repo))
|
||||||
router.POST("/micropub/", userMicropubHandler(repo))
|
|
||||||
router.GET("/.well-known/oauth-authorization-server", userAuthMetadataHandler(repo))
|
router.GET("/.well-known/oauth-authorization-server", userAuthMetadataHandler(repo))
|
||||||
router.NotFound = http.HandlerFunc(notFoundHandler(repo))
|
router.NotFound = http.HandlerFunc(notFoundHandler(repo))
|
||||||
return router
|
return router
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
<link rel="indieauth-metadata" href="{{ .User.IndieauthMetadataUrl }}">
|
<link rel="indieauth-metadata" href="{{ .User.IndieauthMetadataUrl }}">
|
||||||
<link rel="authorization_endpoint" href="{{ .User.AuthUrl}}">
|
<link rel="authorization_endpoint" href="{{ .User.AuthUrl}}">
|
||||||
<link rel="token_endpoint" href="{{ .User.TokenUrl}}">
|
<link rel="token_endpoint" href="{{ .User.TokenUrl}}">
|
||||||
<link rel="micropub" href="{{ .User.MicropubUrl}}">
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<style>
|
<style>
|
||||||
header {
|
header {
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
{{range .}}
|
{{range .}}
|
||||||
<div class="h-entry">
|
<div class="h-entry">
|
||||||
<hgroup>
|
<hgroup>
|
||||||
<h3><a class="u-url" href="{{.UrlPath}}">
|
<h3><a class="u-url" href="{{.UrlPath}}">{{.Title}}</a></h3>
|
||||||
{{ if .Title }}{{.Title}}{{ else }}Note: {{.Id}}{{ end }}
|
|
||||||
</a></h3>
|
|
||||||
<small>
|
<small>
|
||||||
Published:
|
Published:
|
||||||
<time class="dt-published" datetime="{{.Meta.Date}}">
|
<time class="dt-published" datetime="{{.Meta.Date}}">
|
||||||
|
|
|
@ -86,14 +86,6 @@ func TestCanRenderIndexPage(t *testing.T) {
|
||||||
assertions.AssertContains(t, result, "testpost2")
|
assertions.AssertContains(t, result, "testpost2")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCanRenderIndexPageNoTitle(t *testing.T) {
|
|
||||||
user := getTestUser()
|
|
||||||
post, _ := user.CreateNewPostFull(owl.PostMeta{}, "hi")
|
|
||||||
result, _ := owl.RenderIndexPage(user)
|
|
||||||
assertions.AssertContains(t, result, post.Id())
|
|
||||||
assertions.AssertContains(t, result, "Note: ")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIndexPageContainsHFeedContainer(t *testing.T) {
|
func TestIndexPageContainsHFeedContainer(t *testing.T) {
|
||||||
user := getTestUser()
|
user := getTestUser()
|
||||||
user.CreateNewPost("testpost1", false)
|
user.CreateNewPost("testpost1", false)
|
||||||
|
|
45
user.go
45
user.go
|
@ -88,11 +88,6 @@ func (user User) WebmentionUrl() string {
|
||||||
return url
|
return url
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user User) MicropubUrl() string {
|
|
||||||
url, _ := url.JoinPath(user.FullUrl(), "micropub/")
|
|
||||||
return url
|
|
||||||
}
|
|
||||||
|
|
||||||
func (user User) MediaUrl() string {
|
func (user User) MediaUrl() string {
|
||||||
url, _ := url.JoinPath(user.UrlPath(), "media")
|
url, _ := url.JoinPath(user.UrlPath(), "media")
|
||||||
return url
|
return url
|
||||||
|
@ -208,12 +203,8 @@ func (user User) GetPost(id string) (*Post, error) {
|
||||||
return &post, nil
|
return &post, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user User) CreateNewPostFull(meta PostMeta, content string) (*Post, error) {
|
func (user User) CreateNewPost(title string, draft bool) (*Post, error) {
|
||||||
slugHint := meta.Title
|
folder_name := toDirectoryName(title)
|
||||||
if slugHint == "" {
|
|
||||||
slugHint = "note"
|
|
||||||
}
|
|
||||||
folder_name := toDirectoryName(slugHint)
|
|
||||||
post_dir := path.Join(user.Dir(), "public", folder_name)
|
post_dir := path.Join(user.Dir(), "public", folder_name)
|
||||||
|
|
||||||
// if post already exists, add -n to the end of the name
|
// if post already exists, add -n to the end of the name
|
||||||
|
@ -221,13 +212,19 @@ func (user User) CreateNewPostFull(meta PostMeta, content string) (*Post, error)
|
||||||
for {
|
for {
|
||||||
if dirExists(post_dir) {
|
if dirExists(post_dir) {
|
||||||
i++
|
i++
|
||||||
folder_name = toDirectoryName(fmt.Sprintf("%s-%d", slugHint, i))
|
folder_name = toDirectoryName(fmt.Sprintf("%s-%d", title, i))
|
||||||
post_dir = path.Join(user.Dir(), "public", folder_name)
|
post_dir = path.Join(user.Dir(), "public", folder_name)
|
||||||
} else {
|
} else {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
post := Post{user: &user, id: folder_name, title: slugHint}
|
post := Post{user: &user, id: folder_name, title: title}
|
||||||
|
meta := PostMeta{
|
||||||
|
Title: title,
|
||||||
|
Date: time.Now(),
|
||||||
|
Aliases: []string{},
|
||||||
|
Draft: draft,
|
||||||
|
}
|
||||||
|
|
||||||
initial_content := ""
|
initial_content := ""
|
||||||
initial_content += "---\n"
|
initial_content += "---\n"
|
||||||
|
@ -239,7 +236,7 @@ func (user User) CreateNewPostFull(meta PostMeta, content string) (*Post, error)
|
||||||
initial_content += string(meta_bytes)
|
initial_content += string(meta_bytes)
|
||||||
initial_content += "---\n"
|
initial_content += "---\n"
|
||||||
initial_content += "\n"
|
initial_content += "\n"
|
||||||
initial_content += content
|
initial_content += "Write your post here.\n"
|
||||||
|
|
||||||
// create post file
|
// create post file
|
||||||
os.Mkdir(post_dir, 0755)
|
os.Mkdir(post_dir, 0755)
|
||||||
|
@ -249,16 +246,6 @@ func (user User) CreateNewPostFull(meta PostMeta, content string) (*Post, error)
|
||||||
return &post, nil
|
return &post, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user User) CreateNewPost(title string, draft bool) (*Post, error) {
|
|
||||||
meta := PostMeta{
|
|
||||||
Title: title,
|
|
||||||
Date: time.Now(),
|
|
||||||
Aliases: []string{},
|
|
||||||
Draft: draft,
|
|
||||||
}
|
|
||||||
return user.CreateNewPostFull(meta, title)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (user User) Template() (string, error) {
|
func (user User) Template() (string, error) {
|
||||||
// load base.html
|
// load base.html
|
||||||
path := path.Join(user.Dir(), "meta", "base.html")
|
path := path.Join(user.Dir(), "meta", "base.html")
|
||||||
|
@ -392,13 +379,3 @@ func (user User) GenerateAccessToken(authCode AuthCode) (string, int, error) {
|
||||||
Created: time.Now(),
|
Created: time.Now(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user User) ValidateAccessToken(token string) (bool, AccessToken) {
|
|
||||||
tokens := user.getAccessTokens()
|
|
||||||
for _, t := range tokens {
|
|
||||||
if t.Token == token {
|
|
||||||
return true, t
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false, AccessToken{}
|
|
||||||
}
|
|
||||||
|
|
36
user_test.go
36
user_test.go
|
@ -314,39 +314,3 @@ func TestVerifyPassword(t *testing.T) {
|
||||||
assertions.Assert(t, !user.VerifyPassword("0000000"), "Password should be incorrect")
|
assertions.Assert(t, !user.VerifyPassword("0000000"), "Password should be incorrect")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestValidateAccessTokenWrongToken(t *testing.T) {
|
|
||||||
user := getTestUser()
|
|
||||||
code, _ := user.GenerateAuthCode(
|
|
||||||
"test", "test", "test", "test", "test",
|
|
||||||
)
|
|
||||||
user.GenerateAccessToken(owl.AuthCode{
|
|
||||||
Code: code,
|
|
||||||
ClientId: "test",
|
|
||||||
RedirectUri: "test",
|
|
||||||
CodeChallenge: "test",
|
|
||||||
CodeChallengeMethod: "test",
|
|
||||||
Scope: "test",
|
|
||||||
})
|
|
||||||
valid, _ := user.ValidateAccessToken("test")
|
|
||||||
assertions.Assert(t, !valid, "Token should be invalid")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidateAccessTokenCorrectToken(t *testing.T) {
|
|
||||||
user := getTestUser()
|
|
||||||
code, _ := user.GenerateAuthCode(
|
|
||||||
"test", "test", "test", "test", "test",
|
|
||||||
)
|
|
||||||
token, _, _ := user.GenerateAccessToken(owl.AuthCode{
|
|
||||||
Code: code,
|
|
||||||
ClientId: "test",
|
|
||||||
RedirectUri: "test",
|
|
||||||
CodeChallenge: "test",
|
|
||||||
CodeChallengeMethod: "test",
|
|
||||||
Scope: "test",
|
|
||||||
})
|
|
||||||
valid, aToken := user.ValidateAccessToken(token)
|
|
||||||
assertions.Assert(t, valid, "Token should be valid")
|
|
||||||
assertions.Assert(t, aToken.ClientId == "test", "Token should be valid")
|
|
||||||
assertions.Assert(t, aToken.Token == token, "Token should be valid")
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue