relationship_test.go 98 KB

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