relationship_test.go 105 KB

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