web/handlers

This commit is contained in:
Henry 2021-03-19 11:19:01 +01:00
parent 92a6dcfb55
commit 8c48b4a2b8
8 changed files with 28 additions and 27 deletions

View File

@ -19,7 +19,7 @@ import (
type aliasHandler struct {
r *render.Renderer
db roomdb.AliasService
db roomdb.AliasesService
muxrpcHostAndPort string
roomID refs.FeedRef

View File

@ -29,8 +29,8 @@ func Handler(m *mux.Router, r *render.Renderer, a *auth.Handler) http.Handler {
}))
// hook up the auth handler to the router
m.Get(router.AuthFallbackSignIn).HandlerFunc(ah.Authorize)
m.Get(router.AuthFallbackSignOut).HandlerFunc(ah.Logout)
m.Get(router.AuthFallbackSignIn).HandlerFunc(a.Authorize)
m.Get(router.AuthFallbackSignOut).HandlerFunc(a.Logout)
return m
}

View File

@ -7,10 +7,11 @@ import (
"net/url"
"testing"
"github.com/ssb-ngi-pointer/go-ssb-room/web/router"
"github.com/ssb-ngi-pointer/go-ssb-room/web/webassert"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/ssb-ngi-pointer/go-ssb-room/web/router"
"github.com/ssb-ngi-pointer/go-ssb-room/web/webassert"
refs "go.mindeco.de/ssb-refs"
)

View File

@ -44,12 +44,11 @@ var HTMLTemplates = []string{
// Databases is an options stuct for the required databases of the web handlers
type Databases struct {
Aliases roomdb.AliasService
AuthWithSSB roomdb.AuthWithSSBService
Aliases roomdb.AliasesService
AuthFallback roomdb.AuthFallbackService
AllowList roomdb.AllowListService
Invites roomdb.InviteService
Invites roomdb.InvitesService
Notices roomdb.NoticesService
Members roomdb.MembersService
PinnedNotices roomdb.PinnedNoticesService
}
@ -234,7 +233,7 @@ func New(
roomState,
admin.Databases{
Aliases: dbs.Aliases,
AllowList: dbs.AllowList,
Members: dbs.Members,
Invites: dbs.Invites,
Notices: dbs.Notices,
PinnedNotices: dbs.PinnedNotices,
@ -296,7 +295,7 @@ func New(
// apply HTTP middleware
middlewares := []func(http.Handler) http.Handler{
logging.InjectHandler(logger),
user.ContextInjecter(dbs.AuthFallback, a),
user.ContextInjecter(dbs.Members, a),
CSRF,
}

View File

@ -17,8 +17,8 @@ import (
)
type inviteHandler struct {
invites roomdb.InviteService
aliases roomdb.AliasService
invites roomdb.InvitesService
aliases roomdb.AliasesService
muxrpcHostAndPort string
roomPubKey ed25519.PublicKey

View File

@ -119,12 +119,12 @@ func TestNoticesEditButtonVisible(t *testing.T) {
}
// have the database return okay for any user
testUser := &roomdb.User{
ID: 23,
Name: "test admin",
testUser := roomdb.Member{
ID: 23,
Nickname: "test admin",
}
ts.AuthFallbackDB.CheckReturns(testUser.ID, nil)
ts.AuthFallbackDB.GetByIDReturns(testUser, nil)
ts.MembersDB.GetByIDReturns(testUser, nil)
postEndpoint, err := ts.Router.Get(router.AuthFallbackSignIn).URL()
r.Nil(err)
@ -161,9 +161,11 @@ func TestNoticesEditButtonVisible(t *testing.T) {
ts.Client.ClearHeaders()
ts.Client.SetHeaders(sessionHeader)
cnt := ts.MembersDB.GetByIDCallCount()
// now we are logged in, anchor tag should be there
doc, resp = ts.Client.GetHTML(noticeURL.String())
a.Equal(http.StatusOK, resp.Code)
a.Equal(cnt+1, ts.MembersDB.GetByIDCallCount())
a.EqualValues(1, doc.Find(editButtonSelector).Length())
}

View File

@ -34,9 +34,9 @@ type testSession struct {
// mocked dbs
AuthDB *mockdb.FakeAuthWithSSBService
AuthFallbackDB *mockdb.FakeAuthFallbackService
AliasesDB *mockdb.FakeAliasService
AllowListDB *mockdb.FakeAllowListService
InvitesDB *mockdb.FakeInviteService
AliasesDB *mockdb.FakeAliasesService
MembersDB *mockdb.FakeMembersService
InvitesDB *mockdb.FakeInvitesService
PinnedDB *mockdb.FakePinnedNoticesService
NoticeDB *mockdb.FakeNoticesService
@ -63,9 +63,9 @@ func setup(t *testing.T) *testSession {
ts.AuthDB = new(mockdb.FakeAuthWithSSBService)
ts.AuthFallbackDB = new(mockdb.FakeAuthFallbackService)
ts.AliasesDB = new(mockdb.FakeAliasService)
ts.AllowListDB = new(mockdb.FakeAllowListService)
ts.InvitesDB = new(mockdb.FakeInviteService)
ts.AliasesDB = new(mockdb.FakeAliasesService)
ts.MembersDB = new(mockdb.FakeMembersService)
ts.InvitesDB = new(mockdb.FakeInvitesService)
ts.PinnedDB = new(mockdb.FakePinnedNoticesService)
defaultNotice := &roomdb.Notice{
Title: "Default Notice Title",
@ -98,9 +98,8 @@ func setup(t *testing.T) *testSession {
ts.RoomState,
Databases{
Aliases: ts.AliasesDB,
AuthWithSSB: ts.AuthDB,
AuthFallback: ts.AuthFallbackDB,
AllowList: ts.AllowListDB,
Members: ts.MembersDB,
Invites: ts.InvitesDB,
Notices: ts.NoticeDB,
PinnedNotices: ts.PinnedDB,

View File

@ -17,12 +17,12 @@ var roomMemberContextKey roomMemberContextKeyType = "ssb:room:httpcontext:user"
func FromContext(ctx context.Context) *roomdb.Member {
v := ctx.Value(roomMemberContextKey)
m, ok := v.(*roomdb.Member)
m, ok := v.(roomdb.Member)
if !ok {
return nil
}
return m
return &m
}
// ContextInjecter returns middleware for injecting a user id into the request context