diff --git a/blogroll_test.go b/blogroll_test.go new file mode 100644 index 0000000..aa2172a --- /dev/null +++ b/blogroll_test.go @@ -0,0 +1,94 @@ +package main + +import ( + "context" + "net/http/httptest" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func Test_blogroll(t *testing.T) { + + fc := &fakeHttpClient{} + + app := &goBlog{ + httpClient: fc, + cfg: &config{ + Db: &configDb{ + File: filepath.Join(t.TempDir(), "test.db"), + }, + Server: &configServer{}, + DefaultBlog: "en", + Blogs: map[string]*configBlog{ + "en": { + Lang: "en", + Blogroll: &configBlogroll{ + Enabled: true, + Path: "/br", + AuthHeader: "Authheader", + AuthValue: "Authtoken", + Opml: "https://example.com/opml", + Categories: []string{"A", "B"}, + }, + }, + }, + User: &configUser{}, + Cache: &configCache{ + Enable: false, + }, + }, + } + + _ = app.initDatabase(false) + app.initComponents(false) + + fc.setFakeResponse(200, ` + + + Tue, 30 Nov 2021 19:34:38 UTC + + + + + + + + + + + + + + + `) + + // Test getting the blogroll + // Tests sorting and filtering + + outlines, err := app.getBlogrollOutlines("en") + require.NoError(t, err) + require.NotNil(t, outlines) + + if assert.Len(t, outlines, 2) { + assert.Equal(t, "A", outlines[0].Text) + assert.Equal(t, "B", outlines[1].Text) + if assert.Len(t, outlines[0].Outlines, 2) { + assert.Equal(t, "C text", outlines[0].Outlines[0].Text) + assert.Equal(t, "C title", outlines[0].Outlines[0].Title) + } + } + + // Test getting the OPML + + rec := httptest.NewRecorder() + req := httptest.NewRequest("GET", "/br.opml", nil) + req = req.WithContext(context.WithValue(req.Context(), blogKey, "en")) + + app.serveBlogrollExport(rec, req) + + assert.Equal(t, 200, rec.Code) + +} diff --git a/go.mod b/go.mod index 2b077de..1caaae3 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,6 @@ require ( github.com/yuin/goldmark-highlighting v0.0.0-20210516132338-9216f9c5aa01 golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 - golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/text v0.3.7 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b @@ -65,7 +64,10 @@ require ( ) // Override some modules with own forks -replace github.com/yuin/goldmark-highlighting => github.com/jlelse/goldmark-highlighting v0.0.0-20211115195757-39f0fea96680 +replace ( + github.com/hacdias/indieauth => github.com/jlelse/indieauth v1.5.1-0.20211130162540-343ab6d928fa + github.com/yuin/goldmark-highlighting => github.com/jlelse/goldmark-highlighting v0.0.0-20211115195757-39f0fea96680 +) require ( github.com/akutz/memconn v0.1.0 // indirect @@ -119,6 +121,7 @@ require ( go4.org/intern v0.0.0-20211027215823-ae77deb06f29 // indirect go4.org/mem v0.0.0-20201119185036-c04c5a6ff174 // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37 // indirect + golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect golang.org/x/sys v0.0.0-20211110154304-99a53858aa08 // indirect golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 // indirect golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224 // indirect diff --git a/go.sum b/go.sum index 91df073..2bbe980 100644 --- a/go.sum +++ b/go.sum @@ -268,8 +268,6 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hacdias/indieauth v1.5.0 h1:BugufHJs4G3HCHCImTfwziUYhjQ5IssKpGcJ4SFPvfY= -github.com/hacdias/indieauth v1.5.0/go.mod h1:e/YWhcIgtz/WR/ZledToHTE3Xx0VBu18y84rhzLpzWY= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -305,6 +303,8 @@ github.com/jlelse/feeds v1.2.1-0.20210704161900-189f94254ad4 h1:d2oKwfgLl3ef0PyY github.com/jlelse/feeds v1.2.1-0.20210704161900-189f94254ad4/go.mod h1:vt0iOV52/wq97Ql/jp7mUkqyrlEiGQuhHic4bVoHy0c= github.com/jlelse/goldmark-highlighting v0.0.0-20211115195757-39f0fea96680 h1:c8Vs/L9WqCXFY0LTJjgbzaRCadEmJZjMn6qY9XwZZNM= github.com/jlelse/goldmark-highlighting v0.0.0-20211115195757-39f0fea96680/go.mod h1:jxhQhWF6W/ybgbZpMP2/Ui0D7b+x8ubBFipwXJJ1qME= +github.com/jlelse/indieauth v1.5.1-0.20211130162540-343ab6d928fa h1:wZfWF9FAxlXF0yrXIrOQhXnIn7BqcMxw0K81A0r5Ups= +github.com/jlelse/indieauth v1.5.1-0.20211130162540-343ab6d928fa/go.mod h1:3b/smz++Ub9yHiBvHzHbn9uKqdUx7gZbafROtGVqz3c= github.com/joeshaw/gengen v0.0.0-20190604015154-c77d87825f5a/go.mod h1:v2qvRL8Xwk4OlARK6gPlf2JreZXzv0dYp/8+kUJ0y7Q= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= diff --git a/indieAuthServer_test.go b/indieAuthServer_test.go index 8c66783..423b5fc 100644 --- a/indieAuthServer_test.go +++ b/indieAuthServer_test.go @@ -1,7 +1,6 @@ package main import ( - "context" "net/http" "net/http/httptest" "net/url" @@ -14,7 +13,6 @@ import ( "github.com/hacdias/indieauth" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/oauth2" ) func Test_indieAuthServer(t *testing.T) { @@ -147,14 +145,7 @@ func Test_indieAuthServer(t *testing.T) { } else if test == 2 { - o := iac.GetOAuth2(&authinfo.Endpoints) - ctx := context.WithValue(context.Background(), oauth2.HTTPClient, iac.Client) - token, err := o.Exchange( - ctx, - code, - oauth2.SetAuthURLParam("client_id", iac.ClientID), - oauth2.SetAuthURLParam("code_verifier", authinfo.CodeVerifier), - ) + token, _, err := iac.GetToken(authinfo, code) require.NoError(t, err) assert.NotNil(t, token) assert.NotEqual(t, "", token.AccessToken)