| Server IP : 157.230.181.24 / Your IP : 216.73.216.56 Web Server : Apache/2.4.58 (Ubuntu) System : Linux conductive 6.8.0-117-generic #117-Ubuntu SMP PREEMPT_DYNAMIC Tue May 5 19:26:24 UTC 2026 x86_64 User : ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/vhosts/ceagon/open-oscar-server/state/ |
Upload File : |
package state
import (
"context"
"os"
"slices"
"testing"
"github.com/stretchr/testify/assert"
"github.com/mk6i/open-oscar-server/wire"
)
func TestSQLiteUserStore_AllRelationships(t *testing.T) {
// buddyList represents the contents of a client-side or server-side buddy list
type buddyList struct {
// privacyMode is your current privacy mode.
privacyMode wire.FeedbagPDMode
// buddyList is the list of users on the buddy list. only active for wire.FeedbagPDModePermitAll and wire.FeedbagPDModePermitOnList
buddyList []IdentScreenName
// buddyList is the list of users on the permit list. only active when wire.FeedbagPDModePermitSome is set.
permitList []IdentScreenName
// buddyList is the list of users on the deny list. only active when wire.FeedbagPDModeDenySome is set.
denyList []IdentScreenName
// buddyPendingAuth lists buddies (subset of buddyList) whose server-side feedbag buddy row
// is written with TLV FeedbagAttributesPending / authPending.
buddyPendingAuth []IdentScreenName
}
tests := []struct {
name string
me IdentScreenName
clientSideLists map[IdentScreenName]buddyList
serverSideLists map[IdentScreenName]buddyList
tempBuddyList map[IdentScreenName][]IdentScreenName
expect []Relationship
filter []IdentScreenName
}{
{
name: "[me, client-side]: Allow all users to contact me [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow all users to contact me [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow all users to contact me [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Allow only the users below [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Allow only the users below [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{NewIdentScreenName("them")},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block all users [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block all users [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, client-side]: Block the users Below [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, client-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, server-side]: Allow only users on my Buddy List",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitOnList,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, client-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, server-side]: Allow only the users below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitSome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{NewIdentScreenName("me")},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, client-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, server-side]: Block all users",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenyAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, client-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "[me, server-side]: Block the users Below [them, server-side]: Block the users Below",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("them")},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("me")},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: true,
YouBlock: true,
IsOnTheirList: true,
IsOnYourList: true,
},
},
},
{
name: "(with filter) [me, client-side]: Allow all users to contact me [them, client-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{
NewIdentScreenName("them-1"),
NewIdentScreenName("them-2"),
},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them-1"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them-2"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them-3"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{},
filter: []IdentScreenName{
NewIdentScreenName("them-3"),
NewIdentScreenName("them-1"),
},
expect: []Relationship{
{
User: NewIdentScreenName("them-1"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: false,
IsOnYourList: true,
},
{
User: NewIdentScreenName("them-3"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: false,
},
},
},
{
name: "(filtered) [me, server-side]: Allow all users to contact me [them, server-side]: Allow all users to contact me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{
NewIdentScreenName("them-1"),
NewIdentScreenName("them-2"),
},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them-1"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them-2"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them-3"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
filter: []IdentScreenName{
NewIdentScreenName("them-1"),
NewIdentScreenName("them-3"),
},
expect: []Relationship{
{
User: NewIdentScreenName("them-1"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: false,
IsOnYourList: true,
},
{
User: NewIdentScreenName("them-3"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: false,
},
},
},
{
name: "i have a temp buddy, they don't have me",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("friend1"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("friend1")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("friend2"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
tempBuddyList: map[IdentScreenName][]IdentScreenName{
NewIdentScreenName("me"): {
NewIdentScreenName("friend2"),
},
},
expect: []Relationship{
{
User: NewIdentScreenName("friend1"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
{
User: NewIdentScreenName("friend2"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: false,
IsOnYourList: true,
},
},
},
{
name: "someone has me as a temp buddy, I don't have them",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("friend1"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("friend1")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("friend2"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
tempBuddyList: map[IdentScreenName][]IdentScreenName{
NewIdentScreenName("friend2"): {
NewIdentScreenName("me"),
},
},
expect: []Relationship{
{
User: NewIdentScreenName("friend1"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
{
User: NewIdentScreenName("friend2"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: false,
},
},
},
{
name: "I have a temp buddy that I've blocked",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("friend1"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModeDenySome,
buddyList: []IdentScreenName{NewIdentScreenName("friend1")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{NewIdentScreenName("friend2")},
},
NewIdentScreenName("friend2"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
tempBuddyList: map[IdentScreenName][]IdentScreenName{
NewIdentScreenName("me"): {
NewIdentScreenName("friend2"),
},
},
expect: []Relationship{
{
User: NewIdentScreenName("friend1"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: true,
IsOnYourList: true,
},
{
User: NewIdentScreenName("friend2"),
BlocksYou: false,
YouBlock: true,
IsOnTheirList: false,
IsOnYourList: true,
},
},
},
{
name: "feedbag server-side: I have a buddy that I have not yet authorized, don't show on list",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("them")},
buddyPendingAuth: []IdentScreenName{NewIdentScreenName("them")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: false,
IsOnYourList: false,
},
},
},
{
name: "feedbag server-side: A user has me on their list and I have not yet authorized them, don't show on list",
me: NewIdentScreenName("me"),
clientSideLists: map[IdentScreenName]buddyList{},
serverSideLists: map[IdentScreenName]buddyList{
NewIdentScreenName("me"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{},
buddyPendingAuth: []IdentScreenName{},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
NewIdentScreenName("them"): {
privacyMode: wire.FeedbagPDModePermitAll,
buddyList: []IdentScreenName{NewIdentScreenName("me")},
buddyPendingAuth: []IdentScreenName{NewIdentScreenName("me")},
permitList: []IdentScreenName{},
denyList: []IdentScreenName{},
},
},
expect: []Relationship{
{
User: NewIdentScreenName("them"),
BlocksYou: false,
YouBlock: false,
IsOnTheirList: false,
IsOnYourList: false,
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
defer func() {
_ = os.Remove(testFile)
}()
feedbagStore, err := NewSQLiteUserStore(testFile)
assert.NoError(t, err)
for sn, list := range tt.clientSideLists {
assert.NoError(t, feedbagStore.SetPDMode(context.Background(), sn, list.privacyMode))
for _, buddy := range list.buddyList {
assert.NoError(t, feedbagStore.AddBuddy(context.Background(), sn, buddy))
}
for _, buddy := range list.permitList {
assert.NoError(t, feedbagStore.PermitBuddy(context.Background(), sn, buddy))
}
for _, buddy := range list.denyList {
assert.NoError(t, feedbagStore.DenyBuddy(context.Background(), sn, buddy))
}
}
for sn, list := range tt.serverSideLists {
assert.NoError(t, feedbagStore.UseFeedbag(context.Background(), sn))
itemID := uint16(1)
items := []wire.FeedbagItem{
pdInfoItem(itemID, list.privacyMode),
}
itemID++
for _, buddy := range list.buddyList {
items = append(items, newFeedbagItem(
wire.FeedbagClassIdBuddy,
itemID,
buddy.String(),
slices.Contains(list.buddyPendingAuth, buddy),
))
itemID++
}
for _, buddy := range list.permitList {
items = append(items, newFeedbagItem(wire.FeedbagClassIDPermit, itemID, buddy.String(), false))
itemID++
}
for _, buddy := range list.denyList {
items = append(items, newFeedbagItem(wire.FeedbagClassIDDeny, itemID, buddy.String(), false))
itemID++
}
assert.NoError(t, feedbagStore.FeedbagUpsert(context.Background(), sn, items))
}
for sn, list := range tt.tempBuddyList {
for _, buddy := range list {
assert.NoError(t, feedbagStore.AddBuddy(context.Background(), sn, buddy))
}
}
have, err := feedbagStore.AllRelationships(context.Background(), tt.me, tt.filter)
assert.NoError(t, err)
assert.ElementsMatch(t, tt.expect, have)
})
}
}