relationship_test.go 102 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190
  1. package state
  2. import (
  3. "context"
  4. "os"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/mk6i/open-oscar-server/wire"
  8. )
  9. func TestSQLiteUserStore_AllRelationships(t *testing.T) {
  10. // buddyList represents the contents of a client-side or server-side buddy list
  11. type buddyList struct {
  12. // privacyMode is your current privacy mode.
  13. privacyMode wire.FeedbagPDMode
  14. // buddyList is the list of users on the buddy list. only active for wire.FeedbagPDModePermitAll and wire.FeedbagPDModePermitOnList
  15. buddyList []IdentScreenName
  16. // buddyList is the list of users on the permit list. only active when wire.FeedbagPDModePermitSome is set.
  17. permitList []IdentScreenName
  18. // buddyList is the list of users on the deny list. only active when wire.FeedbagPDModeDenySome is set.
  19. denyList []IdentScreenName
  20. }
  21. tests := []struct {
  22. name string
  23. me IdentScreenName
  24. clientSideLists map[IdentScreenName]buddyList
  25. serverSideLists map[IdentScreenName]buddyList
  26. tempBuddyList map[IdentScreenName][]IdentScreenName
  27. expect []Relationship
  28. filter []IdentScreenName
  29. }{
  30. {
  31. name: "[me, client-side]: Allow all users to contact me [them, client-side]: Allow all users to contact me",
  32. me: NewIdentScreenName("me"),
  33. clientSideLists: map[IdentScreenName]buddyList{
  34. NewIdentScreenName("me"): {
  35. privacyMode: wire.FeedbagPDModePermitAll,
  36. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  37. permitList: []IdentScreenName{},
  38. denyList: []IdentScreenName{},
  39. },
  40. NewIdentScreenName("them"): {
  41. privacyMode: wire.FeedbagPDModePermitAll,
  42. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  43. permitList: []IdentScreenName{},
  44. denyList: []IdentScreenName{},
  45. },
  46. },
  47. serverSideLists: map[IdentScreenName]buddyList{},
  48. expect: []Relationship{
  49. {
  50. User: NewIdentScreenName("them"),
  51. BlocksYou: false,
  52. YouBlock: false,
  53. IsOnTheirList: true,
  54. IsOnYourList: true,
  55. },
  56. },
  57. },
  58. {
  59. name: "[me, client-side]: Allow all users to contact me [them, server-side]: Allow all users to contact me",
  60. me: NewIdentScreenName("me"),
  61. clientSideLists: map[IdentScreenName]buddyList{
  62. NewIdentScreenName("me"): {
  63. privacyMode: wire.FeedbagPDModePermitAll,
  64. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  65. permitList: []IdentScreenName{},
  66. denyList: []IdentScreenName{},
  67. },
  68. },
  69. serverSideLists: map[IdentScreenName]buddyList{
  70. NewIdentScreenName("them"): {
  71. privacyMode: wire.FeedbagPDModePermitAll,
  72. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  73. permitList: []IdentScreenName{},
  74. denyList: []IdentScreenName{},
  75. },
  76. },
  77. expect: []Relationship{
  78. {
  79. User: NewIdentScreenName("them"),
  80. BlocksYou: false,
  81. YouBlock: false,
  82. IsOnTheirList: true,
  83. IsOnYourList: true,
  84. },
  85. },
  86. },
  87. {
  88. name: "[me, client-side]: Allow all users to contact me [them, client-side]: Allow only users on my Buddy List",
  89. me: NewIdentScreenName("me"),
  90. clientSideLists: map[IdentScreenName]buddyList{
  91. NewIdentScreenName("me"): {
  92. privacyMode: wire.FeedbagPDModePermitAll,
  93. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  94. permitList: []IdentScreenName{},
  95. denyList: []IdentScreenName{},
  96. },
  97. NewIdentScreenName("them"): {
  98. privacyMode: wire.FeedbagPDModePermitOnList,
  99. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  100. permitList: []IdentScreenName{},
  101. denyList: []IdentScreenName{},
  102. },
  103. },
  104. serverSideLists: map[IdentScreenName]buddyList{},
  105. expect: []Relationship{
  106. {
  107. User: NewIdentScreenName("them"),
  108. BlocksYou: false,
  109. YouBlock: false,
  110. IsOnTheirList: true,
  111. IsOnYourList: true,
  112. },
  113. },
  114. },
  115. {
  116. name: "[me, client-side]: Allow all users to contact me [them, server-side]: Allow only users on my Buddy List",
  117. me: NewIdentScreenName("me"),
  118. clientSideLists: map[IdentScreenName]buddyList{
  119. NewIdentScreenName("me"): {
  120. privacyMode: wire.FeedbagPDModePermitAll,
  121. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  122. permitList: []IdentScreenName{},
  123. denyList: []IdentScreenName{},
  124. },
  125. },
  126. serverSideLists: map[IdentScreenName]buddyList{
  127. NewIdentScreenName("them"): {
  128. privacyMode: wire.FeedbagPDModePermitOnList,
  129. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  130. permitList: []IdentScreenName{},
  131. denyList: []IdentScreenName{},
  132. },
  133. },
  134. expect: []Relationship{
  135. {
  136. User: NewIdentScreenName("them"),
  137. BlocksYou: false,
  138. YouBlock: false,
  139. IsOnTheirList: true,
  140. IsOnYourList: true,
  141. },
  142. },
  143. },
  144. {
  145. name: "[me, client-side]: Allow all users to contact me [them, client-side]: Allow only the users below",
  146. me: NewIdentScreenName("me"),
  147. clientSideLists: map[IdentScreenName]buddyList{
  148. NewIdentScreenName("me"): {
  149. privacyMode: wire.FeedbagPDModePermitAll,
  150. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  151. permitList: []IdentScreenName{},
  152. denyList: []IdentScreenName{},
  153. },
  154. NewIdentScreenName("them"): {
  155. privacyMode: wire.FeedbagPDModePermitSome,
  156. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  157. permitList: []IdentScreenName{NewIdentScreenName("me")},
  158. denyList: []IdentScreenName{},
  159. },
  160. },
  161. serverSideLists: map[IdentScreenName]buddyList{},
  162. expect: []Relationship{
  163. {
  164. User: NewIdentScreenName("them"),
  165. BlocksYou: false,
  166. YouBlock: false,
  167. IsOnTheirList: true,
  168. IsOnYourList: true,
  169. },
  170. },
  171. },
  172. {
  173. name: "[me, client-side]: Allow all users to contact me [them, server-side]: Allow only the users below",
  174. me: NewIdentScreenName("me"),
  175. clientSideLists: map[IdentScreenName]buddyList{
  176. NewIdentScreenName("me"): {
  177. privacyMode: wire.FeedbagPDModePermitAll,
  178. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  179. permitList: []IdentScreenName{},
  180. denyList: []IdentScreenName{},
  181. },
  182. },
  183. serverSideLists: map[IdentScreenName]buddyList{
  184. NewIdentScreenName("them"): {
  185. privacyMode: wire.FeedbagPDModePermitSome,
  186. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  187. permitList: []IdentScreenName{NewIdentScreenName("me")},
  188. denyList: []IdentScreenName{},
  189. },
  190. },
  191. expect: []Relationship{
  192. {
  193. User: NewIdentScreenName("them"),
  194. BlocksYou: false,
  195. YouBlock: false,
  196. IsOnTheirList: true,
  197. IsOnYourList: true,
  198. },
  199. },
  200. },
  201. {
  202. name: "[me, client-side]: Allow all users to contact me [them, client-side]: Block all users",
  203. me: NewIdentScreenName("me"),
  204. clientSideLists: map[IdentScreenName]buddyList{
  205. NewIdentScreenName("me"): {
  206. privacyMode: wire.FeedbagPDModePermitAll,
  207. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  208. permitList: []IdentScreenName{},
  209. denyList: []IdentScreenName{},
  210. },
  211. NewIdentScreenName("them"): {
  212. privacyMode: wire.FeedbagPDModeDenyAll,
  213. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  214. permitList: []IdentScreenName{},
  215. denyList: []IdentScreenName{},
  216. },
  217. },
  218. serverSideLists: map[IdentScreenName]buddyList{},
  219. expect: []Relationship{
  220. {
  221. User: NewIdentScreenName("them"),
  222. BlocksYou: true,
  223. YouBlock: false,
  224. IsOnTheirList: true,
  225. IsOnYourList: true,
  226. },
  227. },
  228. },
  229. {
  230. name: "[me, client-side]: Allow all users to contact me [them, server-side]: Block all users",
  231. me: NewIdentScreenName("me"),
  232. clientSideLists: map[IdentScreenName]buddyList{
  233. NewIdentScreenName("me"): {
  234. privacyMode: wire.FeedbagPDModePermitAll,
  235. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  236. permitList: []IdentScreenName{},
  237. denyList: []IdentScreenName{},
  238. },
  239. },
  240. serverSideLists: map[IdentScreenName]buddyList{
  241. NewIdentScreenName("them"): {
  242. privacyMode: wire.FeedbagPDModeDenyAll,
  243. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  244. permitList: []IdentScreenName{},
  245. denyList: []IdentScreenName{},
  246. },
  247. },
  248. expect: []Relationship{
  249. {
  250. User: NewIdentScreenName("them"),
  251. BlocksYou: true,
  252. YouBlock: false,
  253. IsOnTheirList: true,
  254. IsOnYourList: true,
  255. },
  256. },
  257. },
  258. {
  259. name: "[me, client-side]: Allow all users to contact me [them, client-side]: Block the users Below",
  260. me: NewIdentScreenName("me"),
  261. clientSideLists: map[IdentScreenName]buddyList{
  262. NewIdentScreenName("me"): {
  263. privacyMode: wire.FeedbagPDModePermitAll,
  264. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  265. permitList: []IdentScreenName{},
  266. denyList: []IdentScreenName{},
  267. },
  268. NewIdentScreenName("them"): {
  269. privacyMode: wire.FeedbagPDModeDenySome,
  270. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  271. permitList: []IdentScreenName{},
  272. denyList: []IdentScreenName{NewIdentScreenName("me")},
  273. },
  274. },
  275. serverSideLists: map[IdentScreenName]buddyList{},
  276. expect: []Relationship{
  277. {
  278. User: NewIdentScreenName("them"),
  279. BlocksYou: true,
  280. YouBlock: false,
  281. IsOnTheirList: true,
  282. IsOnYourList: true,
  283. },
  284. },
  285. },
  286. {
  287. name: "[me, client-side]: Allow all users to contact me [them, server-side]: Block the users Below",
  288. me: NewIdentScreenName("me"),
  289. clientSideLists: map[IdentScreenName]buddyList{
  290. NewIdentScreenName("me"): {
  291. privacyMode: wire.FeedbagPDModePermitAll,
  292. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  293. permitList: []IdentScreenName{},
  294. denyList: []IdentScreenName{},
  295. },
  296. },
  297. serverSideLists: map[IdentScreenName]buddyList{
  298. NewIdentScreenName("them"): {
  299. privacyMode: wire.FeedbagPDModeDenySome,
  300. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  301. permitList: []IdentScreenName{},
  302. denyList: []IdentScreenName{NewIdentScreenName("me")},
  303. },
  304. },
  305. expect: []Relationship{
  306. {
  307. User: NewIdentScreenName("them"),
  308. BlocksYou: true,
  309. YouBlock: false,
  310. IsOnTheirList: true,
  311. IsOnYourList: true,
  312. },
  313. },
  314. },
  315. {
  316. name: "[me, server-side]: Allow all users to contact me [them, client-side]: Allow all users to contact me",
  317. me: NewIdentScreenName("me"),
  318. clientSideLists: map[IdentScreenName]buddyList{
  319. NewIdentScreenName("them"): {
  320. privacyMode: wire.FeedbagPDModePermitAll,
  321. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  322. permitList: []IdentScreenName{},
  323. denyList: []IdentScreenName{},
  324. },
  325. },
  326. serverSideLists: map[IdentScreenName]buddyList{
  327. NewIdentScreenName("me"): {
  328. privacyMode: wire.FeedbagPDModePermitAll,
  329. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  330. permitList: []IdentScreenName{},
  331. denyList: []IdentScreenName{},
  332. },
  333. },
  334. expect: []Relationship{
  335. {
  336. User: NewIdentScreenName("them"),
  337. BlocksYou: false,
  338. YouBlock: false,
  339. IsOnTheirList: true,
  340. IsOnYourList: true,
  341. },
  342. },
  343. },
  344. {
  345. name: "[me, server-side]: Allow all users to contact me [them, server-side]: Allow all users to contact me",
  346. me: NewIdentScreenName("me"),
  347. clientSideLists: map[IdentScreenName]buddyList{},
  348. serverSideLists: map[IdentScreenName]buddyList{
  349. NewIdentScreenName("me"): {
  350. privacyMode: wire.FeedbagPDModePermitAll,
  351. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  352. permitList: []IdentScreenName{},
  353. denyList: []IdentScreenName{},
  354. },
  355. NewIdentScreenName("them"): {
  356. privacyMode: wire.FeedbagPDModePermitAll,
  357. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  358. permitList: []IdentScreenName{},
  359. denyList: []IdentScreenName{},
  360. },
  361. },
  362. expect: []Relationship{
  363. {
  364. User: NewIdentScreenName("them"),
  365. BlocksYou: false,
  366. YouBlock: false,
  367. IsOnTheirList: true,
  368. IsOnYourList: true,
  369. },
  370. },
  371. },
  372. {
  373. name: "[me, server-side]: Allow all users to contact me [them, client-side]: Allow only users on my Buddy List",
  374. me: NewIdentScreenName("me"),
  375. clientSideLists: map[IdentScreenName]buddyList{
  376. NewIdentScreenName("them"): {
  377. privacyMode: wire.FeedbagPDModePermitOnList,
  378. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  379. permitList: []IdentScreenName{},
  380. denyList: []IdentScreenName{},
  381. },
  382. },
  383. serverSideLists: map[IdentScreenName]buddyList{
  384. NewIdentScreenName("me"): {
  385. privacyMode: wire.FeedbagPDModePermitAll,
  386. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  387. permitList: []IdentScreenName{},
  388. denyList: []IdentScreenName{},
  389. },
  390. },
  391. expect: []Relationship{
  392. {
  393. User: NewIdentScreenName("them"),
  394. BlocksYou: false,
  395. YouBlock: false,
  396. IsOnTheirList: true,
  397. IsOnYourList: true,
  398. },
  399. },
  400. },
  401. {
  402. name: "[me, server-side]: Allow all users to contact me [them, server-side]: Allow only users on my Buddy List",
  403. me: NewIdentScreenName("me"),
  404. clientSideLists: map[IdentScreenName]buddyList{},
  405. serverSideLists: map[IdentScreenName]buddyList{
  406. NewIdentScreenName("me"): {
  407. privacyMode: wire.FeedbagPDModePermitAll,
  408. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  409. permitList: []IdentScreenName{},
  410. denyList: []IdentScreenName{},
  411. },
  412. NewIdentScreenName("them"): {
  413. privacyMode: wire.FeedbagPDModePermitOnList,
  414. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  415. permitList: []IdentScreenName{},
  416. denyList: []IdentScreenName{},
  417. },
  418. },
  419. expect: []Relationship{
  420. {
  421. User: NewIdentScreenName("them"),
  422. BlocksYou: false,
  423. YouBlock: false,
  424. IsOnTheirList: true,
  425. IsOnYourList: true,
  426. },
  427. },
  428. },
  429. {
  430. name: "[me, server-side]: Allow all users to contact me [them, client-side]: Allow only the users below",
  431. me: NewIdentScreenName("me"),
  432. clientSideLists: map[IdentScreenName]buddyList{
  433. NewIdentScreenName("them"): {
  434. privacyMode: wire.FeedbagPDModePermitSome,
  435. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  436. permitList: []IdentScreenName{NewIdentScreenName("me")},
  437. denyList: []IdentScreenName{},
  438. },
  439. },
  440. serverSideLists: map[IdentScreenName]buddyList{
  441. NewIdentScreenName("me"): {
  442. privacyMode: wire.FeedbagPDModePermitAll,
  443. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  444. permitList: []IdentScreenName{},
  445. denyList: []IdentScreenName{},
  446. },
  447. },
  448. expect: []Relationship{
  449. {
  450. User: NewIdentScreenName("them"),
  451. BlocksYou: false,
  452. YouBlock: false,
  453. IsOnTheirList: true,
  454. IsOnYourList: true,
  455. },
  456. },
  457. },
  458. {
  459. name: "[me, server-side]: Allow all users to contact me [them, server-side]: Allow only the users below",
  460. me: NewIdentScreenName("me"),
  461. clientSideLists: map[IdentScreenName]buddyList{},
  462. serverSideLists: map[IdentScreenName]buddyList{
  463. NewIdentScreenName("me"): {
  464. privacyMode: wire.FeedbagPDModePermitAll,
  465. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  466. permitList: []IdentScreenName{},
  467. denyList: []IdentScreenName{},
  468. },
  469. NewIdentScreenName("them"): {
  470. privacyMode: wire.FeedbagPDModePermitSome,
  471. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  472. permitList: []IdentScreenName{NewIdentScreenName("me")},
  473. denyList: []IdentScreenName{},
  474. },
  475. },
  476. expect: []Relationship{
  477. {
  478. User: NewIdentScreenName("them"),
  479. BlocksYou: false,
  480. YouBlock: false,
  481. IsOnTheirList: true,
  482. IsOnYourList: true,
  483. },
  484. },
  485. },
  486. {
  487. name: "[me, server-side]: Allow all users to contact me [them, client-side]: Block all users",
  488. me: NewIdentScreenName("me"),
  489. clientSideLists: map[IdentScreenName]buddyList{
  490. NewIdentScreenName("them"): {
  491. privacyMode: wire.FeedbagPDModeDenyAll,
  492. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  493. permitList: []IdentScreenName{},
  494. denyList: []IdentScreenName{},
  495. },
  496. },
  497. serverSideLists: map[IdentScreenName]buddyList{
  498. NewIdentScreenName("me"): {
  499. privacyMode: wire.FeedbagPDModePermitAll,
  500. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  501. permitList: []IdentScreenName{},
  502. denyList: []IdentScreenName{},
  503. },
  504. },
  505. expect: []Relationship{
  506. {
  507. User: NewIdentScreenName("them"),
  508. BlocksYou: true,
  509. YouBlock: false,
  510. IsOnTheirList: true,
  511. IsOnYourList: true,
  512. },
  513. },
  514. },
  515. {
  516. name: "[me, server-side]: Allow all users to contact me [them, server-side]: Block all users",
  517. me: NewIdentScreenName("me"),
  518. clientSideLists: map[IdentScreenName]buddyList{},
  519. serverSideLists: map[IdentScreenName]buddyList{
  520. NewIdentScreenName("me"): {
  521. privacyMode: wire.FeedbagPDModePermitAll,
  522. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  523. permitList: []IdentScreenName{},
  524. denyList: []IdentScreenName{},
  525. },
  526. NewIdentScreenName("them"): {
  527. privacyMode: wire.FeedbagPDModeDenyAll,
  528. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  529. permitList: []IdentScreenName{},
  530. denyList: []IdentScreenName{},
  531. },
  532. },
  533. expect: []Relationship{
  534. {
  535. User: NewIdentScreenName("them"),
  536. BlocksYou: true,
  537. YouBlock: false,
  538. IsOnTheirList: true,
  539. IsOnYourList: true,
  540. },
  541. },
  542. },
  543. {
  544. name: "[me, server-side]: Allow all users to contact me [them, client-side]: Block the users Below",
  545. me: NewIdentScreenName("me"),
  546. clientSideLists: map[IdentScreenName]buddyList{
  547. NewIdentScreenName("them"): {
  548. privacyMode: wire.FeedbagPDModeDenySome,
  549. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  550. permitList: []IdentScreenName{},
  551. denyList: []IdentScreenName{NewIdentScreenName("me")},
  552. },
  553. },
  554. serverSideLists: map[IdentScreenName]buddyList{
  555. NewIdentScreenName("me"): {
  556. privacyMode: wire.FeedbagPDModePermitAll,
  557. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  558. permitList: []IdentScreenName{},
  559. denyList: []IdentScreenName{},
  560. },
  561. },
  562. expect: []Relationship{
  563. {
  564. User: NewIdentScreenName("them"),
  565. BlocksYou: true,
  566. YouBlock: false,
  567. IsOnTheirList: true,
  568. IsOnYourList: true,
  569. },
  570. },
  571. },
  572. {
  573. name: "[me, server-side]: Allow all users to contact me [them, server-side]: Block the users Below",
  574. me: NewIdentScreenName("me"),
  575. clientSideLists: map[IdentScreenName]buddyList{},
  576. serverSideLists: map[IdentScreenName]buddyList{
  577. NewIdentScreenName("me"): {
  578. privacyMode: wire.FeedbagPDModePermitAll,
  579. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  580. permitList: []IdentScreenName{},
  581. denyList: []IdentScreenName{},
  582. },
  583. NewIdentScreenName("them"): {
  584. privacyMode: wire.FeedbagPDModeDenySome,
  585. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  586. permitList: []IdentScreenName{},
  587. denyList: []IdentScreenName{NewIdentScreenName("me")},
  588. },
  589. },
  590. expect: []Relationship{
  591. {
  592. User: NewIdentScreenName("them"),
  593. BlocksYou: true,
  594. YouBlock: false,
  595. IsOnTheirList: true,
  596. IsOnYourList: true,
  597. },
  598. },
  599. },
  600. {
  601. name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Allow all users to contact me",
  602. me: NewIdentScreenName("me"),
  603. clientSideLists: map[IdentScreenName]buddyList{
  604. NewIdentScreenName("me"): {
  605. privacyMode: wire.FeedbagPDModePermitOnList,
  606. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  607. permitList: []IdentScreenName{},
  608. denyList: []IdentScreenName{},
  609. },
  610. NewIdentScreenName("them"): {
  611. privacyMode: wire.FeedbagPDModePermitAll,
  612. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  613. permitList: []IdentScreenName{},
  614. denyList: []IdentScreenName{},
  615. },
  616. },
  617. serverSideLists: map[IdentScreenName]buddyList{},
  618. expect: []Relationship{
  619. {
  620. User: NewIdentScreenName("them"),
  621. BlocksYou: false,
  622. YouBlock: false,
  623. IsOnTheirList: true,
  624. IsOnYourList: true,
  625. },
  626. },
  627. },
  628. {
  629. name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Allow all users to contact me",
  630. me: NewIdentScreenName("me"),
  631. clientSideLists: map[IdentScreenName]buddyList{
  632. NewIdentScreenName("me"): {
  633. privacyMode: wire.FeedbagPDModePermitOnList,
  634. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  635. permitList: []IdentScreenName{},
  636. denyList: []IdentScreenName{},
  637. },
  638. },
  639. serverSideLists: map[IdentScreenName]buddyList{
  640. NewIdentScreenName("them"): {
  641. privacyMode: wire.FeedbagPDModePermitAll,
  642. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  643. permitList: []IdentScreenName{},
  644. denyList: []IdentScreenName{},
  645. },
  646. },
  647. expect: []Relationship{
  648. {
  649. User: NewIdentScreenName("them"),
  650. BlocksYou: false,
  651. YouBlock: false,
  652. IsOnTheirList: true,
  653. IsOnYourList: true,
  654. },
  655. },
  656. },
  657. {
  658. name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Allow only users on my Buddy List",
  659. me: NewIdentScreenName("me"),
  660. clientSideLists: map[IdentScreenName]buddyList{
  661. NewIdentScreenName("me"): {
  662. privacyMode: wire.FeedbagPDModePermitOnList,
  663. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  664. permitList: []IdentScreenName{},
  665. denyList: []IdentScreenName{},
  666. },
  667. NewIdentScreenName("them"): {
  668. privacyMode: wire.FeedbagPDModePermitOnList,
  669. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  670. permitList: []IdentScreenName{},
  671. denyList: []IdentScreenName{},
  672. },
  673. },
  674. serverSideLists: map[IdentScreenName]buddyList{},
  675. expect: []Relationship{
  676. {
  677. User: NewIdentScreenName("them"),
  678. BlocksYou: false,
  679. YouBlock: false,
  680. IsOnTheirList: true,
  681. IsOnYourList: true,
  682. },
  683. },
  684. },
  685. {
  686. name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Allow only users on my Buddy List",
  687. me: NewIdentScreenName("me"),
  688. clientSideLists: map[IdentScreenName]buddyList{
  689. NewIdentScreenName("me"): {
  690. privacyMode: wire.FeedbagPDModePermitOnList,
  691. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  692. permitList: []IdentScreenName{},
  693. denyList: []IdentScreenName{},
  694. },
  695. },
  696. serverSideLists: map[IdentScreenName]buddyList{
  697. NewIdentScreenName("them"): {
  698. privacyMode: wire.FeedbagPDModePermitOnList,
  699. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  700. permitList: []IdentScreenName{},
  701. denyList: []IdentScreenName{},
  702. },
  703. },
  704. expect: []Relationship{
  705. {
  706. User: NewIdentScreenName("them"),
  707. BlocksYou: false,
  708. YouBlock: false,
  709. IsOnTheirList: true,
  710. IsOnYourList: true,
  711. },
  712. },
  713. },
  714. {
  715. name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Allow only the users below",
  716. me: NewIdentScreenName("me"),
  717. clientSideLists: map[IdentScreenName]buddyList{
  718. NewIdentScreenName("me"): {
  719. privacyMode: wire.FeedbagPDModePermitOnList,
  720. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  721. permitList: []IdentScreenName{},
  722. denyList: []IdentScreenName{},
  723. },
  724. NewIdentScreenName("them"): {
  725. privacyMode: wire.FeedbagPDModePermitSome,
  726. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  727. permitList: []IdentScreenName{NewIdentScreenName("me")},
  728. denyList: []IdentScreenName{},
  729. },
  730. },
  731. serverSideLists: map[IdentScreenName]buddyList{},
  732. expect: []Relationship{
  733. {
  734. User: NewIdentScreenName("them"),
  735. BlocksYou: false,
  736. YouBlock: false,
  737. IsOnTheirList: true,
  738. IsOnYourList: true,
  739. },
  740. },
  741. },
  742. {
  743. name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Allow only the users below",
  744. me: NewIdentScreenName("me"),
  745. clientSideLists: map[IdentScreenName]buddyList{
  746. NewIdentScreenName("me"): {
  747. privacyMode: wire.FeedbagPDModePermitOnList,
  748. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  749. permitList: []IdentScreenName{},
  750. denyList: []IdentScreenName{},
  751. },
  752. },
  753. serverSideLists: map[IdentScreenName]buddyList{
  754. NewIdentScreenName("them"): {
  755. privacyMode: wire.FeedbagPDModePermitSome,
  756. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  757. permitList: []IdentScreenName{NewIdentScreenName("me")},
  758. denyList: []IdentScreenName{},
  759. },
  760. },
  761. expect: []Relationship{
  762. {
  763. User: NewIdentScreenName("them"),
  764. BlocksYou: false,
  765. YouBlock: false,
  766. IsOnTheirList: true,
  767. IsOnYourList: true,
  768. },
  769. },
  770. },
  771. {
  772. name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Block all users",
  773. me: NewIdentScreenName("me"),
  774. clientSideLists: map[IdentScreenName]buddyList{
  775. NewIdentScreenName("me"): {
  776. privacyMode: wire.FeedbagPDModePermitOnList,
  777. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  778. permitList: []IdentScreenName{},
  779. denyList: []IdentScreenName{},
  780. },
  781. NewIdentScreenName("them"): {
  782. privacyMode: wire.FeedbagPDModeDenyAll,
  783. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  784. permitList: []IdentScreenName{},
  785. denyList: []IdentScreenName{},
  786. },
  787. },
  788. serverSideLists: map[IdentScreenName]buddyList{},
  789. expect: []Relationship{
  790. {
  791. User: NewIdentScreenName("them"),
  792. BlocksYou: true,
  793. YouBlock: false,
  794. IsOnTheirList: true,
  795. IsOnYourList: true,
  796. },
  797. },
  798. },
  799. {
  800. name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Block all users",
  801. me: NewIdentScreenName("me"),
  802. clientSideLists: map[IdentScreenName]buddyList{
  803. NewIdentScreenName("me"): {
  804. privacyMode: wire.FeedbagPDModePermitOnList,
  805. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  806. permitList: []IdentScreenName{},
  807. denyList: []IdentScreenName{},
  808. },
  809. },
  810. serverSideLists: map[IdentScreenName]buddyList{
  811. NewIdentScreenName("them"): {
  812. privacyMode: wire.FeedbagPDModeDenyAll,
  813. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  814. permitList: []IdentScreenName{},
  815. denyList: []IdentScreenName{},
  816. },
  817. },
  818. expect: []Relationship{
  819. {
  820. User: NewIdentScreenName("them"),
  821. BlocksYou: true,
  822. YouBlock: false,
  823. IsOnTheirList: true,
  824. IsOnYourList: true,
  825. },
  826. },
  827. },
  828. {
  829. name: "[me, client-side]: Allow only users on my Buddy List [them, client-side]: Block the users Below",
  830. me: NewIdentScreenName("me"),
  831. clientSideLists: map[IdentScreenName]buddyList{
  832. NewIdentScreenName("me"): {
  833. privacyMode: wire.FeedbagPDModePermitOnList,
  834. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  835. permitList: []IdentScreenName{},
  836. denyList: []IdentScreenName{},
  837. },
  838. NewIdentScreenName("them"): {
  839. privacyMode: wire.FeedbagPDModeDenySome,
  840. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  841. permitList: []IdentScreenName{},
  842. denyList: []IdentScreenName{NewIdentScreenName("me")},
  843. },
  844. },
  845. serverSideLists: map[IdentScreenName]buddyList{},
  846. expect: []Relationship{
  847. {
  848. User: NewIdentScreenName("them"),
  849. BlocksYou: true,
  850. YouBlock: false,
  851. IsOnTheirList: true,
  852. IsOnYourList: true,
  853. },
  854. },
  855. },
  856. {
  857. name: "[me, client-side]: Allow only users on my Buddy List [them, server-side]: Block the users Below",
  858. me: NewIdentScreenName("me"),
  859. clientSideLists: map[IdentScreenName]buddyList{
  860. NewIdentScreenName("me"): {
  861. privacyMode: wire.FeedbagPDModePermitOnList,
  862. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  863. permitList: []IdentScreenName{},
  864. denyList: []IdentScreenName{},
  865. },
  866. },
  867. serverSideLists: map[IdentScreenName]buddyList{
  868. NewIdentScreenName("them"): {
  869. privacyMode: wire.FeedbagPDModeDenySome,
  870. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  871. permitList: []IdentScreenName{},
  872. denyList: []IdentScreenName{NewIdentScreenName("me")},
  873. },
  874. },
  875. expect: []Relationship{
  876. {
  877. User: NewIdentScreenName("them"),
  878. BlocksYou: true,
  879. YouBlock: false,
  880. IsOnTheirList: true,
  881. IsOnYourList: true,
  882. },
  883. },
  884. },
  885. {
  886. name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Allow all users to contact me",
  887. me: NewIdentScreenName("me"),
  888. clientSideLists: map[IdentScreenName]buddyList{
  889. NewIdentScreenName("them"): {
  890. privacyMode: wire.FeedbagPDModePermitAll,
  891. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  892. permitList: []IdentScreenName{},
  893. denyList: []IdentScreenName{},
  894. },
  895. },
  896. serverSideLists: map[IdentScreenName]buddyList{
  897. NewIdentScreenName("me"): {
  898. privacyMode: wire.FeedbagPDModePermitOnList,
  899. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  900. permitList: []IdentScreenName{},
  901. denyList: []IdentScreenName{},
  902. },
  903. },
  904. expect: []Relationship{
  905. {
  906. User: NewIdentScreenName("them"),
  907. BlocksYou: false,
  908. YouBlock: false,
  909. IsOnTheirList: true,
  910. IsOnYourList: true,
  911. },
  912. },
  913. },
  914. {
  915. name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Allow all users to contact me",
  916. me: NewIdentScreenName("me"),
  917. clientSideLists: map[IdentScreenName]buddyList{},
  918. serverSideLists: map[IdentScreenName]buddyList{
  919. NewIdentScreenName("me"): {
  920. privacyMode: wire.FeedbagPDModePermitOnList,
  921. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  922. permitList: []IdentScreenName{},
  923. denyList: []IdentScreenName{},
  924. },
  925. NewIdentScreenName("them"): {
  926. privacyMode: wire.FeedbagPDModePermitAll,
  927. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  928. permitList: []IdentScreenName{},
  929. denyList: []IdentScreenName{},
  930. },
  931. },
  932. expect: []Relationship{
  933. {
  934. User: NewIdentScreenName("them"),
  935. BlocksYou: false,
  936. YouBlock: false,
  937. IsOnTheirList: true,
  938. IsOnYourList: true,
  939. },
  940. },
  941. },
  942. {
  943. name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Allow only users on my Buddy List",
  944. me: NewIdentScreenName("me"),
  945. clientSideLists: map[IdentScreenName]buddyList{
  946. NewIdentScreenName("them"): {
  947. privacyMode: wire.FeedbagPDModePermitOnList,
  948. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  949. permitList: []IdentScreenName{},
  950. denyList: []IdentScreenName{},
  951. },
  952. },
  953. serverSideLists: map[IdentScreenName]buddyList{
  954. NewIdentScreenName("me"): {
  955. privacyMode: wire.FeedbagPDModePermitOnList,
  956. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  957. permitList: []IdentScreenName{},
  958. denyList: []IdentScreenName{},
  959. },
  960. },
  961. expect: []Relationship{
  962. {
  963. User: NewIdentScreenName("them"),
  964. BlocksYou: false,
  965. YouBlock: false,
  966. IsOnTheirList: true,
  967. IsOnYourList: true,
  968. },
  969. },
  970. },
  971. {
  972. name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Allow only users on my Buddy List",
  973. me: NewIdentScreenName("me"),
  974. clientSideLists: map[IdentScreenName]buddyList{},
  975. serverSideLists: map[IdentScreenName]buddyList{
  976. NewIdentScreenName("me"): {
  977. privacyMode: wire.FeedbagPDModePermitOnList,
  978. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  979. permitList: []IdentScreenName{},
  980. denyList: []IdentScreenName{},
  981. },
  982. NewIdentScreenName("them"): {
  983. privacyMode: wire.FeedbagPDModePermitOnList,
  984. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  985. permitList: []IdentScreenName{},
  986. denyList: []IdentScreenName{},
  987. },
  988. },
  989. expect: []Relationship{
  990. {
  991. User: NewIdentScreenName("them"),
  992. BlocksYou: false,
  993. YouBlock: false,
  994. IsOnTheirList: true,
  995. IsOnYourList: true,
  996. },
  997. },
  998. },
  999. {
  1000. name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Allow only the users below",
  1001. me: NewIdentScreenName("me"),
  1002. clientSideLists: map[IdentScreenName]buddyList{
  1003. NewIdentScreenName("them"): {
  1004. privacyMode: wire.FeedbagPDModePermitSome,
  1005. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1006. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1007. denyList: []IdentScreenName{},
  1008. },
  1009. },
  1010. serverSideLists: map[IdentScreenName]buddyList{
  1011. NewIdentScreenName("me"): {
  1012. privacyMode: wire.FeedbagPDModePermitOnList,
  1013. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1014. permitList: []IdentScreenName{},
  1015. denyList: []IdentScreenName{},
  1016. },
  1017. },
  1018. expect: []Relationship{
  1019. {
  1020. User: NewIdentScreenName("them"),
  1021. BlocksYou: false,
  1022. YouBlock: false,
  1023. IsOnTheirList: true,
  1024. IsOnYourList: true,
  1025. },
  1026. },
  1027. },
  1028. {
  1029. name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Allow only the users below",
  1030. me: NewIdentScreenName("me"),
  1031. clientSideLists: map[IdentScreenName]buddyList{},
  1032. serverSideLists: map[IdentScreenName]buddyList{
  1033. NewIdentScreenName("me"): {
  1034. privacyMode: wire.FeedbagPDModePermitOnList,
  1035. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1036. permitList: []IdentScreenName{},
  1037. denyList: []IdentScreenName{},
  1038. },
  1039. NewIdentScreenName("them"): {
  1040. privacyMode: wire.FeedbagPDModePermitSome,
  1041. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1042. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1043. denyList: []IdentScreenName{},
  1044. },
  1045. },
  1046. expect: []Relationship{
  1047. {
  1048. User: NewIdentScreenName("them"),
  1049. BlocksYou: false,
  1050. YouBlock: false,
  1051. IsOnTheirList: true,
  1052. IsOnYourList: true,
  1053. },
  1054. },
  1055. },
  1056. {
  1057. name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Block all users",
  1058. me: NewIdentScreenName("me"),
  1059. clientSideLists: map[IdentScreenName]buddyList{
  1060. NewIdentScreenName("them"): {
  1061. privacyMode: wire.FeedbagPDModeDenyAll,
  1062. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1063. permitList: []IdentScreenName{},
  1064. denyList: []IdentScreenName{},
  1065. },
  1066. },
  1067. serverSideLists: map[IdentScreenName]buddyList{
  1068. NewIdentScreenName("me"): {
  1069. privacyMode: wire.FeedbagPDModePermitOnList,
  1070. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1071. permitList: []IdentScreenName{},
  1072. denyList: []IdentScreenName{},
  1073. },
  1074. },
  1075. expect: []Relationship{
  1076. {
  1077. User: NewIdentScreenName("them"),
  1078. BlocksYou: true,
  1079. YouBlock: false,
  1080. IsOnTheirList: true,
  1081. IsOnYourList: true,
  1082. },
  1083. },
  1084. },
  1085. {
  1086. name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Block all users",
  1087. me: NewIdentScreenName("me"),
  1088. clientSideLists: map[IdentScreenName]buddyList{},
  1089. serverSideLists: map[IdentScreenName]buddyList{
  1090. NewIdentScreenName("me"): {
  1091. privacyMode: wire.FeedbagPDModePermitOnList,
  1092. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1093. permitList: []IdentScreenName{},
  1094. denyList: []IdentScreenName{},
  1095. },
  1096. NewIdentScreenName("them"): {
  1097. privacyMode: wire.FeedbagPDModeDenyAll,
  1098. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1099. permitList: []IdentScreenName{},
  1100. denyList: []IdentScreenName{},
  1101. },
  1102. },
  1103. expect: []Relationship{
  1104. {
  1105. User: NewIdentScreenName("them"),
  1106. BlocksYou: true,
  1107. YouBlock: false,
  1108. IsOnTheirList: true,
  1109. IsOnYourList: true,
  1110. },
  1111. },
  1112. },
  1113. {
  1114. name: "[me, server-side]: Allow only users on my Buddy List [them, client-side]: Block the users Below",
  1115. me: NewIdentScreenName("me"),
  1116. clientSideLists: map[IdentScreenName]buddyList{
  1117. NewIdentScreenName("them"): {
  1118. privacyMode: wire.FeedbagPDModeDenySome,
  1119. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1120. permitList: []IdentScreenName{},
  1121. denyList: []IdentScreenName{NewIdentScreenName("me")},
  1122. },
  1123. },
  1124. serverSideLists: map[IdentScreenName]buddyList{
  1125. NewIdentScreenName("me"): {
  1126. privacyMode: wire.FeedbagPDModePermitOnList,
  1127. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1128. permitList: []IdentScreenName{},
  1129. denyList: []IdentScreenName{},
  1130. },
  1131. },
  1132. expect: []Relationship{
  1133. {
  1134. User: NewIdentScreenName("them"),
  1135. BlocksYou: true,
  1136. YouBlock: false,
  1137. IsOnTheirList: true,
  1138. IsOnYourList: true,
  1139. },
  1140. },
  1141. },
  1142. {
  1143. name: "[me, server-side]: Allow only users on my Buddy List [them, server-side]: Block the users Below",
  1144. me: NewIdentScreenName("me"),
  1145. clientSideLists: map[IdentScreenName]buddyList{},
  1146. serverSideLists: map[IdentScreenName]buddyList{
  1147. NewIdentScreenName("me"): {
  1148. privacyMode: wire.FeedbagPDModePermitOnList,
  1149. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1150. permitList: []IdentScreenName{},
  1151. denyList: []IdentScreenName{},
  1152. },
  1153. NewIdentScreenName("them"): {
  1154. privacyMode: wire.FeedbagPDModeDenySome,
  1155. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1156. permitList: []IdentScreenName{},
  1157. denyList: []IdentScreenName{NewIdentScreenName("me")},
  1158. },
  1159. },
  1160. expect: []Relationship{
  1161. {
  1162. User: NewIdentScreenName("them"),
  1163. BlocksYou: true,
  1164. YouBlock: false,
  1165. IsOnTheirList: true,
  1166. IsOnYourList: true,
  1167. },
  1168. },
  1169. },
  1170. {
  1171. name: "[me, client-side]: Allow only the users below [them, client-side]: Allow all users to contact me",
  1172. me: NewIdentScreenName("me"),
  1173. clientSideLists: map[IdentScreenName]buddyList{
  1174. NewIdentScreenName("me"): {
  1175. privacyMode: wire.FeedbagPDModePermitSome,
  1176. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1177. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1178. denyList: []IdentScreenName{},
  1179. },
  1180. NewIdentScreenName("them"): {
  1181. privacyMode: wire.FeedbagPDModePermitAll,
  1182. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1183. permitList: []IdentScreenName{},
  1184. denyList: []IdentScreenName{},
  1185. },
  1186. },
  1187. serverSideLists: map[IdentScreenName]buddyList{},
  1188. expect: []Relationship{
  1189. {
  1190. User: NewIdentScreenName("them"),
  1191. BlocksYou: false,
  1192. YouBlock: false,
  1193. IsOnTheirList: true,
  1194. IsOnYourList: true,
  1195. },
  1196. },
  1197. },
  1198. {
  1199. name: "[me, client-side]: Allow only the users below [them, server-side]: Allow all users to contact me",
  1200. me: NewIdentScreenName("me"),
  1201. clientSideLists: map[IdentScreenName]buddyList{
  1202. NewIdentScreenName("me"): {
  1203. privacyMode: wire.FeedbagPDModePermitSome,
  1204. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1205. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1206. denyList: []IdentScreenName{},
  1207. },
  1208. },
  1209. serverSideLists: map[IdentScreenName]buddyList{
  1210. NewIdentScreenName("them"): {
  1211. privacyMode: wire.FeedbagPDModePermitAll,
  1212. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1213. permitList: []IdentScreenName{},
  1214. denyList: []IdentScreenName{},
  1215. },
  1216. },
  1217. expect: []Relationship{
  1218. {
  1219. User: NewIdentScreenName("them"),
  1220. BlocksYou: false,
  1221. YouBlock: false,
  1222. IsOnTheirList: true,
  1223. IsOnYourList: true,
  1224. },
  1225. },
  1226. },
  1227. {
  1228. name: "[me, client-side]: Allow only the users below [them, client-side]: Allow only users on my Buddy List",
  1229. me: NewIdentScreenName("me"),
  1230. clientSideLists: map[IdentScreenName]buddyList{
  1231. NewIdentScreenName("me"): {
  1232. privacyMode: wire.FeedbagPDModePermitSome,
  1233. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1234. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1235. denyList: []IdentScreenName{},
  1236. },
  1237. NewIdentScreenName("them"): {
  1238. privacyMode: wire.FeedbagPDModePermitOnList,
  1239. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1240. permitList: []IdentScreenName{},
  1241. denyList: []IdentScreenName{},
  1242. },
  1243. },
  1244. serverSideLists: map[IdentScreenName]buddyList{},
  1245. expect: []Relationship{
  1246. {
  1247. User: NewIdentScreenName("them"),
  1248. BlocksYou: false,
  1249. YouBlock: false,
  1250. IsOnTheirList: true,
  1251. IsOnYourList: true,
  1252. },
  1253. },
  1254. },
  1255. {
  1256. name: "[me, client-side]: Allow only the users below [them, server-side]: Allow only users on my Buddy List",
  1257. me: NewIdentScreenName("me"),
  1258. clientSideLists: map[IdentScreenName]buddyList{
  1259. NewIdentScreenName("me"): {
  1260. privacyMode: wire.FeedbagPDModePermitSome,
  1261. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1262. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1263. denyList: []IdentScreenName{},
  1264. },
  1265. },
  1266. serverSideLists: map[IdentScreenName]buddyList{
  1267. NewIdentScreenName("them"): {
  1268. privacyMode: wire.FeedbagPDModePermitOnList,
  1269. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1270. permitList: []IdentScreenName{},
  1271. denyList: []IdentScreenName{},
  1272. },
  1273. },
  1274. expect: []Relationship{
  1275. {
  1276. User: NewIdentScreenName("them"),
  1277. BlocksYou: false,
  1278. YouBlock: false,
  1279. IsOnTheirList: true,
  1280. IsOnYourList: true,
  1281. },
  1282. },
  1283. },
  1284. {
  1285. name: "[me, client-side]: Allow only the users below [them, client-side]: Allow only the users below",
  1286. me: NewIdentScreenName("me"),
  1287. clientSideLists: map[IdentScreenName]buddyList{
  1288. NewIdentScreenName("me"): {
  1289. privacyMode: wire.FeedbagPDModePermitSome,
  1290. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1291. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1292. denyList: []IdentScreenName{},
  1293. },
  1294. NewIdentScreenName("them"): {
  1295. privacyMode: wire.FeedbagPDModePermitSome,
  1296. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1297. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1298. denyList: []IdentScreenName{},
  1299. },
  1300. },
  1301. serverSideLists: map[IdentScreenName]buddyList{},
  1302. expect: []Relationship{
  1303. {
  1304. User: NewIdentScreenName("them"),
  1305. BlocksYou: false,
  1306. YouBlock: false,
  1307. IsOnTheirList: true,
  1308. IsOnYourList: true,
  1309. },
  1310. },
  1311. },
  1312. {
  1313. name: "[me, client-side]: Allow only the users below [them, server-side]: Allow only the users below",
  1314. me: NewIdentScreenName("me"),
  1315. clientSideLists: map[IdentScreenName]buddyList{
  1316. NewIdentScreenName("me"): {
  1317. privacyMode: wire.FeedbagPDModePermitSome,
  1318. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1319. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1320. denyList: []IdentScreenName{},
  1321. },
  1322. },
  1323. serverSideLists: map[IdentScreenName]buddyList{
  1324. NewIdentScreenName("them"): {
  1325. privacyMode: wire.FeedbagPDModePermitSome,
  1326. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1327. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1328. denyList: []IdentScreenName{},
  1329. },
  1330. },
  1331. expect: []Relationship{
  1332. {
  1333. User: NewIdentScreenName("them"),
  1334. BlocksYou: false,
  1335. YouBlock: false,
  1336. IsOnTheirList: true,
  1337. IsOnYourList: true,
  1338. },
  1339. },
  1340. },
  1341. {
  1342. name: "[me, client-side]: Allow only the users below [them, client-side]: Block all users",
  1343. me: NewIdentScreenName("me"),
  1344. clientSideLists: map[IdentScreenName]buddyList{
  1345. NewIdentScreenName("me"): {
  1346. privacyMode: wire.FeedbagPDModePermitSome,
  1347. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1348. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1349. denyList: []IdentScreenName{},
  1350. },
  1351. NewIdentScreenName("them"): {
  1352. privacyMode: wire.FeedbagPDModeDenyAll,
  1353. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1354. permitList: []IdentScreenName{},
  1355. denyList: []IdentScreenName{},
  1356. },
  1357. },
  1358. serverSideLists: map[IdentScreenName]buddyList{},
  1359. expect: []Relationship{
  1360. {
  1361. User: NewIdentScreenName("them"),
  1362. BlocksYou: true,
  1363. YouBlock: false,
  1364. IsOnTheirList: true,
  1365. IsOnYourList: true,
  1366. },
  1367. },
  1368. },
  1369. {
  1370. name: "[me, client-side]: Allow only the users below [them, server-side]: Block all users",
  1371. me: NewIdentScreenName("me"),
  1372. clientSideLists: map[IdentScreenName]buddyList{
  1373. NewIdentScreenName("me"): {
  1374. privacyMode: wire.FeedbagPDModePermitSome,
  1375. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1376. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1377. denyList: []IdentScreenName{},
  1378. },
  1379. },
  1380. serverSideLists: map[IdentScreenName]buddyList{
  1381. NewIdentScreenName("them"): {
  1382. privacyMode: wire.FeedbagPDModeDenyAll,
  1383. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1384. permitList: []IdentScreenName{},
  1385. denyList: []IdentScreenName{},
  1386. },
  1387. },
  1388. expect: []Relationship{
  1389. {
  1390. User: NewIdentScreenName("them"),
  1391. BlocksYou: true,
  1392. YouBlock: false,
  1393. IsOnTheirList: true,
  1394. IsOnYourList: true,
  1395. },
  1396. },
  1397. },
  1398. {
  1399. name: "[me, client-side]: Allow only the users below [them, client-side]: Block the users Below",
  1400. me: NewIdentScreenName("me"),
  1401. clientSideLists: map[IdentScreenName]buddyList{
  1402. NewIdentScreenName("me"): {
  1403. privacyMode: wire.FeedbagPDModePermitSome,
  1404. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1405. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1406. denyList: []IdentScreenName{},
  1407. },
  1408. NewIdentScreenName("them"): {
  1409. privacyMode: wire.FeedbagPDModeDenySome,
  1410. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1411. permitList: []IdentScreenName{},
  1412. denyList: []IdentScreenName{NewIdentScreenName("me")},
  1413. },
  1414. },
  1415. serverSideLists: map[IdentScreenName]buddyList{},
  1416. expect: []Relationship{
  1417. {
  1418. User: NewIdentScreenName("them"),
  1419. BlocksYou: true,
  1420. YouBlock: false,
  1421. IsOnTheirList: true,
  1422. IsOnYourList: true,
  1423. },
  1424. },
  1425. },
  1426. {
  1427. name: "[me, client-side]: Allow only the users below [them, server-side]: Block the users Below",
  1428. me: NewIdentScreenName("me"),
  1429. clientSideLists: map[IdentScreenName]buddyList{
  1430. NewIdentScreenName("me"): {
  1431. privacyMode: wire.FeedbagPDModePermitSome,
  1432. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1433. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1434. denyList: []IdentScreenName{},
  1435. },
  1436. },
  1437. serverSideLists: map[IdentScreenName]buddyList{
  1438. NewIdentScreenName("them"): {
  1439. privacyMode: wire.FeedbagPDModeDenySome,
  1440. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1441. permitList: []IdentScreenName{},
  1442. denyList: []IdentScreenName{NewIdentScreenName("me")},
  1443. },
  1444. },
  1445. expect: []Relationship{
  1446. {
  1447. User: NewIdentScreenName("them"),
  1448. BlocksYou: true,
  1449. YouBlock: false,
  1450. IsOnTheirList: true,
  1451. IsOnYourList: true,
  1452. },
  1453. },
  1454. },
  1455. {
  1456. name: "[me, server-side]: Allow only the users below [them, client-side]: Allow all users to contact me",
  1457. me: NewIdentScreenName("me"),
  1458. clientSideLists: map[IdentScreenName]buddyList{
  1459. NewIdentScreenName("them"): {
  1460. privacyMode: wire.FeedbagPDModePermitAll,
  1461. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1462. permitList: []IdentScreenName{},
  1463. denyList: []IdentScreenName{},
  1464. },
  1465. },
  1466. serverSideLists: map[IdentScreenName]buddyList{
  1467. NewIdentScreenName("me"): {
  1468. privacyMode: wire.FeedbagPDModePermitSome,
  1469. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1470. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1471. denyList: []IdentScreenName{},
  1472. },
  1473. },
  1474. expect: []Relationship{
  1475. {
  1476. User: NewIdentScreenName("them"),
  1477. BlocksYou: false,
  1478. YouBlock: false,
  1479. IsOnTheirList: true,
  1480. IsOnYourList: true,
  1481. },
  1482. },
  1483. },
  1484. {
  1485. name: "[me, server-side]: Allow only the users below [them, server-side]: Allow all users to contact me",
  1486. me: NewIdentScreenName("me"),
  1487. clientSideLists: map[IdentScreenName]buddyList{},
  1488. serverSideLists: map[IdentScreenName]buddyList{
  1489. NewIdentScreenName("me"): {
  1490. privacyMode: wire.FeedbagPDModePermitSome,
  1491. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1492. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1493. denyList: []IdentScreenName{},
  1494. },
  1495. NewIdentScreenName("them"): {
  1496. privacyMode: wire.FeedbagPDModePermitAll,
  1497. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1498. permitList: []IdentScreenName{},
  1499. denyList: []IdentScreenName{},
  1500. },
  1501. },
  1502. expect: []Relationship{
  1503. {
  1504. User: NewIdentScreenName("them"),
  1505. BlocksYou: false,
  1506. YouBlock: false,
  1507. IsOnTheirList: true,
  1508. IsOnYourList: true,
  1509. },
  1510. },
  1511. },
  1512. {
  1513. name: "[me, server-side]: Allow only the users below [them, client-side]: Allow only users on my Buddy List",
  1514. me: NewIdentScreenName("me"),
  1515. clientSideLists: map[IdentScreenName]buddyList{
  1516. NewIdentScreenName("them"): {
  1517. privacyMode: wire.FeedbagPDModePermitOnList,
  1518. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1519. permitList: []IdentScreenName{},
  1520. denyList: []IdentScreenName{},
  1521. },
  1522. },
  1523. serverSideLists: map[IdentScreenName]buddyList{
  1524. NewIdentScreenName("me"): {
  1525. privacyMode: wire.FeedbagPDModePermitSome,
  1526. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1527. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1528. denyList: []IdentScreenName{},
  1529. },
  1530. },
  1531. expect: []Relationship{
  1532. {
  1533. User: NewIdentScreenName("them"),
  1534. BlocksYou: false,
  1535. YouBlock: false,
  1536. IsOnTheirList: true,
  1537. IsOnYourList: true,
  1538. },
  1539. },
  1540. },
  1541. {
  1542. name: "[me, server-side]: Allow only the users below [them, server-side]: Allow only users on my Buddy List",
  1543. me: NewIdentScreenName("me"),
  1544. clientSideLists: map[IdentScreenName]buddyList{},
  1545. serverSideLists: map[IdentScreenName]buddyList{
  1546. NewIdentScreenName("me"): {
  1547. privacyMode: wire.FeedbagPDModePermitSome,
  1548. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1549. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1550. denyList: []IdentScreenName{},
  1551. },
  1552. NewIdentScreenName("them"): {
  1553. privacyMode: wire.FeedbagPDModePermitOnList,
  1554. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1555. permitList: []IdentScreenName{},
  1556. denyList: []IdentScreenName{},
  1557. },
  1558. },
  1559. expect: []Relationship{
  1560. {
  1561. User: NewIdentScreenName("them"),
  1562. BlocksYou: false,
  1563. YouBlock: false,
  1564. IsOnTheirList: true,
  1565. IsOnYourList: true,
  1566. },
  1567. },
  1568. },
  1569. {
  1570. name: "[me, server-side]: Allow only the users below [them, client-side]: Allow only the users below",
  1571. me: NewIdentScreenName("me"),
  1572. clientSideLists: map[IdentScreenName]buddyList{
  1573. NewIdentScreenName("them"): {
  1574. privacyMode: wire.FeedbagPDModePermitSome,
  1575. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1576. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1577. denyList: []IdentScreenName{},
  1578. },
  1579. },
  1580. serverSideLists: map[IdentScreenName]buddyList{
  1581. NewIdentScreenName("me"): {
  1582. privacyMode: wire.FeedbagPDModePermitSome,
  1583. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1584. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1585. denyList: []IdentScreenName{},
  1586. },
  1587. },
  1588. expect: []Relationship{
  1589. {
  1590. User: NewIdentScreenName("them"),
  1591. BlocksYou: false,
  1592. YouBlock: false,
  1593. IsOnTheirList: true,
  1594. IsOnYourList: true,
  1595. },
  1596. },
  1597. },
  1598. {
  1599. name: "[me, server-side]: Allow only the users below [them, server-side]: Allow only the users below",
  1600. me: NewIdentScreenName("me"),
  1601. clientSideLists: map[IdentScreenName]buddyList{},
  1602. serverSideLists: map[IdentScreenName]buddyList{
  1603. NewIdentScreenName("me"): {
  1604. privacyMode: wire.FeedbagPDModePermitSome,
  1605. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1606. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1607. denyList: []IdentScreenName{},
  1608. },
  1609. NewIdentScreenName("them"): {
  1610. privacyMode: wire.FeedbagPDModePermitSome,
  1611. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1612. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1613. denyList: []IdentScreenName{},
  1614. },
  1615. },
  1616. expect: []Relationship{
  1617. {
  1618. User: NewIdentScreenName("them"),
  1619. BlocksYou: false,
  1620. YouBlock: false,
  1621. IsOnTheirList: true,
  1622. IsOnYourList: true,
  1623. },
  1624. },
  1625. },
  1626. {
  1627. name: "[me, server-side]: Allow only the users below [them, client-side]: Block all users",
  1628. me: NewIdentScreenName("me"),
  1629. clientSideLists: map[IdentScreenName]buddyList{
  1630. NewIdentScreenName("them"): {
  1631. privacyMode: wire.FeedbagPDModeDenyAll,
  1632. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1633. permitList: []IdentScreenName{},
  1634. denyList: []IdentScreenName{},
  1635. },
  1636. },
  1637. serverSideLists: map[IdentScreenName]buddyList{
  1638. NewIdentScreenName("me"): {
  1639. privacyMode: wire.FeedbagPDModePermitSome,
  1640. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1641. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1642. denyList: []IdentScreenName{},
  1643. },
  1644. },
  1645. expect: []Relationship{
  1646. {
  1647. User: NewIdentScreenName("them"),
  1648. BlocksYou: true,
  1649. YouBlock: false,
  1650. IsOnTheirList: true,
  1651. IsOnYourList: true,
  1652. },
  1653. },
  1654. },
  1655. {
  1656. name: "[me, server-side]: Allow only the users below [them, server-side]: Block all users",
  1657. me: NewIdentScreenName("me"),
  1658. clientSideLists: map[IdentScreenName]buddyList{},
  1659. serverSideLists: map[IdentScreenName]buddyList{
  1660. NewIdentScreenName("me"): {
  1661. privacyMode: wire.FeedbagPDModePermitSome,
  1662. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1663. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1664. denyList: []IdentScreenName{},
  1665. },
  1666. NewIdentScreenName("them"): {
  1667. privacyMode: wire.FeedbagPDModeDenyAll,
  1668. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1669. permitList: []IdentScreenName{},
  1670. denyList: []IdentScreenName{},
  1671. },
  1672. },
  1673. expect: []Relationship{
  1674. {
  1675. User: NewIdentScreenName("them"),
  1676. BlocksYou: true,
  1677. YouBlock: false,
  1678. IsOnTheirList: true,
  1679. IsOnYourList: true,
  1680. },
  1681. },
  1682. },
  1683. {
  1684. name: "[me, server-side]: Allow only the users below [them, client-side]: Block the users Below",
  1685. me: NewIdentScreenName("me"),
  1686. clientSideLists: map[IdentScreenName]buddyList{
  1687. NewIdentScreenName("them"): {
  1688. privacyMode: wire.FeedbagPDModeDenySome,
  1689. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1690. permitList: []IdentScreenName{},
  1691. denyList: []IdentScreenName{NewIdentScreenName("me")},
  1692. },
  1693. },
  1694. serverSideLists: map[IdentScreenName]buddyList{
  1695. NewIdentScreenName("me"): {
  1696. privacyMode: wire.FeedbagPDModePermitSome,
  1697. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1698. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1699. denyList: []IdentScreenName{},
  1700. },
  1701. },
  1702. expect: []Relationship{
  1703. {
  1704. User: NewIdentScreenName("them"),
  1705. BlocksYou: true,
  1706. YouBlock: false,
  1707. IsOnTheirList: true,
  1708. IsOnYourList: true,
  1709. },
  1710. },
  1711. },
  1712. {
  1713. name: "[me, server-side]: Allow only the users below [them, server-side]: Block the users Below",
  1714. me: NewIdentScreenName("me"),
  1715. clientSideLists: map[IdentScreenName]buddyList{},
  1716. serverSideLists: map[IdentScreenName]buddyList{
  1717. NewIdentScreenName("me"): {
  1718. privacyMode: wire.FeedbagPDModePermitSome,
  1719. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1720. permitList: []IdentScreenName{NewIdentScreenName("them")},
  1721. denyList: []IdentScreenName{},
  1722. },
  1723. NewIdentScreenName("them"): {
  1724. privacyMode: wire.FeedbagPDModeDenySome,
  1725. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1726. permitList: []IdentScreenName{},
  1727. denyList: []IdentScreenName{NewIdentScreenName("me")},
  1728. },
  1729. },
  1730. expect: []Relationship{
  1731. {
  1732. User: NewIdentScreenName("them"),
  1733. BlocksYou: true,
  1734. YouBlock: false,
  1735. IsOnTheirList: true,
  1736. IsOnYourList: true,
  1737. },
  1738. },
  1739. },
  1740. {
  1741. name: "[me, client-side]: Block all users [them, client-side]: Allow all users to contact me",
  1742. me: NewIdentScreenName("me"),
  1743. clientSideLists: map[IdentScreenName]buddyList{
  1744. NewIdentScreenName("me"): {
  1745. privacyMode: wire.FeedbagPDModeDenyAll,
  1746. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1747. permitList: []IdentScreenName{},
  1748. denyList: []IdentScreenName{},
  1749. },
  1750. NewIdentScreenName("them"): {
  1751. privacyMode: wire.FeedbagPDModePermitAll,
  1752. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1753. permitList: []IdentScreenName{},
  1754. denyList: []IdentScreenName{},
  1755. },
  1756. },
  1757. serverSideLists: map[IdentScreenName]buddyList{},
  1758. expect: []Relationship{
  1759. {
  1760. User: NewIdentScreenName("them"),
  1761. BlocksYou: false,
  1762. YouBlock: true,
  1763. IsOnTheirList: true,
  1764. IsOnYourList: true,
  1765. },
  1766. },
  1767. },
  1768. {
  1769. name: "[me, client-side]: Block all users [them, server-side]: Allow all users to contact me",
  1770. me: NewIdentScreenName("me"),
  1771. clientSideLists: map[IdentScreenName]buddyList{
  1772. NewIdentScreenName("me"): {
  1773. privacyMode: wire.FeedbagPDModeDenyAll,
  1774. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1775. permitList: []IdentScreenName{},
  1776. denyList: []IdentScreenName{},
  1777. },
  1778. },
  1779. serverSideLists: map[IdentScreenName]buddyList{
  1780. NewIdentScreenName("them"): {
  1781. privacyMode: wire.FeedbagPDModePermitAll,
  1782. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1783. permitList: []IdentScreenName{},
  1784. denyList: []IdentScreenName{},
  1785. },
  1786. },
  1787. expect: []Relationship{
  1788. {
  1789. User: NewIdentScreenName("them"),
  1790. BlocksYou: false,
  1791. YouBlock: true,
  1792. IsOnTheirList: true,
  1793. IsOnYourList: true,
  1794. },
  1795. },
  1796. },
  1797. {
  1798. name: "[me, client-side]: Block all users [them, client-side]: Allow only users on my Buddy List",
  1799. me: NewIdentScreenName("me"),
  1800. clientSideLists: map[IdentScreenName]buddyList{
  1801. NewIdentScreenName("me"): {
  1802. privacyMode: wire.FeedbagPDModeDenyAll,
  1803. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1804. permitList: []IdentScreenName{},
  1805. denyList: []IdentScreenName{},
  1806. },
  1807. NewIdentScreenName("them"): {
  1808. privacyMode: wire.FeedbagPDModePermitOnList,
  1809. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1810. permitList: []IdentScreenName{},
  1811. denyList: []IdentScreenName{},
  1812. },
  1813. },
  1814. serverSideLists: map[IdentScreenName]buddyList{},
  1815. expect: []Relationship{
  1816. {
  1817. User: NewIdentScreenName("them"),
  1818. BlocksYou: false,
  1819. YouBlock: true,
  1820. IsOnTheirList: true,
  1821. IsOnYourList: true,
  1822. },
  1823. },
  1824. },
  1825. {
  1826. name: "[me, client-side]: Block all users [them, server-side]: Allow only users on my Buddy List",
  1827. me: NewIdentScreenName("me"),
  1828. clientSideLists: map[IdentScreenName]buddyList{
  1829. NewIdentScreenName("me"): {
  1830. privacyMode: wire.FeedbagPDModeDenyAll,
  1831. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1832. permitList: []IdentScreenName{},
  1833. denyList: []IdentScreenName{},
  1834. },
  1835. },
  1836. serverSideLists: map[IdentScreenName]buddyList{
  1837. NewIdentScreenName("them"): {
  1838. privacyMode: wire.FeedbagPDModePermitOnList,
  1839. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1840. permitList: []IdentScreenName{},
  1841. denyList: []IdentScreenName{},
  1842. },
  1843. },
  1844. expect: []Relationship{
  1845. {
  1846. User: NewIdentScreenName("them"),
  1847. BlocksYou: false,
  1848. YouBlock: true,
  1849. IsOnTheirList: true,
  1850. IsOnYourList: true,
  1851. },
  1852. },
  1853. },
  1854. {
  1855. name: "[me, client-side]: Block all users [them, client-side]: Allow only the users below",
  1856. me: NewIdentScreenName("me"),
  1857. clientSideLists: map[IdentScreenName]buddyList{
  1858. NewIdentScreenName("me"): {
  1859. privacyMode: wire.FeedbagPDModeDenyAll,
  1860. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1861. permitList: []IdentScreenName{},
  1862. denyList: []IdentScreenName{},
  1863. },
  1864. NewIdentScreenName("them"): {
  1865. privacyMode: wire.FeedbagPDModePermitSome,
  1866. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1867. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1868. denyList: []IdentScreenName{},
  1869. },
  1870. },
  1871. serverSideLists: map[IdentScreenName]buddyList{},
  1872. expect: []Relationship{
  1873. {
  1874. User: NewIdentScreenName("them"),
  1875. BlocksYou: false,
  1876. YouBlock: true,
  1877. IsOnTheirList: true,
  1878. IsOnYourList: true,
  1879. },
  1880. },
  1881. },
  1882. {
  1883. name: "[me, client-side]: Block all users [them, server-side]: Allow only the users below",
  1884. me: NewIdentScreenName("me"),
  1885. clientSideLists: map[IdentScreenName]buddyList{
  1886. NewIdentScreenName("me"): {
  1887. privacyMode: wire.FeedbagPDModeDenyAll,
  1888. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1889. permitList: []IdentScreenName{},
  1890. denyList: []IdentScreenName{},
  1891. },
  1892. },
  1893. serverSideLists: map[IdentScreenName]buddyList{
  1894. NewIdentScreenName("them"): {
  1895. privacyMode: wire.FeedbagPDModePermitSome,
  1896. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1897. permitList: []IdentScreenName{NewIdentScreenName("me")},
  1898. denyList: []IdentScreenName{},
  1899. },
  1900. },
  1901. expect: []Relationship{
  1902. {
  1903. User: NewIdentScreenName("them"),
  1904. BlocksYou: false,
  1905. YouBlock: true,
  1906. IsOnTheirList: true,
  1907. IsOnYourList: true,
  1908. },
  1909. },
  1910. },
  1911. {
  1912. name: "[me, client-side]: Block all users [them, client-side]: Block all users",
  1913. me: NewIdentScreenName("me"),
  1914. clientSideLists: map[IdentScreenName]buddyList{
  1915. NewIdentScreenName("me"): {
  1916. privacyMode: wire.FeedbagPDModeDenyAll,
  1917. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1918. permitList: []IdentScreenName{},
  1919. denyList: []IdentScreenName{},
  1920. },
  1921. NewIdentScreenName("them"): {
  1922. privacyMode: wire.FeedbagPDModeDenyAll,
  1923. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1924. permitList: []IdentScreenName{},
  1925. denyList: []IdentScreenName{},
  1926. },
  1927. },
  1928. serverSideLists: map[IdentScreenName]buddyList{},
  1929. expect: []Relationship{
  1930. {
  1931. User: NewIdentScreenName("them"),
  1932. BlocksYou: true,
  1933. YouBlock: true,
  1934. IsOnTheirList: true,
  1935. IsOnYourList: true,
  1936. },
  1937. },
  1938. },
  1939. {
  1940. name: "[me, client-side]: Block all users [them, server-side]: Block all users",
  1941. me: NewIdentScreenName("me"),
  1942. clientSideLists: map[IdentScreenName]buddyList{
  1943. NewIdentScreenName("me"): {
  1944. privacyMode: wire.FeedbagPDModeDenyAll,
  1945. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1946. permitList: []IdentScreenName{},
  1947. denyList: []IdentScreenName{},
  1948. },
  1949. },
  1950. serverSideLists: map[IdentScreenName]buddyList{
  1951. NewIdentScreenName("them"): {
  1952. privacyMode: wire.FeedbagPDModeDenyAll,
  1953. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1954. permitList: []IdentScreenName{},
  1955. denyList: []IdentScreenName{},
  1956. },
  1957. },
  1958. expect: []Relationship{
  1959. {
  1960. User: NewIdentScreenName("them"),
  1961. BlocksYou: true,
  1962. YouBlock: true,
  1963. IsOnTheirList: true,
  1964. IsOnYourList: true,
  1965. },
  1966. },
  1967. },
  1968. {
  1969. name: "[me, client-side]: Block all users [them, client-side]: Block the users Below",
  1970. me: NewIdentScreenName("me"),
  1971. clientSideLists: map[IdentScreenName]buddyList{
  1972. NewIdentScreenName("me"): {
  1973. privacyMode: wire.FeedbagPDModeDenyAll,
  1974. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  1975. permitList: []IdentScreenName{},
  1976. denyList: []IdentScreenName{},
  1977. },
  1978. NewIdentScreenName("them"): {
  1979. privacyMode: wire.FeedbagPDModeDenySome,
  1980. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  1981. permitList: []IdentScreenName{},
  1982. denyList: []IdentScreenName{NewIdentScreenName("me")},
  1983. },
  1984. },
  1985. serverSideLists: map[IdentScreenName]buddyList{},
  1986. expect: []Relationship{
  1987. {
  1988. User: NewIdentScreenName("them"),
  1989. BlocksYou: true,
  1990. YouBlock: true,
  1991. IsOnTheirList: true,
  1992. IsOnYourList: true,
  1993. },
  1994. },
  1995. },
  1996. {
  1997. name: "[me, client-side]: Block all users [them, server-side]: Block the users Below",
  1998. me: NewIdentScreenName("me"),
  1999. clientSideLists: map[IdentScreenName]buddyList{
  2000. NewIdentScreenName("me"): {
  2001. privacyMode: wire.FeedbagPDModeDenyAll,
  2002. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2003. permitList: []IdentScreenName{},
  2004. denyList: []IdentScreenName{},
  2005. },
  2006. },
  2007. serverSideLists: map[IdentScreenName]buddyList{
  2008. NewIdentScreenName("them"): {
  2009. privacyMode: wire.FeedbagPDModeDenySome,
  2010. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2011. permitList: []IdentScreenName{},
  2012. denyList: []IdentScreenName{NewIdentScreenName("me")},
  2013. },
  2014. },
  2015. expect: []Relationship{
  2016. {
  2017. User: NewIdentScreenName("them"),
  2018. BlocksYou: true,
  2019. YouBlock: true,
  2020. IsOnTheirList: true,
  2021. IsOnYourList: true,
  2022. },
  2023. },
  2024. },
  2025. {
  2026. name: "[me, server-side]: Block all users [them, client-side]: Allow all users to contact me",
  2027. me: NewIdentScreenName("me"),
  2028. clientSideLists: map[IdentScreenName]buddyList{
  2029. NewIdentScreenName("them"): {
  2030. privacyMode: wire.FeedbagPDModePermitAll,
  2031. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2032. permitList: []IdentScreenName{},
  2033. denyList: []IdentScreenName{},
  2034. },
  2035. },
  2036. serverSideLists: map[IdentScreenName]buddyList{
  2037. NewIdentScreenName("me"): {
  2038. privacyMode: wire.FeedbagPDModeDenyAll,
  2039. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2040. permitList: []IdentScreenName{},
  2041. denyList: []IdentScreenName{},
  2042. },
  2043. },
  2044. expect: []Relationship{
  2045. {
  2046. User: NewIdentScreenName("them"),
  2047. BlocksYou: false,
  2048. YouBlock: true,
  2049. IsOnTheirList: true,
  2050. IsOnYourList: true,
  2051. },
  2052. },
  2053. },
  2054. {
  2055. name: "[me, server-side]: Block all users [them, server-side]: Allow all users to contact me",
  2056. me: NewIdentScreenName("me"),
  2057. clientSideLists: map[IdentScreenName]buddyList{},
  2058. serverSideLists: map[IdentScreenName]buddyList{
  2059. NewIdentScreenName("me"): {
  2060. privacyMode: wire.FeedbagPDModeDenyAll,
  2061. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2062. permitList: []IdentScreenName{},
  2063. denyList: []IdentScreenName{},
  2064. },
  2065. NewIdentScreenName("them"): {
  2066. privacyMode: wire.FeedbagPDModePermitAll,
  2067. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2068. permitList: []IdentScreenName{},
  2069. denyList: []IdentScreenName{},
  2070. },
  2071. },
  2072. expect: []Relationship{
  2073. {
  2074. User: NewIdentScreenName("them"),
  2075. BlocksYou: false,
  2076. YouBlock: true,
  2077. IsOnTheirList: true,
  2078. IsOnYourList: true,
  2079. },
  2080. },
  2081. },
  2082. {
  2083. name: "[me, server-side]: Block all users [them, client-side]: Allow only users on my Buddy List",
  2084. me: NewIdentScreenName("me"),
  2085. clientSideLists: map[IdentScreenName]buddyList{
  2086. NewIdentScreenName("them"): {
  2087. privacyMode: wire.FeedbagPDModePermitOnList,
  2088. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2089. permitList: []IdentScreenName{},
  2090. denyList: []IdentScreenName{},
  2091. },
  2092. },
  2093. serverSideLists: map[IdentScreenName]buddyList{
  2094. NewIdentScreenName("me"): {
  2095. privacyMode: wire.FeedbagPDModeDenyAll,
  2096. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2097. permitList: []IdentScreenName{},
  2098. denyList: []IdentScreenName{},
  2099. },
  2100. },
  2101. expect: []Relationship{
  2102. {
  2103. User: NewIdentScreenName("them"),
  2104. BlocksYou: false,
  2105. YouBlock: true,
  2106. IsOnTheirList: true,
  2107. IsOnYourList: true,
  2108. },
  2109. },
  2110. },
  2111. {
  2112. name: "[me, server-side]: Block all users [them, server-side]: Allow only users on my Buddy List",
  2113. me: NewIdentScreenName("me"),
  2114. clientSideLists: map[IdentScreenName]buddyList{},
  2115. serverSideLists: map[IdentScreenName]buddyList{
  2116. NewIdentScreenName("me"): {
  2117. privacyMode: wire.FeedbagPDModeDenyAll,
  2118. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2119. permitList: []IdentScreenName{},
  2120. denyList: []IdentScreenName{},
  2121. },
  2122. NewIdentScreenName("them"): {
  2123. privacyMode: wire.FeedbagPDModePermitOnList,
  2124. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2125. permitList: []IdentScreenName{},
  2126. denyList: []IdentScreenName{},
  2127. },
  2128. },
  2129. expect: []Relationship{
  2130. {
  2131. User: NewIdentScreenName("them"),
  2132. BlocksYou: false,
  2133. YouBlock: true,
  2134. IsOnTheirList: true,
  2135. IsOnYourList: true,
  2136. },
  2137. },
  2138. },
  2139. {
  2140. name: "[me, server-side]: Block all users [them, client-side]: Allow only the users below",
  2141. me: NewIdentScreenName("me"),
  2142. clientSideLists: map[IdentScreenName]buddyList{
  2143. NewIdentScreenName("them"): {
  2144. privacyMode: wire.FeedbagPDModePermitSome,
  2145. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2146. permitList: []IdentScreenName{NewIdentScreenName("me")},
  2147. denyList: []IdentScreenName{},
  2148. },
  2149. },
  2150. serverSideLists: map[IdentScreenName]buddyList{
  2151. NewIdentScreenName("me"): {
  2152. privacyMode: wire.FeedbagPDModeDenyAll,
  2153. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2154. permitList: []IdentScreenName{},
  2155. denyList: []IdentScreenName{},
  2156. },
  2157. },
  2158. expect: []Relationship{
  2159. {
  2160. User: NewIdentScreenName("them"),
  2161. BlocksYou: false,
  2162. YouBlock: true,
  2163. IsOnTheirList: true,
  2164. IsOnYourList: true,
  2165. },
  2166. },
  2167. },
  2168. {
  2169. name: "[me, server-side]: Block all users [them, server-side]: Allow only the users below",
  2170. me: NewIdentScreenName("me"),
  2171. clientSideLists: map[IdentScreenName]buddyList{},
  2172. serverSideLists: map[IdentScreenName]buddyList{
  2173. NewIdentScreenName("me"): {
  2174. privacyMode: wire.FeedbagPDModeDenyAll,
  2175. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2176. permitList: []IdentScreenName{},
  2177. denyList: []IdentScreenName{},
  2178. },
  2179. NewIdentScreenName("them"): {
  2180. privacyMode: wire.FeedbagPDModePermitSome,
  2181. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2182. permitList: []IdentScreenName{NewIdentScreenName("me")},
  2183. denyList: []IdentScreenName{},
  2184. },
  2185. },
  2186. expect: []Relationship{
  2187. {
  2188. User: NewIdentScreenName("them"),
  2189. BlocksYou: false,
  2190. YouBlock: true,
  2191. IsOnTheirList: true,
  2192. IsOnYourList: true,
  2193. },
  2194. },
  2195. },
  2196. {
  2197. name: "[me, server-side]: Block all users [them, client-side]: Block all users",
  2198. me: NewIdentScreenName("me"),
  2199. clientSideLists: map[IdentScreenName]buddyList{
  2200. NewIdentScreenName("them"): {
  2201. privacyMode: wire.FeedbagPDModeDenyAll,
  2202. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2203. permitList: []IdentScreenName{},
  2204. denyList: []IdentScreenName{},
  2205. },
  2206. },
  2207. serverSideLists: map[IdentScreenName]buddyList{
  2208. NewIdentScreenName("me"): {
  2209. privacyMode: wire.FeedbagPDModeDenyAll,
  2210. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2211. permitList: []IdentScreenName{},
  2212. denyList: []IdentScreenName{},
  2213. },
  2214. },
  2215. expect: []Relationship{
  2216. {
  2217. User: NewIdentScreenName("them"),
  2218. BlocksYou: true,
  2219. YouBlock: true,
  2220. IsOnTheirList: true,
  2221. IsOnYourList: true,
  2222. },
  2223. },
  2224. },
  2225. {
  2226. name: "[me, server-side]: Block all users [them, server-side]: Block all users",
  2227. me: NewIdentScreenName("me"),
  2228. clientSideLists: map[IdentScreenName]buddyList{},
  2229. serverSideLists: map[IdentScreenName]buddyList{
  2230. NewIdentScreenName("me"): {
  2231. privacyMode: wire.FeedbagPDModeDenyAll,
  2232. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2233. permitList: []IdentScreenName{},
  2234. denyList: []IdentScreenName{},
  2235. },
  2236. NewIdentScreenName("them"): {
  2237. privacyMode: wire.FeedbagPDModeDenyAll,
  2238. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2239. permitList: []IdentScreenName{},
  2240. denyList: []IdentScreenName{},
  2241. },
  2242. },
  2243. expect: []Relationship{
  2244. {
  2245. User: NewIdentScreenName("them"),
  2246. BlocksYou: true,
  2247. YouBlock: true,
  2248. IsOnTheirList: true,
  2249. IsOnYourList: true,
  2250. },
  2251. },
  2252. },
  2253. {
  2254. name: "[me, server-side]: Block all users [them, client-side]: Block the users Below",
  2255. me: NewIdentScreenName("me"),
  2256. clientSideLists: map[IdentScreenName]buddyList{
  2257. NewIdentScreenName("them"): {
  2258. privacyMode: wire.FeedbagPDModeDenySome,
  2259. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2260. permitList: []IdentScreenName{},
  2261. denyList: []IdentScreenName{NewIdentScreenName("me")},
  2262. },
  2263. },
  2264. serverSideLists: map[IdentScreenName]buddyList{
  2265. NewIdentScreenName("me"): {
  2266. privacyMode: wire.FeedbagPDModeDenyAll,
  2267. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2268. permitList: []IdentScreenName{},
  2269. denyList: []IdentScreenName{},
  2270. },
  2271. },
  2272. expect: []Relationship{
  2273. {
  2274. User: NewIdentScreenName("them"),
  2275. BlocksYou: true,
  2276. YouBlock: true,
  2277. IsOnTheirList: true,
  2278. IsOnYourList: true,
  2279. },
  2280. },
  2281. },
  2282. {
  2283. name: "[me, server-side]: Block all users [them, server-side]: Block the users Below",
  2284. me: NewIdentScreenName("me"),
  2285. clientSideLists: map[IdentScreenName]buddyList{},
  2286. serverSideLists: map[IdentScreenName]buddyList{
  2287. NewIdentScreenName("me"): {
  2288. privacyMode: wire.FeedbagPDModeDenyAll,
  2289. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2290. permitList: []IdentScreenName{},
  2291. denyList: []IdentScreenName{},
  2292. },
  2293. NewIdentScreenName("them"): {
  2294. privacyMode: wire.FeedbagPDModeDenySome,
  2295. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2296. permitList: []IdentScreenName{},
  2297. denyList: []IdentScreenName{NewIdentScreenName("me")},
  2298. },
  2299. },
  2300. expect: []Relationship{
  2301. {
  2302. User: NewIdentScreenName("them"),
  2303. BlocksYou: true,
  2304. YouBlock: true,
  2305. IsOnTheirList: true,
  2306. IsOnYourList: true,
  2307. },
  2308. },
  2309. },
  2310. {
  2311. name: "[me, client-side]: Block the users Below [them, client-side]: Allow all users to contact me",
  2312. me: NewIdentScreenName("me"),
  2313. clientSideLists: map[IdentScreenName]buddyList{
  2314. NewIdentScreenName("me"): {
  2315. privacyMode: wire.FeedbagPDModeDenySome,
  2316. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2317. permitList: []IdentScreenName{},
  2318. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2319. },
  2320. NewIdentScreenName("them"): {
  2321. privacyMode: wire.FeedbagPDModePermitAll,
  2322. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2323. permitList: []IdentScreenName{},
  2324. denyList: []IdentScreenName{},
  2325. },
  2326. },
  2327. serverSideLists: map[IdentScreenName]buddyList{},
  2328. expect: []Relationship{
  2329. {
  2330. User: NewIdentScreenName("them"),
  2331. BlocksYou: false,
  2332. YouBlock: true,
  2333. IsOnTheirList: true,
  2334. IsOnYourList: true,
  2335. },
  2336. },
  2337. },
  2338. {
  2339. name: "[me, client-side]: Block the users Below [them, server-side]: Allow all users to contact me",
  2340. me: NewIdentScreenName("me"),
  2341. clientSideLists: map[IdentScreenName]buddyList{
  2342. NewIdentScreenName("me"): {
  2343. privacyMode: wire.FeedbagPDModeDenySome,
  2344. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2345. permitList: []IdentScreenName{},
  2346. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2347. },
  2348. },
  2349. serverSideLists: map[IdentScreenName]buddyList{
  2350. NewIdentScreenName("them"): {
  2351. privacyMode: wire.FeedbagPDModePermitAll,
  2352. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2353. permitList: []IdentScreenName{},
  2354. denyList: []IdentScreenName{},
  2355. },
  2356. },
  2357. expect: []Relationship{
  2358. {
  2359. User: NewIdentScreenName("them"),
  2360. BlocksYou: false,
  2361. YouBlock: true,
  2362. IsOnTheirList: true,
  2363. IsOnYourList: true,
  2364. },
  2365. },
  2366. },
  2367. {
  2368. name: "[me, client-side]: Block the users Below [them, client-side]: Allow only users on my Buddy List",
  2369. me: NewIdentScreenName("me"),
  2370. clientSideLists: map[IdentScreenName]buddyList{
  2371. NewIdentScreenName("me"): {
  2372. privacyMode: wire.FeedbagPDModeDenySome,
  2373. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2374. permitList: []IdentScreenName{},
  2375. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2376. },
  2377. NewIdentScreenName("them"): {
  2378. privacyMode: wire.FeedbagPDModePermitOnList,
  2379. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2380. permitList: []IdentScreenName{},
  2381. denyList: []IdentScreenName{},
  2382. },
  2383. },
  2384. serverSideLists: map[IdentScreenName]buddyList{},
  2385. expect: []Relationship{
  2386. {
  2387. User: NewIdentScreenName("them"),
  2388. BlocksYou: false,
  2389. YouBlock: true,
  2390. IsOnTheirList: true,
  2391. IsOnYourList: true,
  2392. },
  2393. },
  2394. },
  2395. {
  2396. name: "[me, client-side]: Block the users Below [them, server-side]: Allow only users on my Buddy List",
  2397. me: NewIdentScreenName("me"),
  2398. clientSideLists: map[IdentScreenName]buddyList{
  2399. NewIdentScreenName("me"): {
  2400. privacyMode: wire.FeedbagPDModeDenySome,
  2401. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2402. permitList: []IdentScreenName{},
  2403. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2404. },
  2405. },
  2406. serverSideLists: map[IdentScreenName]buddyList{
  2407. NewIdentScreenName("them"): {
  2408. privacyMode: wire.FeedbagPDModePermitOnList,
  2409. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2410. permitList: []IdentScreenName{},
  2411. denyList: []IdentScreenName{},
  2412. },
  2413. },
  2414. expect: []Relationship{
  2415. {
  2416. User: NewIdentScreenName("them"),
  2417. BlocksYou: false,
  2418. YouBlock: true,
  2419. IsOnTheirList: true,
  2420. IsOnYourList: true,
  2421. },
  2422. },
  2423. },
  2424. {
  2425. name: "[me, client-side]: Block the users Below [them, client-side]: Allow only the users below",
  2426. me: NewIdentScreenName("me"),
  2427. clientSideLists: map[IdentScreenName]buddyList{
  2428. NewIdentScreenName("me"): {
  2429. privacyMode: wire.FeedbagPDModeDenySome,
  2430. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2431. permitList: []IdentScreenName{},
  2432. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2433. },
  2434. NewIdentScreenName("them"): {
  2435. privacyMode: wire.FeedbagPDModePermitSome,
  2436. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2437. permitList: []IdentScreenName{NewIdentScreenName("me")},
  2438. denyList: []IdentScreenName{},
  2439. },
  2440. },
  2441. serverSideLists: map[IdentScreenName]buddyList{},
  2442. expect: []Relationship{
  2443. {
  2444. User: NewIdentScreenName("them"),
  2445. BlocksYou: false,
  2446. YouBlock: true,
  2447. IsOnTheirList: true,
  2448. IsOnYourList: true,
  2449. },
  2450. },
  2451. },
  2452. {
  2453. name: "[me, client-side]: Block the users Below [them, server-side]: Allow only the users below",
  2454. me: NewIdentScreenName("me"),
  2455. clientSideLists: map[IdentScreenName]buddyList{
  2456. NewIdentScreenName("me"): {
  2457. privacyMode: wire.FeedbagPDModeDenySome,
  2458. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2459. permitList: []IdentScreenName{},
  2460. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2461. },
  2462. },
  2463. serverSideLists: map[IdentScreenName]buddyList{
  2464. NewIdentScreenName("them"): {
  2465. privacyMode: wire.FeedbagPDModePermitSome,
  2466. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2467. permitList: []IdentScreenName{NewIdentScreenName("me")},
  2468. denyList: []IdentScreenName{},
  2469. },
  2470. },
  2471. expect: []Relationship{
  2472. {
  2473. User: NewIdentScreenName("them"),
  2474. BlocksYou: false,
  2475. YouBlock: true,
  2476. IsOnTheirList: true,
  2477. IsOnYourList: true,
  2478. },
  2479. },
  2480. },
  2481. {
  2482. name: "[me, client-side]: Block the users Below [them, client-side]: Block all users",
  2483. me: NewIdentScreenName("me"),
  2484. clientSideLists: map[IdentScreenName]buddyList{
  2485. NewIdentScreenName("me"): {
  2486. privacyMode: wire.FeedbagPDModeDenySome,
  2487. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2488. permitList: []IdentScreenName{},
  2489. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2490. },
  2491. NewIdentScreenName("them"): {
  2492. privacyMode: wire.FeedbagPDModeDenyAll,
  2493. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2494. permitList: []IdentScreenName{},
  2495. denyList: []IdentScreenName{},
  2496. },
  2497. },
  2498. serverSideLists: map[IdentScreenName]buddyList{},
  2499. expect: []Relationship{
  2500. {
  2501. User: NewIdentScreenName("them"),
  2502. BlocksYou: true,
  2503. YouBlock: true,
  2504. IsOnTheirList: true,
  2505. IsOnYourList: true,
  2506. },
  2507. },
  2508. },
  2509. {
  2510. name: "[me, client-side]: Block the users Below [them, server-side]: Block all users",
  2511. me: NewIdentScreenName("me"),
  2512. clientSideLists: map[IdentScreenName]buddyList{
  2513. NewIdentScreenName("me"): {
  2514. privacyMode: wire.FeedbagPDModeDenySome,
  2515. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2516. permitList: []IdentScreenName{},
  2517. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2518. },
  2519. },
  2520. serverSideLists: map[IdentScreenName]buddyList{
  2521. NewIdentScreenName("them"): {
  2522. privacyMode: wire.FeedbagPDModeDenyAll,
  2523. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2524. permitList: []IdentScreenName{},
  2525. denyList: []IdentScreenName{},
  2526. },
  2527. },
  2528. expect: []Relationship{
  2529. {
  2530. User: NewIdentScreenName("them"),
  2531. BlocksYou: true,
  2532. YouBlock: true,
  2533. IsOnTheirList: true,
  2534. IsOnYourList: true,
  2535. },
  2536. },
  2537. },
  2538. {
  2539. name: "[me, client-side]: Block the users Below [them, client-side]: Block the users Below",
  2540. me: NewIdentScreenName("me"),
  2541. clientSideLists: map[IdentScreenName]buddyList{
  2542. NewIdentScreenName("me"): {
  2543. privacyMode: wire.FeedbagPDModeDenySome,
  2544. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2545. permitList: []IdentScreenName{},
  2546. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2547. },
  2548. NewIdentScreenName("them"): {
  2549. privacyMode: wire.FeedbagPDModeDenySome,
  2550. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2551. permitList: []IdentScreenName{},
  2552. denyList: []IdentScreenName{NewIdentScreenName("me")},
  2553. },
  2554. },
  2555. serverSideLists: map[IdentScreenName]buddyList{},
  2556. expect: []Relationship{
  2557. {
  2558. User: NewIdentScreenName("them"),
  2559. BlocksYou: true,
  2560. YouBlock: true,
  2561. IsOnTheirList: true,
  2562. IsOnYourList: true,
  2563. },
  2564. },
  2565. },
  2566. {
  2567. name: "[me, client-side]: Block the users Below [them, server-side]: Block the users Below",
  2568. me: NewIdentScreenName("me"),
  2569. clientSideLists: map[IdentScreenName]buddyList{
  2570. NewIdentScreenName("me"): {
  2571. privacyMode: wire.FeedbagPDModeDenySome,
  2572. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2573. permitList: []IdentScreenName{},
  2574. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2575. },
  2576. },
  2577. serverSideLists: map[IdentScreenName]buddyList{
  2578. NewIdentScreenName("them"): {
  2579. privacyMode: wire.FeedbagPDModeDenySome,
  2580. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2581. permitList: []IdentScreenName{},
  2582. denyList: []IdentScreenName{NewIdentScreenName("me")},
  2583. },
  2584. },
  2585. expect: []Relationship{
  2586. {
  2587. User: NewIdentScreenName("them"),
  2588. BlocksYou: true,
  2589. YouBlock: true,
  2590. IsOnTheirList: true,
  2591. IsOnYourList: true,
  2592. },
  2593. },
  2594. },
  2595. {
  2596. name: "[me, server-side]: Block the users Below [them, client-side]: Allow all users to contact me",
  2597. me: NewIdentScreenName("me"),
  2598. clientSideLists: map[IdentScreenName]buddyList{
  2599. NewIdentScreenName("them"): {
  2600. privacyMode: wire.FeedbagPDModePermitAll,
  2601. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2602. permitList: []IdentScreenName{},
  2603. denyList: []IdentScreenName{},
  2604. },
  2605. },
  2606. serverSideLists: map[IdentScreenName]buddyList{
  2607. NewIdentScreenName("me"): {
  2608. privacyMode: wire.FeedbagPDModeDenySome,
  2609. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2610. permitList: []IdentScreenName{},
  2611. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2612. },
  2613. },
  2614. expect: []Relationship{
  2615. {
  2616. User: NewIdentScreenName("them"),
  2617. BlocksYou: false,
  2618. YouBlock: true,
  2619. IsOnTheirList: true,
  2620. IsOnYourList: true,
  2621. },
  2622. },
  2623. },
  2624. {
  2625. name: "[me, server-side]: Block the users Below [them, server-side]: Allow all users to contact me",
  2626. me: NewIdentScreenName("me"),
  2627. clientSideLists: map[IdentScreenName]buddyList{},
  2628. serverSideLists: map[IdentScreenName]buddyList{
  2629. NewIdentScreenName("me"): {
  2630. privacyMode: wire.FeedbagPDModeDenySome,
  2631. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2632. permitList: []IdentScreenName{},
  2633. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2634. },
  2635. NewIdentScreenName("them"): {
  2636. privacyMode: wire.FeedbagPDModePermitAll,
  2637. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2638. permitList: []IdentScreenName{},
  2639. denyList: []IdentScreenName{},
  2640. },
  2641. },
  2642. expect: []Relationship{
  2643. {
  2644. User: NewIdentScreenName("them"),
  2645. BlocksYou: false,
  2646. YouBlock: true,
  2647. IsOnTheirList: true,
  2648. IsOnYourList: true,
  2649. },
  2650. },
  2651. },
  2652. {
  2653. name: "[me, server-side]: Block the users Below [them, client-side]: Allow only users on my Buddy List",
  2654. me: NewIdentScreenName("me"),
  2655. clientSideLists: map[IdentScreenName]buddyList{
  2656. NewIdentScreenName("them"): {
  2657. privacyMode: wire.FeedbagPDModePermitOnList,
  2658. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2659. permitList: []IdentScreenName{},
  2660. denyList: []IdentScreenName{},
  2661. },
  2662. },
  2663. serverSideLists: map[IdentScreenName]buddyList{
  2664. NewIdentScreenName("me"): {
  2665. privacyMode: wire.FeedbagPDModeDenySome,
  2666. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2667. permitList: []IdentScreenName{},
  2668. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2669. },
  2670. },
  2671. expect: []Relationship{
  2672. {
  2673. User: NewIdentScreenName("them"),
  2674. BlocksYou: false,
  2675. YouBlock: true,
  2676. IsOnTheirList: true,
  2677. IsOnYourList: true,
  2678. },
  2679. },
  2680. },
  2681. {
  2682. name: "[me, server-side]: Block the users Below [them, server-side]: Allow only users on my Buddy List",
  2683. me: NewIdentScreenName("me"),
  2684. clientSideLists: map[IdentScreenName]buddyList{},
  2685. serverSideLists: map[IdentScreenName]buddyList{
  2686. NewIdentScreenName("me"): {
  2687. privacyMode: wire.FeedbagPDModeDenySome,
  2688. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2689. permitList: []IdentScreenName{},
  2690. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2691. },
  2692. NewIdentScreenName("them"): {
  2693. privacyMode: wire.FeedbagPDModePermitOnList,
  2694. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2695. permitList: []IdentScreenName{},
  2696. denyList: []IdentScreenName{},
  2697. },
  2698. },
  2699. expect: []Relationship{
  2700. {
  2701. User: NewIdentScreenName("them"),
  2702. BlocksYou: false,
  2703. YouBlock: true,
  2704. IsOnTheirList: true,
  2705. IsOnYourList: true,
  2706. },
  2707. },
  2708. },
  2709. {
  2710. name: "[me, server-side]: Block the users Below [them, client-side]: Allow only the users below",
  2711. me: NewIdentScreenName("me"),
  2712. clientSideLists: map[IdentScreenName]buddyList{
  2713. NewIdentScreenName("them"): {
  2714. privacyMode: wire.FeedbagPDModePermitSome,
  2715. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2716. permitList: []IdentScreenName{NewIdentScreenName("me")},
  2717. denyList: []IdentScreenName{},
  2718. },
  2719. },
  2720. serverSideLists: map[IdentScreenName]buddyList{
  2721. NewIdentScreenName("me"): {
  2722. privacyMode: wire.FeedbagPDModeDenySome,
  2723. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2724. permitList: []IdentScreenName{},
  2725. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2726. },
  2727. },
  2728. expect: []Relationship{
  2729. {
  2730. User: NewIdentScreenName("them"),
  2731. BlocksYou: false,
  2732. YouBlock: true,
  2733. IsOnTheirList: true,
  2734. IsOnYourList: true,
  2735. },
  2736. },
  2737. },
  2738. {
  2739. name: "[me, server-side]: Block the users Below [them, server-side]: Allow only the users below",
  2740. me: NewIdentScreenName("me"),
  2741. clientSideLists: map[IdentScreenName]buddyList{},
  2742. serverSideLists: map[IdentScreenName]buddyList{
  2743. NewIdentScreenName("me"): {
  2744. privacyMode: wire.FeedbagPDModeDenySome,
  2745. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2746. permitList: []IdentScreenName{},
  2747. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2748. },
  2749. NewIdentScreenName("them"): {
  2750. privacyMode: wire.FeedbagPDModePermitSome,
  2751. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2752. permitList: []IdentScreenName{NewIdentScreenName("me")},
  2753. denyList: []IdentScreenName{},
  2754. },
  2755. },
  2756. expect: []Relationship{
  2757. {
  2758. User: NewIdentScreenName("them"),
  2759. BlocksYou: false,
  2760. YouBlock: true,
  2761. IsOnTheirList: true,
  2762. IsOnYourList: true,
  2763. },
  2764. },
  2765. },
  2766. {
  2767. name: "[me, server-side]: Block the users Below [them, client-side]: Block all users",
  2768. me: NewIdentScreenName("me"),
  2769. clientSideLists: map[IdentScreenName]buddyList{
  2770. NewIdentScreenName("them"): {
  2771. privacyMode: wire.FeedbagPDModeDenyAll,
  2772. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2773. permitList: []IdentScreenName{},
  2774. denyList: []IdentScreenName{},
  2775. },
  2776. },
  2777. serverSideLists: map[IdentScreenName]buddyList{
  2778. NewIdentScreenName("me"): {
  2779. privacyMode: wire.FeedbagPDModeDenySome,
  2780. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2781. permitList: []IdentScreenName{},
  2782. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2783. },
  2784. },
  2785. expect: []Relationship{
  2786. {
  2787. User: NewIdentScreenName("them"),
  2788. BlocksYou: true,
  2789. YouBlock: true,
  2790. IsOnTheirList: true,
  2791. IsOnYourList: true,
  2792. },
  2793. },
  2794. },
  2795. {
  2796. name: "[me, server-side]: Block the users Below [them, server-side]: Block all users",
  2797. me: NewIdentScreenName("me"),
  2798. clientSideLists: map[IdentScreenName]buddyList{},
  2799. serverSideLists: map[IdentScreenName]buddyList{
  2800. NewIdentScreenName("me"): {
  2801. privacyMode: wire.FeedbagPDModeDenySome,
  2802. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2803. permitList: []IdentScreenName{},
  2804. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2805. },
  2806. NewIdentScreenName("them"): {
  2807. privacyMode: wire.FeedbagPDModeDenyAll,
  2808. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2809. permitList: []IdentScreenName{},
  2810. denyList: []IdentScreenName{},
  2811. },
  2812. },
  2813. expect: []Relationship{
  2814. {
  2815. User: NewIdentScreenName("them"),
  2816. BlocksYou: true,
  2817. YouBlock: true,
  2818. IsOnTheirList: true,
  2819. IsOnYourList: true,
  2820. },
  2821. },
  2822. },
  2823. {
  2824. name: "[me, server-side]: Block the users Below [them, client-side]: Block the users Below",
  2825. me: NewIdentScreenName("me"),
  2826. clientSideLists: map[IdentScreenName]buddyList{
  2827. NewIdentScreenName("them"): {
  2828. privacyMode: wire.FeedbagPDModeDenySome,
  2829. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2830. permitList: []IdentScreenName{},
  2831. denyList: []IdentScreenName{NewIdentScreenName("me")},
  2832. },
  2833. },
  2834. serverSideLists: map[IdentScreenName]buddyList{
  2835. NewIdentScreenName("me"): {
  2836. privacyMode: wire.FeedbagPDModeDenySome,
  2837. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2838. permitList: []IdentScreenName{},
  2839. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2840. },
  2841. },
  2842. expect: []Relationship{
  2843. {
  2844. User: NewIdentScreenName("them"),
  2845. BlocksYou: true,
  2846. YouBlock: true,
  2847. IsOnTheirList: true,
  2848. IsOnYourList: true,
  2849. },
  2850. },
  2851. },
  2852. {
  2853. name: "[me, server-side]: Block the users Below [them, server-side]: Block the users Below",
  2854. me: NewIdentScreenName("me"),
  2855. clientSideLists: map[IdentScreenName]buddyList{},
  2856. serverSideLists: map[IdentScreenName]buddyList{
  2857. NewIdentScreenName("me"): {
  2858. privacyMode: wire.FeedbagPDModeDenySome,
  2859. buddyList: []IdentScreenName{NewIdentScreenName("them")},
  2860. permitList: []IdentScreenName{},
  2861. denyList: []IdentScreenName{NewIdentScreenName("them")},
  2862. },
  2863. NewIdentScreenName("them"): {
  2864. privacyMode: wire.FeedbagPDModeDenySome,
  2865. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2866. permitList: []IdentScreenName{},
  2867. denyList: []IdentScreenName{NewIdentScreenName("me")},
  2868. },
  2869. },
  2870. expect: []Relationship{
  2871. {
  2872. User: NewIdentScreenName("them"),
  2873. BlocksYou: true,
  2874. YouBlock: true,
  2875. IsOnTheirList: true,
  2876. IsOnYourList: true,
  2877. },
  2878. },
  2879. },
  2880. {
  2881. name: "(with filter) [me, client-side]: Allow all users to contact me [them, client-side]: Allow all users to contact me",
  2882. me: NewIdentScreenName("me"),
  2883. clientSideLists: map[IdentScreenName]buddyList{
  2884. NewIdentScreenName("me"): {
  2885. privacyMode: wire.FeedbagPDModePermitAll,
  2886. buddyList: []IdentScreenName{
  2887. NewIdentScreenName("them-1"),
  2888. NewIdentScreenName("them-2"),
  2889. },
  2890. permitList: []IdentScreenName{},
  2891. denyList: []IdentScreenName{},
  2892. },
  2893. NewIdentScreenName("them-1"): {
  2894. privacyMode: wire.FeedbagPDModePermitAll,
  2895. buddyList: []IdentScreenName{},
  2896. permitList: []IdentScreenName{},
  2897. denyList: []IdentScreenName{},
  2898. },
  2899. NewIdentScreenName("them-2"): {
  2900. privacyMode: wire.FeedbagPDModePermitAll,
  2901. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2902. permitList: []IdentScreenName{},
  2903. denyList: []IdentScreenName{},
  2904. },
  2905. NewIdentScreenName("them-3"): {
  2906. privacyMode: wire.FeedbagPDModePermitAll,
  2907. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2908. permitList: []IdentScreenName{},
  2909. denyList: []IdentScreenName{},
  2910. },
  2911. },
  2912. serverSideLists: map[IdentScreenName]buddyList{},
  2913. filter: []IdentScreenName{
  2914. NewIdentScreenName("them-3"),
  2915. NewIdentScreenName("them-1"),
  2916. },
  2917. expect: []Relationship{
  2918. {
  2919. User: NewIdentScreenName("them-1"),
  2920. BlocksYou: false,
  2921. YouBlock: false,
  2922. IsOnTheirList: false,
  2923. IsOnYourList: true,
  2924. },
  2925. {
  2926. User: NewIdentScreenName("them-3"),
  2927. BlocksYou: false,
  2928. YouBlock: false,
  2929. IsOnTheirList: true,
  2930. IsOnYourList: false,
  2931. },
  2932. },
  2933. },
  2934. {
  2935. name: "(filtered) [me, server-side]: Allow all users to contact me [them, server-side]: Allow all users to contact me",
  2936. me: NewIdentScreenName("me"),
  2937. clientSideLists: map[IdentScreenName]buddyList{},
  2938. serverSideLists: map[IdentScreenName]buddyList{
  2939. NewIdentScreenName("me"): {
  2940. privacyMode: wire.FeedbagPDModePermitAll,
  2941. buddyList: []IdentScreenName{
  2942. NewIdentScreenName("them-1"),
  2943. NewIdentScreenName("them-2"),
  2944. },
  2945. permitList: []IdentScreenName{},
  2946. denyList: []IdentScreenName{},
  2947. },
  2948. NewIdentScreenName("them-1"): {
  2949. privacyMode: wire.FeedbagPDModePermitAll,
  2950. buddyList: []IdentScreenName{},
  2951. permitList: []IdentScreenName{},
  2952. denyList: []IdentScreenName{},
  2953. },
  2954. NewIdentScreenName("them-2"): {
  2955. privacyMode: wire.FeedbagPDModePermitAll,
  2956. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2957. permitList: []IdentScreenName{},
  2958. denyList: []IdentScreenName{},
  2959. },
  2960. NewIdentScreenName("them-3"): {
  2961. privacyMode: wire.FeedbagPDModePermitAll,
  2962. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2963. permitList: []IdentScreenName{},
  2964. denyList: []IdentScreenName{},
  2965. },
  2966. },
  2967. filter: []IdentScreenName{
  2968. NewIdentScreenName("them-1"),
  2969. NewIdentScreenName("them-3"),
  2970. },
  2971. expect: []Relationship{
  2972. {
  2973. User: NewIdentScreenName("them-1"),
  2974. BlocksYou: false,
  2975. YouBlock: false,
  2976. IsOnTheirList: false,
  2977. IsOnYourList: true,
  2978. },
  2979. {
  2980. User: NewIdentScreenName("them-3"),
  2981. BlocksYou: false,
  2982. YouBlock: false,
  2983. IsOnTheirList: true,
  2984. IsOnYourList: false,
  2985. },
  2986. },
  2987. },
  2988. {
  2989. name: "i have a temp buddy, they don't have me",
  2990. me: NewIdentScreenName("me"),
  2991. clientSideLists: map[IdentScreenName]buddyList{
  2992. NewIdentScreenName("friend1"): {
  2993. privacyMode: wire.FeedbagPDModePermitAll,
  2994. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  2995. permitList: []IdentScreenName{},
  2996. denyList: []IdentScreenName{},
  2997. },
  2998. },
  2999. serverSideLists: map[IdentScreenName]buddyList{
  3000. NewIdentScreenName("me"): {
  3001. privacyMode: wire.FeedbagPDModePermitAll,
  3002. buddyList: []IdentScreenName{NewIdentScreenName("friend1")},
  3003. permitList: []IdentScreenName{},
  3004. denyList: []IdentScreenName{},
  3005. },
  3006. NewIdentScreenName("friend2"): {
  3007. privacyMode: wire.FeedbagPDModePermitAll,
  3008. buddyList: []IdentScreenName{},
  3009. permitList: []IdentScreenName{},
  3010. denyList: []IdentScreenName{},
  3011. },
  3012. },
  3013. tempBuddyList: map[IdentScreenName][]IdentScreenName{
  3014. NewIdentScreenName("me"): {
  3015. NewIdentScreenName("friend2"),
  3016. },
  3017. },
  3018. expect: []Relationship{
  3019. {
  3020. User: NewIdentScreenName("friend1"),
  3021. BlocksYou: false,
  3022. YouBlock: false,
  3023. IsOnTheirList: true,
  3024. IsOnYourList: true,
  3025. },
  3026. {
  3027. User: NewIdentScreenName("friend2"),
  3028. BlocksYou: false,
  3029. YouBlock: false,
  3030. IsOnTheirList: false,
  3031. IsOnYourList: true,
  3032. },
  3033. },
  3034. },
  3035. {
  3036. name: "someone has me as a temp buddy, I don't have them",
  3037. me: NewIdentScreenName("me"),
  3038. clientSideLists: map[IdentScreenName]buddyList{
  3039. NewIdentScreenName("friend1"): {
  3040. privacyMode: wire.FeedbagPDModePermitAll,
  3041. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  3042. permitList: []IdentScreenName{},
  3043. denyList: []IdentScreenName{},
  3044. },
  3045. },
  3046. serverSideLists: map[IdentScreenName]buddyList{
  3047. NewIdentScreenName("me"): {
  3048. privacyMode: wire.FeedbagPDModePermitAll,
  3049. buddyList: []IdentScreenName{NewIdentScreenName("friend1")},
  3050. permitList: []IdentScreenName{},
  3051. denyList: []IdentScreenName{},
  3052. },
  3053. NewIdentScreenName("friend2"): {
  3054. privacyMode: wire.FeedbagPDModePermitAll,
  3055. buddyList: []IdentScreenName{},
  3056. permitList: []IdentScreenName{},
  3057. denyList: []IdentScreenName{},
  3058. },
  3059. },
  3060. tempBuddyList: map[IdentScreenName][]IdentScreenName{
  3061. NewIdentScreenName("friend2"): {
  3062. NewIdentScreenName("me"),
  3063. },
  3064. },
  3065. expect: []Relationship{
  3066. {
  3067. User: NewIdentScreenName("friend1"),
  3068. BlocksYou: false,
  3069. YouBlock: false,
  3070. IsOnTheirList: true,
  3071. IsOnYourList: true,
  3072. },
  3073. {
  3074. User: NewIdentScreenName("friend2"),
  3075. BlocksYou: false,
  3076. YouBlock: false,
  3077. IsOnTheirList: true,
  3078. IsOnYourList: false,
  3079. },
  3080. },
  3081. },
  3082. {
  3083. name: "I have a temp buddy that I've blocked",
  3084. me: NewIdentScreenName("me"),
  3085. clientSideLists: map[IdentScreenName]buddyList{
  3086. NewIdentScreenName("friend1"): {
  3087. privacyMode: wire.FeedbagPDModePermitAll,
  3088. buddyList: []IdentScreenName{NewIdentScreenName("me")},
  3089. permitList: []IdentScreenName{},
  3090. denyList: []IdentScreenName{},
  3091. },
  3092. },
  3093. serverSideLists: map[IdentScreenName]buddyList{
  3094. NewIdentScreenName("me"): {
  3095. privacyMode: wire.FeedbagPDModeDenySome,
  3096. buddyList: []IdentScreenName{NewIdentScreenName("friend1")},
  3097. permitList: []IdentScreenName{},
  3098. denyList: []IdentScreenName{NewIdentScreenName("friend2")},
  3099. },
  3100. NewIdentScreenName("friend2"): {
  3101. privacyMode: wire.FeedbagPDModePermitAll,
  3102. buddyList: []IdentScreenName{},
  3103. permitList: []IdentScreenName{},
  3104. denyList: []IdentScreenName{},
  3105. },
  3106. },
  3107. tempBuddyList: map[IdentScreenName][]IdentScreenName{
  3108. NewIdentScreenName("me"): {
  3109. NewIdentScreenName("friend2"),
  3110. },
  3111. },
  3112. expect: []Relationship{
  3113. {
  3114. User: NewIdentScreenName("friend1"),
  3115. BlocksYou: false,
  3116. YouBlock: false,
  3117. IsOnTheirList: true,
  3118. IsOnYourList: true,
  3119. },
  3120. {
  3121. User: NewIdentScreenName("friend2"),
  3122. BlocksYou: false,
  3123. YouBlock: true,
  3124. IsOnTheirList: false,
  3125. IsOnYourList: true,
  3126. },
  3127. },
  3128. },
  3129. }
  3130. for _, tt := range tests {
  3131. t.Run(tt.name, func(t *testing.T) {
  3132. defer func() {
  3133. _ = os.Remove(testFile)
  3134. }()
  3135. feedbagStore, err := NewSQLiteUserStore(testFile)
  3136. assert.NoError(t, err)
  3137. for sn, list := range tt.clientSideLists {
  3138. assert.NoError(t, feedbagStore.SetPDMode(context.Background(), sn, list.privacyMode))
  3139. for _, buddy := range list.buddyList {
  3140. assert.NoError(t, feedbagStore.AddBuddy(context.Background(), sn, buddy))
  3141. }
  3142. for _, buddy := range list.permitList {
  3143. assert.NoError(t, feedbagStore.PermitBuddy(context.Background(), sn, buddy))
  3144. }
  3145. for _, buddy := range list.denyList {
  3146. assert.NoError(t, feedbagStore.DenyBuddy(context.Background(), sn, buddy))
  3147. }
  3148. }
  3149. for sn, list := range tt.serverSideLists {
  3150. assert.NoError(t, feedbagStore.UseFeedbag(context.Background(), sn))
  3151. itemID := uint16(1)
  3152. items := []wire.FeedbagItem{
  3153. pdInfoItem(itemID, list.privacyMode),
  3154. }
  3155. itemID++
  3156. for _, buddy := range list.buddyList {
  3157. items = append(items, newFeedbagItem(wire.FeedbagClassIdBuddy, itemID, buddy.String()))
  3158. itemID++
  3159. }
  3160. for _, buddy := range list.permitList {
  3161. items = append(items, newFeedbagItem(wire.FeedbagClassIDPermit, itemID, buddy.String()))
  3162. itemID++
  3163. }
  3164. for _, buddy := range list.denyList {
  3165. items = append(items, newFeedbagItem(wire.FeedbagClassIDDeny, itemID, buddy.String()))
  3166. itemID++
  3167. }
  3168. assert.NoError(t, feedbagStore.FeedbagUpsert(context.Background(), sn, items))
  3169. }
  3170. for sn, list := range tt.tempBuddyList {
  3171. for _, buddy := range list {
  3172. assert.NoError(t, feedbagStore.AddBuddy(context.Background(), sn, buddy))
  3173. }
  3174. }
  3175. have, err := feedbagStore.AllRelationships(context.Background(), tt.me, tt.filter)
  3176. assert.NoError(t, err)
  3177. assert.ElementsMatch(t, tt.expect, have)
  3178. })
  3179. }
  3180. }