add tests for member-details

This commit is contained in:
Andre Staltz 2021-04-07 14:58:31 +03:00
parent 4f70c62ab2
commit 60c0b36f04
No known key found for this signature in database
GPG Key ID: 9EDE23EA7E8A4890
3 changed files with 62 additions and 52 deletions

View File

@ -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)

View File

@ -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) {

View File

@ -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>