add tests for member-details
This commit is contained in:
parent
4f70c62ab2
commit
60c0b36f04
|
@ -1,7 +1,6 @@
|
|||
package admin
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"testing"
|
||||
|
@ -15,51 +14,6 @@ import (
|
|||
refs "go.mindeco.de/ssb-refs"
|
||||
)
|
||||
|
||||
func TestAliasesOverview(t *testing.T) {
|
||||
ts := newSession(t)
|
||||
a := assert.New(t)
|
||||
|
||||
lst := []roomdb.Alias{
|
||||
{ID: 1, Name: "alice", Feed: refs.FeedRef{ID: bytes.Repeat([]byte{0}, 32), Algo: "fake"}},
|
||||
{ID: 2, Name: "bob", Feed: refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: "test"}},
|
||||
{ID: 3, Name: "cleo", Feed: refs.FeedRef{ID: bytes.Repeat([]byte("acab"), 8), Algo: "true"}},
|
||||
}
|
||||
ts.AliasesDB.ListReturns(lst, nil)
|
||||
|
||||
html, resp := ts.Client.GetHTML("/aliases")
|
||||
a.Equal(http.StatusOK, resp.Code, "wrong HTTP status code")
|
||||
|
||||
webassert.Localized(t, html, []webassert.LocalizedElement{
|
||||
{"#welcome", "AdminAliasesWelcome"},
|
||||
{"title", "AdminAliasesTitle"},
|
||||
{"#aliasCount", "ListCountPlural"},
|
||||
})
|
||||
|
||||
a.EqualValues(html.Find("#theList li").Length(), 3)
|
||||
|
||||
lst = []roomdb.Alias{
|
||||
{ID: 666, Name: "dave", Feed: refs.FeedRef{ID: bytes.Repeat([]byte{1}, 32), Algo: "one"}},
|
||||
}
|
||||
ts.AliasesDB.ListReturns(lst, nil)
|
||||
|
||||
html, resp = ts.Client.GetHTML("/aliases")
|
||||
a.Equal(http.StatusOK, resp.Code, "wrong HTTP status code")
|
||||
|
||||
webassert.Localized(t, html, []webassert.LocalizedElement{
|
||||
{"#welcome", "AdminAliasesWelcome"},
|
||||
{"title", "AdminAliasesTitle"},
|
||||
{"#aliasCount", "ListCountSingular"},
|
||||
})
|
||||
|
||||
elems := html.Find("#theList li")
|
||||
a.EqualValues(elems.Length(), 1)
|
||||
|
||||
// check for link to Revoke confirm link
|
||||
link, yes := elems.ContentsFiltered("a").Attr("href")
|
||||
a.True(yes, "a-tag has href attribute")
|
||||
a.Equal("/admin/aliases/revoke/confirm?id=666", link)
|
||||
}
|
||||
|
||||
func TestAliasesRevokeConfirmation(t *testing.T) {
|
||||
ts := newSession(t)
|
||||
a := assert.New(t)
|
||||
|
|
|
@ -147,10 +147,66 @@ func TestMembers(t *testing.T) {
|
|||
elems := html.Find("#theList li")
|
||||
a.EqualValues(elems.Length(), 1)
|
||||
|
||||
// check for link to remove confirm link
|
||||
// check for link to member details
|
||||
link, yes := elems.ContentsFiltered("a").Attr("href")
|
||||
a.True(yes, "a-tag has href attribute")
|
||||
a.Equal("/admin/members/remove/confirm?id=666", link)
|
||||
a.Equal("/admin/member?id=666", link)
|
||||
}
|
||||
|
||||
func TestMemberDetails(t *testing.T) {
|
||||
ts := newSession(t)
|
||||
a := assert.New(t)
|
||||
|
||||
feedRef := refs.FeedRef{ID: bytes.Repeat([]byte{0}, 32), Algo: "fake"}
|
||||
aliases := []roomdb.Alias{
|
||||
{ID: 11, Name: "robert", Feed: feedRef, Signature: bytes.Repeat([]byte{0}, 4)},
|
||||
{ID: 21, Name: "bob", Feed: feedRef, Signature: bytes.Repeat([]byte{0}, 4)},
|
||||
}
|
||||
|
||||
member := roomdb.Member{
|
||||
ID: 1, Role: roomdb.RoleMember, PubKey: feedRef, Aliases: aliases,
|
||||
}
|
||||
ts.MembersDB.GetByIDReturns(member, nil)
|
||||
|
||||
html, resp := ts.Client.GetHTML("/member?id=1")
|
||||
a.Equal(http.StatusOK, resp.Code, "wrong HTTP status code")
|
||||
|
||||
webassert.Localized(t, html, []webassert.LocalizedElement{
|
||||
{"title", "AdminMemberDetailsTitle"},
|
||||
})
|
||||
|
||||
// check for SSB ID
|
||||
ssbID := html.Find("#ssb-id")
|
||||
a.Equal(feedRef.Ref(), ssbID.Text())
|
||||
|
||||
// check for change-role dropdown
|
||||
roleDropdown := html.Find("#change-role")
|
||||
a.EqualValues(roleDropdown.Length(), 1)
|
||||
|
||||
// check for link to resolve 1st Alias
|
||||
aliasRobertLink, yes := html.Find("#alias-list").Find("a").Eq(0).Attr("href")
|
||||
a.True(yes, "a-tag has href attribute")
|
||||
a.Equal("/alias/robert", aliasRobertLink)
|
||||
|
||||
// check for link to revoke 1st Alias
|
||||
revokeRobertLink, yes := html.Find("#alias-list").Find("a").Eq(1).Attr("href")
|
||||
a.True(yes, "a-tag has href attribute")
|
||||
a.Equal("/admin/aliases/revoke/confirm?id=11", revokeRobertLink)
|
||||
|
||||
// check for link to resolve 1st Alias
|
||||
aliasBobLink, yes := html.Find("#alias-list").Find("a").Eq(2).Attr("href")
|
||||
a.True(yes, "a-tag has href attribute")
|
||||
a.Equal("/alias/bob", aliasBobLink)
|
||||
|
||||
// check for link to revoke 1st Alias
|
||||
revokeBobLink, yes := html.Find("#alias-list").Find("a").Eq(3).Attr("href")
|
||||
a.True(yes, "a-tag has href attribute")
|
||||
a.Equal("/admin/aliases/revoke/confirm?id=21", revokeBobLink)
|
||||
|
||||
// check for link to Remove member link
|
||||
removeLink, yes := html.Find("#remove-member").Attr("href")
|
||||
a.True(yes, "a-tag has href attribute")
|
||||
a.Equal("/admin/members/remove/confirm?id=1", removeLink)
|
||||
}
|
||||
|
||||
func TestMembersRemoveConfirmation(t *testing.T) {
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
>{{i18n "AdminMemberDetailsTitle"}}</h1>
|
||||
|
||||
<label class="mt-2 mb-1 font-bold text-gray-400 text-sm">{{i18n "AdminMemberDetailsSSBID"}}</label>
|
||||
<p class="mb-8 font-mono font-bold tracking-wider truncate text-gray-900">{{.Member.PubKey.Ref}}</p>
|
||||
<p id="ssb-id" class="mb-8 font-mono font-bold tracking-wider truncate text-gray-900">{{.Member.PubKey.Ref}}</p>
|
||||
|
||||
<label class="mt-2 mb-1 font-bold text-gray-400 text-sm">{{i18n "AdminMemberDetailsRole"}}</label>
|
||||
<details class="mb-8 self-start w-40">
|
||||
<details class="mb-8 self-start w-40" id="change-role">
|
||||
<summary class="px-3 py-1 rounded shadow bg-white ring-1 ring-gray-300 hover:bg-gray-100 cursor-pointer">
|
||||
{{range $.AllRoles}}
|
||||
{{if eq . $.Member.Role}}
|
||||
|
@ -21,7 +21,6 @@
|
|||
{{range $.AllRoles}}
|
||||
{{if ne . $.Member.Role}}
|
||||
<form
|
||||
id="change-role"
|
||||
action="{{urlTo "admin:members:change-role" "id" $.Member.ID}}"
|
||||
method="POST"
|
||||
>
|
||||
|
@ -51,7 +50,7 @@
|
|||
|
||||
{{$aliasCount := len .Member.Aliases}} {{if gt $aliasCount 0}}
|
||||
<label class="mt-2 mb-1 font-bold text-gray-400 text-sm">{{i18n "AdminMemberDetailsAliases"}}</label>
|
||||
<div class="grid grid-cols-2 gap-y-2 gap-x-4 self-start">
|
||||
<div id="alias-list" class="grid grid-cols-2 gap-y-2 gap-x-4 self-start">
|
||||
{{range .Member.Aliases}}
|
||||
<div class="flex flex-row items-center justify-start">
|
||||
<a
|
||||
|
@ -70,6 +69,7 @@
|
|||
|
||||
<label class="mt-10 mb-1 font-bold text-gray-400 text-sm">{{i18n "AdminMemberDetailsExclusion"}}</label>
|
||||
<a
|
||||
id="remove-member"
|
||||
href="{{urlTo "admin:members:remove:confirm" "id" .Member.ID}}"
|
||||
class="mb-8 self-start shadow rounded px-3 py-1 text-red-600 ring-1 ring-red-400 bg-white hover:bg-red-600 hover:text-gray-100 focus:outline-none focus:ring-2 focus:ring-red-400 cursor-pointer"
|
||||
>{{i18n "AdminMemberDetailsRemove"}}</a>
|
||||
|
|
Loading…
Reference in New Issue