You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PermissionsTest.java 122KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899
  1. /*
  2. * Copyright 2012 gitblit.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.gitblit.tests;
  17. import java.util.Date;
  18. import org.junit.Assert;
  19. import org.junit.Test;
  20. import com.gitblit.Constants.AccessPermission;
  21. import com.gitblit.Constants.AccessRestrictionType;
  22. import com.gitblit.Constants.AuthorizationControl;
  23. import com.gitblit.models.RepositoryModel;
  24. import com.gitblit.models.TeamModel;
  25. import com.gitblit.models.UserModel;
  26. /**
  27. * Comprehensive, brute-force test of all permutations of discrete permissions.
  28. *
  29. * @author James Moger
  30. *
  31. */
  32. public class PermissionsTest extends Assert {
  33. /**
  34. * Admin access rights/permissions
  35. */
  36. @Test
  37. public void testAdmin() throws Exception {
  38. UserModel user = new UserModel("admin");
  39. user.canAdmin = true;
  40. for (AccessRestrictionType ar : AccessRestrictionType.values()) {
  41. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  42. repository.authorizationControl = AuthorizationControl.NAMED;
  43. repository.accessRestriction = ar;
  44. assertTrue("admin CAN NOT view!", user.canView(repository));
  45. assertTrue("admin CAN NOT clone!", user.canClone(repository));
  46. assertTrue("admin CAN NOT push!", user.canPush(repository));
  47. assertTrue("admin CAN NOT create ref!", user.canCreateRef(repository));
  48. assertTrue("admin CAN NOT delete ref!", user.canDeleteRef(repository));
  49. assertTrue("admin CAN NOT rewind ref!", user.canRewindRef(repository));
  50. assertEquals("admin has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  51. assertTrue("admin CAN NOT fork!", user.canFork(repository));
  52. assertTrue("admin CAN NOT delete!", user.canDelete(repository));
  53. assertTrue("admin CAN NOT edit!", user.canEdit(repository));
  54. }
  55. }
  56. /**
  57. * Anonymous access rights/permissions
  58. */
  59. @Test
  60. public void testAnonymous_NONE() throws Exception {
  61. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  62. repository.authorizationControl = AuthorizationControl.NAMED;
  63. repository.accessRestriction = AccessRestrictionType.NONE;
  64. UserModel user = UserModel.ANONYMOUS;
  65. // all permissions, except fork
  66. assertTrue("anonymous CAN NOT view!", user.canView(repository));
  67. assertTrue("anonymous CAN NOT clone!", user.canClone(repository));
  68. assertTrue("anonymous CAN NOT push!", user.canPush(repository));
  69. assertTrue("anonymous CAN NOT create ref!", user.canCreateRef(repository));
  70. assertTrue("anonymous CAN NOT delete ref!", user.canDeleteRef(repository));
  71. assertTrue("anonymous CAN NOT rewind ref!", user.canRewindRef(repository));
  72. assertEquals("anonymous has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  73. repository.allowForks = false;
  74. assertFalse("anonymous CAN fork!", user.canFork(repository));
  75. repository.allowForks = true;
  76. assertFalse("anonymous CAN fork!", user.canFork(repository));
  77. assertFalse("anonymous CAN delete!", user.canDelete(repository));
  78. assertFalse("anonymous CAN edit!", user.canEdit(repository));
  79. }
  80. @Test
  81. public void testAnonymous_PUSH() throws Exception {
  82. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  83. repository.authorizationControl = AuthorizationControl.NAMED;
  84. repository.accessRestriction = AccessRestrictionType.PUSH;
  85. UserModel user = UserModel.ANONYMOUS;
  86. assertTrue("anonymous CAN NOT view!", user.canView(repository));
  87. assertTrue("anonymous CAN NOT clone!", user.canClone(repository));
  88. assertFalse("anonymous CAN push!", user.canPush(repository));
  89. assertFalse("anonymous CAN create ref!", user.canCreateRef(repository));
  90. assertFalse("anonymous CAN delete ref!", user.canDeleteRef(repository));
  91. assertFalse("anonymous CAN rewind ref!", user.canRewindRef(repository));
  92. assertEquals("anonymous has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  93. repository.allowForks = false;
  94. assertFalse("anonymous CAN fork!", user.canFork(repository));
  95. repository.allowForks = true;
  96. assertFalse("anonymous CAN fork!", user.canFork(repository));
  97. }
  98. @Test
  99. public void testAnonymous_CLONE() throws Exception {
  100. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  101. repository.authorizationControl = AuthorizationControl.NAMED;
  102. repository.accessRestriction = AccessRestrictionType.CLONE;
  103. UserModel user = UserModel.ANONYMOUS;
  104. assertTrue("anonymous CAN NOT view!", user.canView(repository));
  105. assertFalse("anonymous CAN clone!", user.canClone(repository));
  106. assertFalse("anonymous CAN push!", user.canPush(repository));
  107. assertFalse("anonymous CAN create ref!", user.canCreateRef(repository));
  108. assertFalse("anonymous CAN delete ref!", user.canDeleteRef(repository));
  109. assertFalse("anonymous CAN rewind ref!", user.canRewindRef(repository));
  110. assertEquals("anonymous has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
  111. repository.allowForks = false;
  112. assertFalse("anonymous CAN fork!", user.canFork(repository));
  113. repository.allowForks = true;
  114. assertFalse("anonymous CAN fork!", user.canFork(repository));
  115. }
  116. @Test
  117. public void testAnonymous_VIEW() throws Exception {
  118. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  119. repository.authorizationControl = AuthorizationControl.NAMED;
  120. repository.accessRestriction = AccessRestrictionType.VIEW;
  121. UserModel user = UserModel.ANONYMOUS;
  122. assertFalse("anonymous CAN view!", user.canView(repository));
  123. assertFalse("anonymous CAN clone!", user.canClone(repository));
  124. assertFalse("anonymous CAN push!", user.canPush(repository));
  125. assertFalse("anonymous CAN create ref!", user.canCreateRef(repository));
  126. assertFalse("anonymous CAN delete ref!", user.canDeleteRef(repository));
  127. assertFalse("anonymous CAN rewind ref!", user.canRewindRef(repository));
  128. assertEquals("anonymous has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
  129. repository.allowForks = false;
  130. assertFalse("anonymous CAN fork!", user.canFork(repository));
  131. repository.allowForks = true;
  132. assertFalse("anonymous CAN fork!", user.canFork(repository));
  133. }
  134. /**
  135. * Authenticated access rights/permissions
  136. */
  137. @Test
  138. public void testAuthenticated_NONE() throws Exception {
  139. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  140. repository.authorizationControl = AuthorizationControl.AUTHENTICATED;
  141. repository.accessRestriction = AccessRestrictionType.NONE;
  142. UserModel user = new UserModel("test");
  143. // all permissions, except fork
  144. assertTrue("authenticated CAN NOT view!", user.canView(repository));
  145. assertTrue("authenticated CAN NOT clone!", user.canClone(repository));
  146. assertTrue("authenticated CAN NOT push!", user.canPush(repository));
  147. assertTrue("authenticated CAN NOT create ref!", user.canCreateRef(repository));
  148. assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
  149. assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
  150. assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  151. user.canFork = false;
  152. repository.allowForks = false;
  153. assertFalse("authenticated CAN fork!", user.canFork(repository));
  154. repository.allowForks = true;
  155. assertFalse("authenticated CAN fork!", user.canFork(repository));
  156. user.canFork = true;
  157. assertTrue("authenticated CAN NOT fork!", user.canFork(repository));
  158. assertFalse("authenticated CAN delete!", user.canDelete(repository));
  159. assertFalse("authenticated CAN edit!", user.canEdit(repository));
  160. }
  161. @Test
  162. public void testAuthenticated_PUSH() throws Exception {
  163. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  164. repository.authorizationControl = AuthorizationControl.AUTHENTICATED;
  165. repository.accessRestriction = AccessRestrictionType.PUSH;
  166. UserModel user = new UserModel("test");
  167. assertTrue("authenticated CAN NOT view!", user.canView(repository));
  168. assertTrue("authenticated CAN NOT clone!", user.canClone(repository));
  169. assertTrue("authenticated CAN NOT push!", user.canPush(repository));
  170. assertTrue("authenticated CAN NOT create ref!", user.canCreateRef(repository));
  171. assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
  172. assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
  173. assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  174. user.canFork = false;
  175. repository.allowForks = false;
  176. assertFalse("authenticated CAN fork!", user.canFork(repository));
  177. repository.allowForks = true;
  178. assertFalse("authenticated CAN fork!", user.canFork(repository));
  179. user.canFork = true;
  180. assertTrue("authenticated CAN NOT fork!", user.canFork(repository));
  181. }
  182. @Test
  183. public void testAuthenticated_CLONE() throws Exception {
  184. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  185. repository.authorizationControl = AuthorizationControl.AUTHENTICATED;
  186. repository.accessRestriction = AccessRestrictionType.CLONE;
  187. UserModel user = new UserModel("test");
  188. assertTrue("authenticated CAN NOT view!", user.canView(repository));
  189. assertTrue("authenticated CAN NOT clone!", user.canClone(repository));
  190. assertTrue("authenticated CAN NOT push!", user.canPush(repository));
  191. assertTrue("authenticated CAN NOT create ref!", user.canCreateRef(repository));
  192. assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
  193. assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
  194. assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  195. user.canFork = false;
  196. repository.allowForks = false;
  197. assertFalse("authenticated CAN fork!", user.canFork(repository));
  198. repository.allowForks = true;
  199. assertFalse("authenticated CAN fork!", user.canFork(repository));
  200. user.canFork = true;
  201. assertTrue("authenticated CAN NOT fork!", user.canFork(repository));
  202. }
  203. @Test
  204. public void testAuthenticated_VIEW() throws Exception {
  205. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  206. repository.authorizationControl = AuthorizationControl.AUTHENTICATED;
  207. repository.accessRestriction = AccessRestrictionType.VIEW;
  208. UserModel user = new UserModel("test");
  209. assertTrue("authenticated CAN NOT view!", user.canView(repository));
  210. assertTrue("authenticated CAN NOT clone!", user.canClone(repository));
  211. assertTrue("authenticated CAN NOT push!", user.canPush(repository));
  212. assertTrue("authenticated CAN NOT create ref!", user.canCreateRef(repository));
  213. assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
  214. assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
  215. assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  216. user.canFork = false;
  217. repository.allowForks = false;
  218. assertFalse("authenticated CAN fork!", user.canFork(repository));
  219. repository.allowForks = true;
  220. assertFalse("authenticated CAN fork!", user.canFork(repository));
  221. user.canFork = true;
  222. assertTrue("authenticated CAN NOT fork!", user.canFork(repository));
  223. }
  224. /**
  225. * NONE_NONE = NO access restriction, NO access permission
  226. */
  227. @Test
  228. public void testNamed_NONE_NONE() throws Exception {
  229. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  230. repository.authorizationControl = AuthorizationControl.NAMED;
  231. repository.accessRestriction = AccessRestrictionType.NONE;
  232. UserModel user = new UserModel("test");
  233. assertTrue("named CAN NOT view!", user.canView(repository));
  234. assertTrue("named CAN NOT clone!", user.canClone(repository));
  235. assertTrue("named CAN NOT push!", user.canPush(repository));
  236. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  237. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  238. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  239. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  240. repository.allowForks = false;
  241. user.canFork = false;
  242. assertFalse("named CAN fork!", user.canFork(repository));
  243. user.canFork = true;
  244. assertFalse("named CAN fork!", user.canFork(repository));
  245. repository.allowForks = true;
  246. assertTrue("named CAN NOT fork!", user.canFork(repository));
  247. assertFalse("named CAN delete!", user.canDelete(repository));
  248. assertFalse("named CAN edit!", user.canEdit(repository));
  249. }
  250. /**
  251. * PUSH_NONE = PUSH access restriction, NO access permission
  252. */
  253. @Test
  254. public void testNamed_PUSH_NONE() throws Exception {
  255. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  256. repository.authorizationControl = AuthorizationControl.NAMED;
  257. repository.accessRestriction = AccessRestrictionType.PUSH;
  258. UserModel user = new UserModel("test");
  259. assertTrue("named CAN NOT view!", user.canView(repository));
  260. assertTrue("named CAN NOT clone!", user.canClone(repository));
  261. assertFalse("named CAN push!", user.canPush(repository));
  262. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  263. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  264. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  265. assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  266. repository.allowForks = false;
  267. user.canFork = false;
  268. assertFalse("named CAN fork!", user.canFork(repository));
  269. user.canFork = true;
  270. assertFalse("named CAN fork!", user.canFork(repository));
  271. repository.allowForks = true;
  272. assertTrue("named CAN NOT fork!", user.canFork(repository));
  273. }
  274. /**
  275. * CLONE_NONE = CLONE access restriction, NO access permission
  276. */
  277. @Test
  278. public void testNamed_CLONE_NONE() throws Exception {
  279. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  280. repository.authorizationControl = AuthorizationControl.NAMED;
  281. repository.accessRestriction = AccessRestrictionType.CLONE;
  282. UserModel user = new UserModel("test");
  283. assertTrue("named CAN NOT view!", user.canView(repository));
  284. assertFalse("named CAN clone!", user.canClone(repository));
  285. assertFalse("named CAN push!", user.canPush(repository));
  286. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  287. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  288. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  289. assertEquals("named has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
  290. repository.allowForks = false;
  291. user.canFork = false;
  292. assertFalse("named CAN fork!", user.canFork(repository));
  293. user.canFork = true;
  294. assertFalse("named CAN fork!", user.canFork(repository));
  295. repository.allowForks = true;
  296. assertFalse("named CAN NOT fork!", user.canFork(repository));
  297. }
  298. /**
  299. * VIEW_NONE = VIEW access restriction, NO access permission
  300. */
  301. @Test
  302. public void testNamed_VIEW_NONE() throws Exception {
  303. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  304. repository.authorizationControl = AuthorizationControl.NAMED;
  305. repository.accessRestriction = AccessRestrictionType.VIEW;
  306. UserModel user = new UserModel("test");
  307. assertFalse("named CAN view!", user.canView(repository));
  308. assertFalse("named CAN clone!", user.canClone(repository));
  309. assertFalse("named CAN push!", user.canPush(repository));
  310. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  311. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  312. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  313. assertEquals("named has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
  314. repository.allowForks = false;
  315. user.canFork = false;
  316. assertFalse("named CAN fork!", user.canFork(repository));
  317. user.canFork = true;
  318. assertFalse("named CAN fork!", user.canFork(repository));
  319. repository.allowForks = true;
  320. assertFalse("named CAN NOT fork!", user.canFork(repository));
  321. }
  322. /**
  323. * NONE_VIEW = NO access restriction, VIEW access permission.
  324. * (not useful scenario)
  325. */
  326. @Test
  327. public void testNamed_NONE_VIEW() throws Exception {
  328. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  329. repository.authorizationControl = AuthorizationControl.NAMED;
  330. repository.accessRestriction = AccessRestrictionType.NONE;
  331. UserModel user = new UserModel("test");
  332. user.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  333. assertTrue("named CAN NOT view!", user.canView(repository));
  334. assertTrue("named CAN NOT clone!", user.canClone(repository));
  335. assertTrue("named CAN NOT push!", user.canPush(repository));
  336. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  337. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  338. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  339. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  340. repository.allowForks = false;
  341. user.canFork = false;
  342. assertFalse("named CAN fork!", user.canFork(repository));
  343. user.canFork = true;
  344. assertFalse("named CAN fork!", user.canFork(repository));
  345. repository.allowForks = true;
  346. assertTrue("named CAN NOT fork!", user.canFork(repository));
  347. }
  348. /**
  349. * PUSH_VIEW = PUSH access restriction, VIEW access permission
  350. */
  351. @Test
  352. public void testNamed_PUSH_VIEW() throws Exception {
  353. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  354. repository.authorizationControl = AuthorizationControl.NAMED;
  355. repository.accessRestriction = AccessRestrictionType.PUSH;
  356. UserModel user = new UserModel("test");
  357. user.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  358. assertTrue("named CAN NOT view!", user.canView(repository));
  359. assertTrue("named CAN NOT clone!", user.canClone(repository));
  360. assertFalse("named CAN push!", user.canPush(repository));
  361. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  362. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  363. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  364. assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  365. repository.allowForks = false;
  366. user.canFork = false;
  367. assertFalse("named CAN fork!", user.canFork(repository));
  368. user.canFork = true;
  369. assertFalse("named CAN fork!", user.canFork(repository));
  370. repository.allowForks = true;
  371. assertTrue("named CAN NOT fork!", user.canFork(repository));
  372. }
  373. /**
  374. * CLONE_VIEW = CLONE access restriction, VIEW access permission
  375. */
  376. @Test
  377. public void testNamed_CLONE_VIEW() throws Exception {
  378. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  379. repository.authorizationControl = AuthorizationControl.NAMED;
  380. repository.accessRestriction = AccessRestrictionType.CLONE;
  381. UserModel user = new UserModel("test");
  382. user.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  383. assertTrue("named CAN NOT view!", user.canView(repository));
  384. assertFalse("named CAN clone!", user.canClone(repository));
  385. assertFalse("named CAN push!", user.canPush(repository));
  386. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  387. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  388. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  389. assertEquals("named has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
  390. repository.allowForks = false;
  391. user.canFork = false;
  392. assertFalse("named CAN fork!", user.canFork(repository));
  393. user.canFork = true;
  394. assertFalse("named CAN fork!", user.canFork(repository));
  395. repository.allowForks = true;
  396. assertFalse("named CAN NOT fork!", user.canFork(repository));
  397. }
  398. /**
  399. * VIEW_VIEW = VIEW access restriction, VIEW access permission
  400. */
  401. @Test
  402. public void testNamed_VIEW_VIEW() throws Exception {
  403. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  404. repository.authorizationControl = AuthorizationControl.NAMED;
  405. repository.accessRestriction = AccessRestrictionType.VIEW;
  406. UserModel user = new UserModel("test");
  407. user.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  408. assertTrue("named CAN NOT view!", user.canView(repository));
  409. assertFalse("named CAN clone!", user.canClone(repository));
  410. assertFalse("named CAN push!", user.canPush(repository));
  411. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  412. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  413. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  414. assertEquals("named has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
  415. repository.allowForks = false;
  416. user.canFork = false;
  417. assertFalse("named CAN fork!", user.canFork(repository));
  418. user.canFork = true;
  419. assertFalse("named CAN fork!", user.canFork(repository));
  420. repository.allowForks = true;
  421. assertFalse("named CAN NOT fork!", user.canFork(repository));
  422. }
  423. /**
  424. * NONE_CLONE = NO access restriction, CLONE access permission.
  425. * (not useful scenario)
  426. */
  427. @Test
  428. public void testNamed_NONE_CLONE() throws Exception {
  429. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  430. repository.authorizationControl = AuthorizationControl.NAMED;
  431. repository.accessRestriction = AccessRestrictionType.NONE;
  432. UserModel user = new UserModel("test");
  433. user.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  434. assertTrue("named CAN NOT view!", user.canView(repository));
  435. assertTrue("named CAN NOT clone!", user.canClone(repository));
  436. assertTrue("named CAN NOT push!", user.canPush(repository));
  437. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  438. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  439. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  440. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  441. repository.allowForks = false;
  442. user.canFork = false;
  443. assertFalse("named CAN fork!", user.canFork(repository));
  444. user.canFork = true;
  445. assertFalse("named CAN fork!", user.canFork(repository));
  446. repository.allowForks = true;
  447. assertTrue("named CAN NOT fork!", user.canFork(repository));
  448. }
  449. /**
  450. * PUSH_CLONE = PUSH access restriction, CLONE access permission
  451. */
  452. @Test
  453. public void testNamed_PUSH_CLONE() throws Exception {
  454. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  455. repository.authorizationControl = AuthorizationControl.NAMED;
  456. repository.accessRestriction = AccessRestrictionType.PUSH;
  457. UserModel user = new UserModel("test");
  458. user.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  459. assertTrue("named CAN NOT view!", user.canView(repository));
  460. assertTrue("named CAN NOT clone!", user.canClone(repository));
  461. assertFalse("named CAN push!", user.canPush(repository));
  462. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  463. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  464. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  465. assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  466. repository.allowForks = false;
  467. user.canFork = false;
  468. assertFalse("named CAN fork!", user.canFork(repository));
  469. user.canFork = true;
  470. assertFalse("named CAN fork!", user.canFork(repository));
  471. repository.allowForks = true;
  472. assertTrue("named CAN NOT fork!", user.canFork(repository));
  473. }
  474. /**
  475. * CLONE_CLONE = CLONE access restriction, CLONE access permission
  476. */
  477. @Test
  478. public void testNamed_CLONE_CLONE() throws Exception {
  479. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  480. repository.authorizationControl = AuthorizationControl.NAMED;
  481. repository.accessRestriction = AccessRestrictionType.CLONE;
  482. UserModel user = new UserModel("test");
  483. user.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  484. assertTrue("named CAN NOT view!", user.canView(repository));
  485. assertTrue("named CAN NOT clone!", user.canClone(repository));
  486. assertFalse("named CAN push!", user.canPush(repository));
  487. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  488. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  489. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  490. assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  491. repository.allowForks = false;
  492. user.canFork = false;
  493. assertFalse("named CAN fork!", user.canFork(repository));
  494. user.canFork = true;
  495. assertFalse("named CAN fork!", user.canFork(repository));
  496. repository.allowForks = true;
  497. assertTrue("named CAN NOT fork!", user.canFork(repository));
  498. }
  499. /**
  500. * VIEW_CLONE = VIEW access restriction, CLONE access permission
  501. */
  502. @Test
  503. public void testNamed_VIEW_CLONE() throws Exception {
  504. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  505. repository.authorizationControl = AuthorizationControl.NAMED;
  506. repository.accessRestriction = AccessRestrictionType.VIEW;
  507. UserModel user = new UserModel("test");
  508. user.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  509. assertTrue("named CAN NOT view!", user.canView(repository));
  510. assertTrue("named CAN NOT clone!", user.canClone(repository));
  511. assertFalse("named CAN push!", user.canPush(repository));
  512. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  513. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  514. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  515. assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  516. repository.allowForks = false;
  517. user.canFork = false;
  518. assertFalse("named CAN fork!", user.canFork(repository));
  519. user.canFork = true;
  520. assertFalse("named CAN fork!", user.canFork(repository));
  521. repository.allowForks = true;
  522. assertTrue("named CAN NOT fork!", user.canFork(repository));
  523. }
  524. /**
  525. * NONE_PUSH = NO access restriction, PUSH access permission.
  526. * (not useful scenario)
  527. */
  528. @Test
  529. public void testNamed_NONE_PUSH() throws Exception {
  530. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  531. repository.authorizationControl = AuthorizationControl.NAMED;
  532. repository.accessRestriction = AccessRestrictionType.NONE;
  533. UserModel user = new UserModel("test");
  534. user.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  535. assertTrue("named CAN NOT view!", user.canView(repository));
  536. assertTrue("named CAN NOT clone!", user.canClone(repository));
  537. assertTrue("named CAN NOT push!", user.canPush(repository));
  538. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  539. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  540. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  541. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  542. repository.allowForks = false;
  543. user.canFork = false;
  544. assertFalse("named CAN fork!", user.canFork(repository));
  545. user.canFork = true;
  546. assertFalse("named CAN fork!", user.canFork(repository));
  547. repository.allowForks = true;
  548. assertTrue("named CAN NOT fork!", user.canFork(repository));
  549. }
  550. /**
  551. * PUSH_PUSH = PUSH access restriction, PUSH access permission
  552. */
  553. @Test
  554. public void testNamed_PUSH_PUSH() throws Exception {
  555. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  556. repository.authorizationControl = AuthorizationControl.NAMED;
  557. repository.accessRestriction = AccessRestrictionType.PUSH;
  558. UserModel user = new UserModel("test");
  559. user.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  560. assertTrue("named CAN NOT view!", user.canView(repository));
  561. assertTrue("named CAN NOT clone!", user.canClone(repository));
  562. assertTrue("named CAN NOT push!", user.canPush(repository));
  563. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  564. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  565. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  566. assertEquals("named has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
  567. repository.allowForks = false;
  568. user.canFork = false;
  569. assertFalse("named CAN fork!", user.canFork(repository));
  570. user.canFork = true;
  571. assertFalse("named CAN fork!", user.canFork(repository));
  572. repository.allowForks = true;
  573. assertTrue("named CAN NOT fork!", user.canFork(repository));
  574. }
  575. /**
  576. * CLONE_PUSH = CLONE access restriction, PUSH access permission
  577. */
  578. @Test
  579. public void testNamed_CLONE_PUSH() throws Exception {
  580. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  581. repository.authorizationControl = AuthorizationControl.NAMED;
  582. repository.accessRestriction = AccessRestrictionType.CLONE;
  583. UserModel user = new UserModel("test");
  584. user.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  585. assertTrue("named CAN NOT view!", user.canView(repository));
  586. assertTrue("named CAN NOT clone!", user.canClone(repository));
  587. assertTrue("named CAN NOT push!", user.canPush(repository));
  588. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  589. assertFalse("named CAN delete red!", user.canDeleteRef(repository));
  590. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  591. assertEquals("named has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
  592. repository.allowForks = false;
  593. user.canFork = false;
  594. assertFalse("named CAN fork!", user.canFork(repository));
  595. user.canFork = true;
  596. assertFalse("named CAN fork!", user.canFork(repository));
  597. repository.allowForks = true;
  598. assertTrue("named CAN NOT fork!", user.canFork(repository));
  599. }
  600. /**
  601. * VIEW_PUSH = VIEW access restriction, PUSH access permission
  602. */
  603. @Test
  604. public void testNamed_VIEW_PUSH() throws Exception {
  605. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  606. repository.authorizationControl = AuthorizationControl.NAMED;
  607. repository.accessRestriction = AccessRestrictionType.VIEW;
  608. UserModel user = new UserModel("test");
  609. user.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  610. assertTrue("named CAN NOT view!", user.canView(repository));
  611. assertTrue("named CAN NOT clone!", user.canClone(repository));
  612. assertTrue("named CAN not push!", user.canPush(repository));
  613. assertFalse("named CAN create ref!", user.canCreateRef(repository));
  614. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  615. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  616. assertEquals("named has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
  617. repository.allowForks = false;
  618. user.canFork = false;
  619. assertFalse("named CAN fork!", user.canFork(repository));
  620. user.canFork = true;
  621. assertFalse("named CAN fork!", user.canFork(repository));
  622. repository.allowForks = true;
  623. assertTrue("named CAN NOT fork!", user.canFork(repository));
  624. }
  625. /**
  626. * NONE_CREATE = NO access restriction, CREATE access permission.
  627. * (not useful scenario)
  628. */
  629. @Test
  630. public void testNamed_NONE_CREATE() throws Exception {
  631. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  632. repository.authorizationControl = AuthorizationControl.NAMED;
  633. repository.accessRestriction = AccessRestrictionType.NONE;
  634. UserModel user = new UserModel("test");
  635. user.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  636. assertTrue("named CAN NOT view!", user.canView(repository));
  637. assertTrue("named CAN NOT clone!", user.canClone(repository));
  638. assertTrue("named CAN NOT push!", user.canPush(repository));
  639. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  640. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  641. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  642. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  643. repository.allowForks = false;
  644. user.canFork = false;
  645. assertFalse("named CAN fork!", user.canFork(repository));
  646. user.canFork = true;
  647. assertFalse("named CAN fork!", user.canFork(repository));
  648. repository.allowForks = true;
  649. assertTrue("named CAN NOT fork!", user.canFork(repository));
  650. }
  651. /**
  652. * PUSH_CREATE = PUSH access restriction, CREATE access permission
  653. */
  654. @Test
  655. public void testNamed_PUSH_CREATE() throws Exception {
  656. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  657. repository.authorizationControl = AuthorizationControl.NAMED;
  658. repository.accessRestriction = AccessRestrictionType.PUSH;
  659. UserModel user = new UserModel("test");
  660. user.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  661. assertTrue("named CAN NOT view!", user.canView(repository));
  662. assertTrue("named CAN NOT clone!", user.canClone(repository));
  663. assertTrue("named CAN NOT push!", user.canPush(repository));
  664. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  665. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  666. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  667. assertEquals("named has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
  668. repository.allowForks = false;
  669. user.canFork = false;
  670. assertFalse("named CAN fork!", user.canFork(repository));
  671. user.canFork = true;
  672. assertFalse("named CAN fork!", user.canFork(repository));
  673. repository.allowForks = true;
  674. assertTrue("named CAN NOT fork!", user.canFork(repository));
  675. }
  676. /**
  677. * CLONE_CREATE = CLONE access restriction, CREATE access permission
  678. */
  679. @Test
  680. public void testNamed_CLONE_CREATE() throws Exception {
  681. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  682. repository.authorizationControl = AuthorizationControl.NAMED;
  683. repository.accessRestriction = AccessRestrictionType.CLONE;
  684. UserModel user = new UserModel("test");
  685. user.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  686. assertTrue("named CAN NOT view!", user.canView(repository));
  687. assertTrue("named CAN NOT clone!", user.canClone(repository));
  688. assertTrue("named CAN NOT push!", user.canPush(repository));
  689. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  690. assertFalse("named CAN delete red!", user.canDeleteRef(repository));
  691. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  692. assertEquals("named has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
  693. repository.allowForks = false;
  694. user.canFork = false;
  695. assertFalse("named CAN fork!", user.canFork(repository));
  696. user.canFork = true;
  697. assertFalse("named CAN fork!", user.canFork(repository));
  698. repository.allowForks = true;
  699. assertTrue("named CAN NOT fork!", user.canFork(repository));
  700. }
  701. /**
  702. * VIEW_CREATE = VIEW access restriction, CREATE access permission
  703. */
  704. @Test
  705. public void testNamed_VIEW_CREATE() throws Exception {
  706. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  707. repository.authorizationControl = AuthorizationControl.NAMED;
  708. repository.accessRestriction = AccessRestrictionType.VIEW;
  709. UserModel user = new UserModel("test");
  710. user.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  711. assertTrue("named CAN NOT view!", user.canView(repository));
  712. assertTrue("named CAN NOT clone!", user.canClone(repository));
  713. assertTrue("named CAN not push!", user.canPush(repository));
  714. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  715. assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
  716. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  717. assertEquals("named has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
  718. repository.allowForks = false;
  719. user.canFork = false;
  720. assertFalse("named CAN fork!", user.canFork(repository));
  721. user.canFork = true;
  722. assertFalse("named CAN fork!", user.canFork(repository));
  723. repository.allowForks = true;
  724. assertTrue("named CAN NOT fork!", user.canFork(repository));
  725. }
  726. /**
  727. * NONE_DELETE = NO access restriction, DELETE access permission.
  728. * (not useful scenario)
  729. */
  730. @Test
  731. public void testNamed_NONE_DELETE() throws Exception {
  732. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  733. repository.authorizationControl = AuthorizationControl.NAMED;
  734. repository.accessRestriction = AccessRestrictionType.NONE;
  735. UserModel user = new UserModel("test");
  736. user.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  737. assertTrue("named CAN NOT view!", user.canView(repository));
  738. assertTrue("named CAN NOT clone!", user.canClone(repository));
  739. assertTrue("named CAN NOT push!", user.canPush(repository));
  740. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  741. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  742. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  743. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  744. repository.allowForks = false;
  745. user.canFork = false;
  746. assertFalse("named CAN fork!", user.canFork(repository));
  747. user.canFork = true;
  748. assertFalse("named CAN fork!", user.canFork(repository));
  749. repository.allowForks = true;
  750. assertTrue("named CAN NOT fork!", user.canFork(repository));
  751. }
  752. /**
  753. * PUSH_DELETE = PUSH access restriction, DELETE access permission
  754. */
  755. @Test
  756. public void testNamed_PUSH_DELETE() throws Exception {
  757. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  758. repository.authorizationControl = AuthorizationControl.NAMED;
  759. repository.accessRestriction = AccessRestrictionType.PUSH;
  760. UserModel user = new UserModel("test");
  761. user.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  762. assertTrue("named CAN NOT view!", user.canView(repository));
  763. assertTrue("named CAN NOT clone!", user.canClone(repository));
  764. assertTrue("named CAN NOT push!", user.canPush(repository));
  765. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  766. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  767. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  768. assertEquals("named has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
  769. repository.allowForks = false;
  770. user.canFork = false;
  771. assertFalse("named CAN fork!", user.canFork(repository));
  772. user.canFork = true;
  773. assertFalse("named CAN fork!", user.canFork(repository));
  774. repository.allowForks = true;
  775. assertTrue("named CAN NOT fork!", user.canFork(repository));
  776. }
  777. /**
  778. * CLONE_DELETE = CLONE access restriction, DELETE access permission
  779. */
  780. @Test
  781. public void testNamed_CLONE_DELETE() throws Exception {
  782. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  783. repository.authorizationControl = AuthorizationControl.NAMED;
  784. repository.accessRestriction = AccessRestrictionType.CLONE;
  785. UserModel user = new UserModel("test");
  786. user.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  787. assertTrue("named CAN NOT view!", user.canView(repository));
  788. assertTrue("named CAN NOT clone!", user.canClone(repository));
  789. assertTrue("named CAN NOT push!", user.canPush(repository));
  790. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  791. assertTrue("named CAN NOT delete red!", user.canDeleteRef(repository));
  792. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  793. assertEquals("named has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
  794. repository.allowForks = false;
  795. user.canFork = false;
  796. assertFalse("named CAN fork!", user.canFork(repository));
  797. user.canFork = true;
  798. assertFalse("named CAN fork!", user.canFork(repository));
  799. repository.allowForks = true;
  800. assertTrue("named CAN NOT fork!", user.canFork(repository));
  801. }
  802. /**
  803. * VIEW_DELETE = VIEW access restriction, DELETE access permission
  804. */
  805. @Test
  806. public void testNamed_VIEW_DELETE() throws Exception {
  807. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  808. repository.authorizationControl = AuthorizationControl.NAMED;
  809. repository.accessRestriction = AccessRestrictionType.VIEW;
  810. UserModel user = new UserModel("test");
  811. user.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  812. assertTrue("named CAN NOT view!", user.canView(repository));
  813. assertTrue("named CAN NOT clone!", user.canClone(repository));
  814. assertTrue("named CAN not push!", user.canPush(repository));
  815. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  816. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  817. assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
  818. assertEquals("named has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
  819. repository.allowForks = false;
  820. user.canFork = false;
  821. assertFalse("named CAN fork!", user.canFork(repository));
  822. user.canFork = true;
  823. assertFalse("named CAN fork!", user.canFork(repository));
  824. repository.allowForks = true;
  825. assertTrue("named CAN NOT fork!", user.canFork(repository));
  826. }
  827. /**
  828. * NONE_REWIND = NO access restriction, REWIND access permission.
  829. * (not useful scenario)
  830. */
  831. @Test
  832. public void testNamed_NONE_REWIND() throws Exception {
  833. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  834. repository.authorizationControl = AuthorizationControl.NAMED;
  835. repository.accessRestriction = AccessRestrictionType.NONE;
  836. UserModel user = new UserModel("test");
  837. user.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  838. assertTrue("named CAN NOT view!", user.canView(repository));
  839. assertTrue("named CAN NOT clone!", user.canClone(repository));
  840. assertTrue("named CAN NOT push!", user.canPush(repository));
  841. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  842. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  843. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  844. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  845. repository.allowForks = false;
  846. user.canFork = false;
  847. assertFalse("named CAN fork!", user.canFork(repository));
  848. user.canFork = true;
  849. assertFalse("named CAN fork!", user.canFork(repository));
  850. repository.allowForks = true;
  851. assertTrue("named CAN NOT fork!", user.canFork(repository));
  852. }
  853. /**
  854. * PUSH_REWIND = PUSH access restriction, REWIND access permission
  855. */
  856. @Test
  857. public void testNamed_PUSH_REWIND() throws Exception {
  858. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  859. repository.authorizationControl = AuthorizationControl.NAMED;
  860. repository.accessRestriction = AccessRestrictionType.PUSH;
  861. UserModel user = new UserModel("test");
  862. user.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  863. assertTrue("named CAN NOT view!", user.canView(repository));
  864. assertTrue("named CAN NOT clone!", user.canClone(repository));
  865. assertTrue("named CAN NOT push!", user.canPush(repository));
  866. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  867. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  868. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  869. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  870. repository.allowForks = false;
  871. user.canFork = false;
  872. assertFalse("named CAN fork!", user.canFork(repository));
  873. user.canFork = true;
  874. assertFalse("named CAN fork!", user.canFork(repository));
  875. repository.allowForks = true;
  876. assertTrue("named CAN NOT fork!", user.canFork(repository));
  877. }
  878. /**
  879. * CLONE_REWIND = CLONE access restriction, REWIND access permission
  880. */
  881. @Test
  882. public void testNamed_CLONE_REWIND() throws Exception {
  883. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  884. repository.authorizationControl = AuthorizationControl.NAMED;
  885. repository.accessRestriction = AccessRestrictionType.CLONE;
  886. UserModel user = new UserModel("test");
  887. user.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  888. assertTrue("named CAN NOT view!", user.canView(repository));
  889. assertTrue("named CAN NOT clone!", user.canClone(repository));
  890. assertTrue("named CAN NOT push!", user.canPush(repository));
  891. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  892. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  893. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  894. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  895. repository.allowForks = false;
  896. user.canFork = false;
  897. assertFalse("named CAN fork!", user.canFork(repository));
  898. user.canFork = true;
  899. assertFalse("named CAN fork!", user.canFork(repository));
  900. repository.allowForks = true;
  901. assertTrue("named CAN NOT fork!", user.canFork(repository));
  902. }
  903. /**
  904. * VIEW_REWIND = VIEW access restriction, REWIND access permission
  905. */
  906. @Test
  907. public void testNamed_VIEW_REWIND() throws Exception {
  908. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  909. repository.authorizationControl = AuthorizationControl.NAMED;
  910. repository.accessRestriction = AccessRestrictionType.VIEW;
  911. UserModel user = new UserModel("test");
  912. user.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  913. assertTrue("named CAN NOT view!", user.canView(repository));
  914. assertTrue("named CAN NOT clone!", user.canClone(repository));
  915. assertTrue("named CAN NOT push!", user.canPush(repository));
  916. assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
  917. assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
  918. assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
  919. assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  920. repository.allowForks = false;
  921. user.canFork = false;
  922. assertFalse("named CAN fork!", user.canFork(repository));
  923. user.canFork = true;
  924. assertFalse("named CAN fork!", user.canFork(repository));
  925. repository.allowForks = true;
  926. assertTrue("named CAN NOT fork!", user.canFork(repository));
  927. }
  928. /**
  929. * NONE_NONE = NO access restriction, NO access permission
  930. */
  931. @Test
  932. public void testTeam_NONE_NONE() throws Exception {
  933. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  934. repository.authorizationControl = AuthorizationControl.NAMED;
  935. repository.accessRestriction = AccessRestrictionType.NONE;
  936. TeamModel team = new TeamModel("test");
  937. assertTrue("team CAN NOT view!", team.canView(repository));
  938. assertTrue("team CAN NOT clone!", team.canClone(repository));
  939. assertTrue("team CAN NOT push!", team.canPush(repository));
  940. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  941. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  942. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  943. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  944. }
  945. /**
  946. * PUSH_NONE = PUSH access restriction, NO access permission
  947. */
  948. @Test
  949. public void testTeam_PUSH_NONE() throws Exception {
  950. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  951. repository.authorizationControl = AuthorizationControl.NAMED;
  952. repository.accessRestriction = AccessRestrictionType.PUSH;
  953. TeamModel team = new TeamModel("test");
  954. assertTrue("team CAN NOT view!", team.canView(repository));
  955. assertTrue("team CAN NOT clone!", team.canClone(repository));
  956. assertFalse("team CAN push!", team.canPush(repository));
  957. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  958. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  959. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  960. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
  961. }
  962. /**
  963. * CLONE_NONE = CLONE access restriction, NO access permission
  964. */
  965. @Test
  966. public void testTeam_CLONE_NONE() throws Exception {
  967. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  968. repository.authorizationControl = AuthorizationControl.NAMED;
  969. repository.accessRestriction = AccessRestrictionType.CLONE;
  970. TeamModel team = new TeamModel("test");
  971. assertTrue("team CAN NOT view!", team.canView(repository));
  972. assertFalse("team CAN clone!", team.canClone(repository));
  973. assertFalse("team CAN push!", team.canPush(repository));
  974. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  975. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  976. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  977. assertEquals("team has wrong permission!", AccessPermission.VIEW, team.getRepositoryPermission(repository).permission);
  978. }
  979. /**
  980. * VIEW_NONE = VIEW access restriction, NO access permission
  981. */
  982. @Test
  983. public void testTeam_VIEW_NONE() throws Exception {
  984. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  985. repository.authorizationControl = AuthorizationControl.NAMED;
  986. repository.accessRestriction = AccessRestrictionType.VIEW;
  987. TeamModel team = new TeamModel("test");
  988. assertFalse("team CAN view!", team.canView(repository));
  989. assertFalse("team CAN clone!", team.canClone(repository));
  990. assertFalse("team CAN push!", team.canPush(repository));
  991. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  992. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  993. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  994. assertEquals("team has wrong permission!", AccessPermission.NONE, team.getRepositoryPermission(repository).permission);
  995. }
  996. /**
  997. * NONE_PUSH = NO access restriction, PUSH access permission
  998. * (not useful scenario)
  999. */
  1000. @Test
  1001. public void testTeam_NONE_PUSH() throws Exception {
  1002. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1003. repository.authorizationControl = AuthorizationControl.NAMED;
  1004. repository.accessRestriction = AccessRestrictionType.NONE;
  1005. TeamModel team = new TeamModel("test");
  1006. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1007. assertTrue("team CAN NOT view!", team.canView(repository));
  1008. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1009. assertTrue("team CAN NOT push!", team.canPush(repository));
  1010. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1011. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1012. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1013. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1014. }
  1015. /**
  1016. * PUSH_PUSH = PUSH access restriction, PUSH access permission
  1017. */
  1018. @Test
  1019. public void testTeam_PUSH_PUSH() throws Exception {
  1020. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1021. repository.authorizationControl = AuthorizationControl.NAMED;
  1022. repository.accessRestriction = AccessRestrictionType.PUSH;
  1023. TeamModel team = new TeamModel("test");
  1024. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1025. assertTrue("team CAN NOT view!", team.canView(repository));
  1026. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1027. assertTrue("team CAN NOT push!", team.canPush(repository));
  1028. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1029. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1030. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1031. assertEquals("team has wrong permission!", AccessPermission.PUSH, team.getRepositoryPermission(repository).permission);
  1032. }
  1033. /**
  1034. * CLONE_PUSH = CLONE access restriction, PUSH access permission
  1035. */
  1036. @Test
  1037. public void testTeam_CLONE_PUSH() throws Exception {
  1038. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1039. repository.authorizationControl = AuthorizationControl.NAMED;
  1040. repository.accessRestriction = AccessRestrictionType.CLONE;
  1041. TeamModel team = new TeamModel("test");
  1042. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1043. assertTrue("team CAN NOT view!", team.canView(repository));
  1044. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1045. assertTrue("team CAN NOT push!", team.canPush(repository));
  1046. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1047. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1048. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1049. assertEquals("team has wrong permission!", AccessPermission.PUSH, team.getRepositoryPermission(repository).permission);
  1050. }
  1051. /**
  1052. * VIEW_PUSH = VIEW access restriction, PUSH access permission
  1053. */
  1054. @Test
  1055. public void testTeam_VIEW_PUSH() throws Exception {
  1056. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1057. repository.authorizationControl = AuthorizationControl.NAMED;
  1058. repository.accessRestriction = AccessRestrictionType.VIEW;
  1059. TeamModel team = new TeamModel("test");
  1060. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1061. assertTrue("team CAN NOT view!", team.canView(repository));
  1062. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1063. assertTrue("team CAN NOT push!", team.canPush(repository));
  1064. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1065. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1066. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1067. assertEquals("team has wrong permission!", AccessPermission.PUSH, team.getRepositoryPermission(repository).permission);
  1068. }
  1069. /**
  1070. * NONE_CREATE = NO access restriction, CREATE access permission
  1071. * (not useful scenario)
  1072. */
  1073. @Test
  1074. public void testTeam_NONE_CREATE() throws Exception {
  1075. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1076. repository.authorizationControl = AuthorizationControl.NAMED;
  1077. repository.accessRestriction = AccessRestrictionType.NONE;
  1078. TeamModel team = new TeamModel("test");
  1079. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1080. assertTrue("team CAN NOT view!", team.canView(repository));
  1081. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1082. assertTrue("team CAN NOT push!", team.canPush(repository));
  1083. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1084. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1085. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1086. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1087. }
  1088. /**
  1089. * PUSH_CREATE = PUSH access restriction, CREATE access permission
  1090. */
  1091. @Test
  1092. public void testTeam_PUSH_CREATE() throws Exception {
  1093. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1094. repository.authorizationControl = AuthorizationControl.NAMED;
  1095. repository.accessRestriction = AccessRestrictionType.PUSH;
  1096. TeamModel team = new TeamModel("test");
  1097. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1098. assertTrue("team CAN NOT view!", team.canView(repository));
  1099. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1100. assertTrue("team CAN NOT push!", team.canPush(repository));
  1101. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1102. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1103. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1104. assertEquals("team has wrong permission!", AccessPermission.CREATE, team.getRepositoryPermission(repository).permission);
  1105. }
  1106. /**
  1107. * CLONE_CREATE = CLONE access restriction, CREATE access permission
  1108. */
  1109. @Test
  1110. public void testTeam_CLONE_CREATE() throws Exception {
  1111. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1112. repository.authorizationControl = AuthorizationControl.NAMED;
  1113. repository.accessRestriction = AccessRestrictionType.CLONE;
  1114. TeamModel team = new TeamModel("test");
  1115. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1116. assertTrue("team CAN NOT view!", team.canView(repository));
  1117. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1118. assertTrue("team CAN NOT push!", team.canPush(repository));
  1119. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1120. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1121. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1122. assertEquals("team has wrong permission!", AccessPermission.CREATE, team.getRepositoryPermission(repository).permission);
  1123. }
  1124. /**
  1125. * VIEW_CREATE = VIEW access restriction, CREATE access permission
  1126. */
  1127. @Test
  1128. public void testTeam_VIEW_CREATE() throws Exception {
  1129. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1130. repository.authorizationControl = AuthorizationControl.NAMED;
  1131. repository.accessRestriction = AccessRestrictionType.VIEW;
  1132. TeamModel team = new TeamModel("test");
  1133. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1134. assertTrue("team CAN NOT view!", team.canView(repository));
  1135. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1136. assertTrue("team CAN NOT push!", team.canPush(repository));
  1137. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1138. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1139. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1140. assertEquals("team has wrong permission!", AccessPermission.CREATE, team.getRepositoryPermission(repository).permission);
  1141. }
  1142. /**
  1143. * NONE_DELETE = NO access restriction, DELETE access permission
  1144. * (not useful scenario)
  1145. */
  1146. @Test
  1147. public void testTeam_NONE_DELETE() throws Exception {
  1148. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1149. repository.authorizationControl = AuthorizationControl.NAMED;
  1150. repository.accessRestriction = AccessRestrictionType.NONE;
  1151. TeamModel team = new TeamModel("test");
  1152. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1153. assertTrue("team CAN NOT view!", team.canView(repository));
  1154. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1155. assertTrue("team CAN NOT push!", team.canPush(repository));
  1156. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1157. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1158. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1159. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1160. }
  1161. /**
  1162. * PUSH_DELETE = PUSH access restriction, DELETE access permission
  1163. */
  1164. @Test
  1165. public void testTeam_PUSH_DELETE() throws Exception {
  1166. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1167. repository.authorizationControl = AuthorizationControl.NAMED;
  1168. repository.accessRestriction = AccessRestrictionType.PUSH;
  1169. TeamModel team = new TeamModel("test");
  1170. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1171. assertTrue("team CAN NOT view!", team.canView(repository));
  1172. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1173. assertTrue("team CAN NOT push!", team.canPush(repository));
  1174. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1175. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1176. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1177. assertEquals("team has wrong permission!", AccessPermission.DELETE, team.getRepositoryPermission(repository).permission);
  1178. }
  1179. /**
  1180. * CLONE_DELETE = CLONE access restriction, DELETE access permission
  1181. */
  1182. @Test
  1183. public void testTeam_CLONE_DELETE() throws Exception {
  1184. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1185. repository.authorizationControl = AuthorizationControl.NAMED;
  1186. repository.accessRestriction = AccessRestrictionType.CLONE;
  1187. TeamModel team = new TeamModel("test");
  1188. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1189. assertTrue("team CAN NOT view!", team.canView(repository));
  1190. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1191. assertTrue("team CAN NOT push!", team.canPush(repository));
  1192. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1193. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1194. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1195. assertEquals("team has wrong permission!", AccessPermission.DELETE, team.getRepositoryPermission(repository).permission);
  1196. }
  1197. /**
  1198. * VIEW_DELETE = VIEW access restriction, DELETE access permission
  1199. */
  1200. @Test
  1201. public void testTeam_VIEW_DELETE() throws Exception {
  1202. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1203. repository.authorizationControl = AuthorizationControl.NAMED;
  1204. repository.accessRestriction = AccessRestrictionType.VIEW;
  1205. TeamModel team = new TeamModel("test");
  1206. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1207. assertTrue("team CAN NOT view!", team.canView(repository));
  1208. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1209. assertTrue("team CAN NOT push!", team.canPush(repository));
  1210. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1211. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1212. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1213. assertEquals("team has wrong permission!", AccessPermission.DELETE, team.getRepositoryPermission(repository).permission);
  1214. }
  1215. /**
  1216. * NONE_REWIND = NO access restriction, REWIND access permission
  1217. * (not useful scenario)
  1218. */
  1219. @Test
  1220. public void testTeam_NONE_REWIND() throws Exception {
  1221. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1222. repository.authorizationControl = AuthorizationControl.NAMED;
  1223. repository.accessRestriction = AccessRestrictionType.NONE;
  1224. TeamModel team = new TeamModel("test");
  1225. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1226. assertTrue("team CAN NOT view!", team.canView(repository));
  1227. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1228. assertTrue("team CAN NOT push!", team.canPush(repository));
  1229. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1230. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1231. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1232. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1233. }
  1234. /**
  1235. * PUSH_REWIND = PUSH access restriction, REWIND access permission
  1236. */
  1237. @Test
  1238. public void testTeam_PUSH_REWIND() throws Exception {
  1239. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1240. repository.authorizationControl = AuthorizationControl.NAMED;
  1241. repository.accessRestriction = AccessRestrictionType.PUSH;
  1242. TeamModel team = new TeamModel("test");
  1243. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1244. assertTrue("team CAN NOT view!", team.canView(repository));
  1245. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1246. assertTrue("team CAN NOT push!", team.canPush(repository));
  1247. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1248. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1249. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1250. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1251. }
  1252. /**
  1253. * CLONE_REWIND = CLONE access restriction, REWIND access permission
  1254. */
  1255. @Test
  1256. public void testTeam_CLONE_REWIND() throws Exception {
  1257. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1258. repository.authorizationControl = AuthorizationControl.NAMED;
  1259. repository.accessRestriction = AccessRestrictionType.CLONE;
  1260. TeamModel team = new TeamModel("test");
  1261. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1262. assertTrue("team CAN NOT view!", team.canView(repository));
  1263. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1264. assertTrue("team CAN NOT push!", team.canPush(repository));
  1265. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1266. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1267. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1268. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1269. }
  1270. /**
  1271. * VIEW_REWIND = VIEW access restriction, REWIND access permission
  1272. */
  1273. @Test
  1274. public void testTeam_VIEW_REWIND() throws Exception {
  1275. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1276. repository.authorizationControl = AuthorizationControl.NAMED;
  1277. repository.accessRestriction = AccessRestrictionType.VIEW;
  1278. TeamModel team = new TeamModel("test");
  1279. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1280. assertTrue("team CAN NOT view!", team.canView(repository));
  1281. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1282. assertTrue("team CAN NOT push!", team.canPush(repository));
  1283. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1284. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1285. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1286. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1287. }
  1288. /**
  1289. * NONE_CLONE = NO access restriction, CLONE access permission
  1290. * (not useful scenario)
  1291. */
  1292. @Test
  1293. public void testTeam_NONE_CLONE() throws Exception {
  1294. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1295. repository.authorizationControl = AuthorizationControl.NAMED;
  1296. repository.accessRestriction = AccessRestrictionType.NONE;
  1297. TeamModel team = new TeamModel("test");
  1298. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1299. assertTrue("team CAN NOT view!", team.canView(repository));
  1300. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1301. assertTrue("team CAN NOT push!", team.canPush(repository));
  1302. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1303. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1304. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1305. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1306. }
  1307. /**
  1308. * PUSH_CLONE = PUSH access restriction, CLONE access permission
  1309. */
  1310. @Test
  1311. public void testTeam_PUSH_CLONE() throws Exception {
  1312. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1313. repository.authorizationControl = AuthorizationControl.NAMED;
  1314. repository.accessRestriction = AccessRestrictionType.PUSH;
  1315. TeamModel team = new TeamModel("test");
  1316. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1317. assertTrue("team CAN NOT view!", team.canView(repository));
  1318. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1319. assertFalse("team CAN push!", team.canPush(repository));
  1320. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1321. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1322. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1323. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
  1324. }
  1325. /**
  1326. * CLONE_CLONE = CLONE access restriction, CLONE access permission
  1327. */
  1328. @Test
  1329. public void testTeam_CLONE_CLONE() throws Exception {
  1330. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1331. repository.authorizationControl = AuthorizationControl.NAMED;
  1332. repository.accessRestriction = AccessRestrictionType.CLONE;
  1333. TeamModel team = new TeamModel("test");
  1334. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1335. assertTrue("team CAN NOT view!", team.canView(repository));
  1336. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1337. assertFalse("team CAN push!", team.canPush(repository));
  1338. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1339. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1340. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1341. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
  1342. }
  1343. /**
  1344. * VIEW_CLONE = VIEW access restriction, CLONE access permission
  1345. */
  1346. @Test
  1347. public void testTeam_VIEW_CLONE() throws Exception {
  1348. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1349. repository.authorizationControl = AuthorizationControl.NAMED;
  1350. repository.accessRestriction = AccessRestrictionType.VIEW;
  1351. TeamModel team = new TeamModel("test");
  1352. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1353. assertTrue("team CAN NOT view!", team.canView(repository));
  1354. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1355. assertFalse("team CAN push!", team.canPush(repository));
  1356. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1357. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1358. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1359. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
  1360. }
  1361. /**
  1362. * NONE_VIEW = NO access restriction, VIEW access permission
  1363. * (not useful scenario)
  1364. */
  1365. @Test
  1366. public void testTeam_NONE_VIEW() throws Exception {
  1367. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1368. repository.authorizationControl = AuthorizationControl.NAMED;
  1369. repository.accessRestriction = AccessRestrictionType.NONE;
  1370. TeamModel team = new TeamModel("test");
  1371. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1372. assertTrue("team CAN NOT view!", team.canView(repository));
  1373. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1374. assertTrue("team CAN NOT push!", team.canPush(repository));
  1375. assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
  1376. assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
  1377. assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
  1378. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
  1379. }
  1380. /**
  1381. * PUSH_VIEW = PUSH access restriction, VIEW access permission
  1382. */
  1383. @Test
  1384. public void testTeam_PUSH_VIEW() throws Exception {
  1385. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1386. repository.authorizationControl = AuthorizationControl.NAMED;
  1387. repository.accessRestriction = AccessRestrictionType.PUSH;
  1388. TeamModel team = new TeamModel("test");
  1389. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1390. assertTrue("team CAN NOT view!", team.canView(repository));
  1391. assertTrue("team CAN NOT clone!", team.canClone(repository));
  1392. assertFalse("team CAN push!", team.canPush(repository));
  1393. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1394. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1395. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1396. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
  1397. }
  1398. /**
  1399. * CLONE_VIEW = CLONE access restriction, VIEW access permission
  1400. */
  1401. @Test
  1402. public void testTeam_CLONE_VIEW() throws Exception {
  1403. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1404. repository.authorizationControl = AuthorizationControl.NAMED;
  1405. repository.accessRestriction = AccessRestrictionType.CLONE;
  1406. TeamModel team = new TeamModel("test");
  1407. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1408. assertTrue("team CAN NOT view!", team.canView(repository));
  1409. assertFalse("team CAN clone!", team.canClone(repository));
  1410. assertFalse("team CAN push!", team.canPush(repository));
  1411. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1412. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1413. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1414. assertEquals("team has wrong permission!", AccessPermission.VIEW, team.getRepositoryPermission(repository).permission);
  1415. }
  1416. /**
  1417. * VIEW_VIEW = VIEW access restriction, VIEW access permission
  1418. */
  1419. @Test
  1420. public void testTeam_VIEW_VIEW() throws Exception {
  1421. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1422. repository.authorizationControl = AuthorizationControl.NAMED;
  1423. repository.accessRestriction = AccessRestrictionType.VIEW;
  1424. TeamModel team = new TeamModel("test");
  1425. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1426. assertTrue("team CAN NOT view!", team.canView(repository));
  1427. assertFalse("team CAN clone!", team.canClone(repository));
  1428. assertFalse("team CAN push!", team.canPush(repository));
  1429. assertFalse("team CAN create ref!", team.canCreateRef(repository));
  1430. assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
  1431. assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
  1432. assertEquals("team has wrong permission!", AccessPermission.VIEW, team.getRepositoryPermission(repository).permission);
  1433. }
  1434. /**
  1435. * NONE_NONE = NO access restriction, NO access permission
  1436. */
  1437. @Test
  1438. public void testTeamMember_NONE_NONE() throws Exception {
  1439. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1440. repository.authorizationControl = AuthorizationControl.NAMED;
  1441. repository.accessRestriction = AccessRestrictionType.NONE;
  1442. TeamModel team = new TeamModel("test");
  1443. UserModel user = new UserModel("test");
  1444. user.teams.add(team);
  1445. assertTrue("team member CAN NOT view!", user.canView(repository));
  1446. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1447. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1448. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1449. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1450. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1451. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1452. }
  1453. /**
  1454. * PUSH_NONE = PUSH access restriction, NO access permission
  1455. */
  1456. @Test
  1457. public void testTeamMember_PUSH_NONE() throws Exception {
  1458. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1459. repository.authorizationControl = AuthorizationControl.NAMED;
  1460. repository.accessRestriction = AccessRestrictionType.PUSH;
  1461. TeamModel team = new TeamModel("test");
  1462. UserModel user = new UserModel("test");
  1463. user.teams.add(team);
  1464. assertTrue("team member CAN NOT view!", user.canView(repository));
  1465. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1466. assertFalse("team member CAN push!", user.canPush(repository));
  1467. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1468. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1469. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1470. assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  1471. }
  1472. /**
  1473. * CLONE_NONE = CLONE access restriction, NO access permission
  1474. */
  1475. @Test
  1476. public void testTeamMember_CLONE_NONE() throws Exception {
  1477. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1478. repository.authorizationControl = AuthorizationControl.NAMED;
  1479. repository.accessRestriction = AccessRestrictionType.CLONE;
  1480. TeamModel team = new TeamModel("test");
  1481. UserModel user = new UserModel("test");
  1482. user.teams.add(team);
  1483. assertTrue("team member CAN NOT view!", user.canView(repository));
  1484. assertFalse("team member CAN clone!", user.canClone(repository));
  1485. assertFalse("team member CAN push!", user.canPush(repository));
  1486. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1487. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1488. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1489. assertEquals("team member has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
  1490. }
  1491. /**
  1492. * VIEW_NONE = VIEW access restriction, NO access permission
  1493. */
  1494. @Test
  1495. public void testTeamMember_VIEW_NONE() throws Exception {
  1496. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1497. repository.authorizationControl = AuthorizationControl.NAMED;
  1498. repository.accessRestriction = AccessRestrictionType.VIEW;
  1499. TeamModel team = new TeamModel("test");
  1500. UserModel user = new UserModel("test");
  1501. user.teams.add(team);
  1502. assertFalse("team member CAN view!", user.canView(repository));
  1503. assertFalse("team member CAN clone!", user.canClone(repository));
  1504. assertFalse("team member CAN push!", user.canPush(repository));
  1505. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1506. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1507. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1508. assertEquals("team member has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
  1509. }
  1510. /**
  1511. * NONE_PUSH = NO access restriction, PUSH access permission
  1512. * (not useful scenario)
  1513. */
  1514. @Test
  1515. public void testTeamMember_NONE_PUSH() throws Exception {
  1516. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1517. repository.authorizationControl = AuthorizationControl.NAMED;
  1518. repository.accessRestriction = AccessRestrictionType.NONE;
  1519. TeamModel team = new TeamModel("test");
  1520. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1521. UserModel user = new UserModel("test");
  1522. user.teams.add(team);
  1523. assertTrue("team member CAN NOT view!", user.canView(repository));
  1524. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1525. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1526. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1527. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1528. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1529. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1530. }
  1531. /**
  1532. * PUSH_PUSH = PUSH access restriction, PUSH access permission
  1533. */
  1534. @Test
  1535. public void testTeamMember_PUSH_PUSH() throws Exception {
  1536. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1537. repository.authorizationControl = AuthorizationControl.NAMED;
  1538. repository.accessRestriction = AccessRestrictionType.PUSH;
  1539. TeamModel team = new TeamModel("test");
  1540. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1541. UserModel user = new UserModel("test");
  1542. user.teams.add(team);
  1543. assertTrue("team member CAN NOT view!", user.canView(repository));
  1544. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1545. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1546. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1547. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1548. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1549. assertEquals("team member has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
  1550. }
  1551. /**
  1552. * CLONE_PUSH = CLONE access restriction, PUSH access permission
  1553. */
  1554. @Test
  1555. public void testTeamMember_CLONE_PUSH() throws Exception {
  1556. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1557. repository.authorizationControl = AuthorizationControl.NAMED;
  1558. repository.accessRestriction = AccessRestrictionType.CLONE;
  1559. TeamModel team = new TeamModel("test");
  1560. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1561. UserModel user = new UserModel("test");
  1562. user.teams.add(team);
  1563. assertTrue("team member CAN NOT view!", user.canView(repository));
  1564. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1565. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1566. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1567. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1568. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1569. assertEquals("team member has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
  1570. }
  1571. /**
  1572. * VIEW_PUSH = VIEW access restriction, PUSH access permission
  1573. */
  1574. @Test
  1575. public void testTeamMember_VIEW_PUSH() throws Exception {
  1576. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1577. repository.authorizationControl = AuthorizationControl.NAMED;
  1578. repository.accessRestriction = AccessRestrictionType.VIEW;
  1579. TeamModel team = new TeamModel("test");
  1580. team.setRepositoryPermission(repository.name, AccessPermission.PUSH);
  1581. UserModel user = new UserModel("test");
  1582. user.teams.add(team);
  1583. assertTrue("team member CAN NOT view!", user.canView(repository));
  1584. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1585. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1586. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1587. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1588. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1589. assertEquals("team member has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
  1590. }
  1591. /**
  1592. * NONE_CREATE = NO access restriction, CREATE access permission
  1593. * (not useful scenario)
  1594. */
  1595. @Test
  1596. public void testTeamMember_NONE_CREATE() throws Exception {
  1597. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1598. repository.authorizationControl = AuthorizationControl.NAMED;
  1599. repository.accessRestriction = AccessRestrictionType.NONE;
  1600. TeamModel team = new TeamModel("test");
  1601. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1602. UserModel user = new UserModel("test");
  1603. user.teams.add(team);
  1604. assertTrue("team member CAN NOT view!", user.canView(repository));
  1605. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1606. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1607. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1608. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1609. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1610. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1611. }
  1612. /**
  1613. * PUSH_CREATE = PUSH access restriction, CREATE access permission
  1614. */
  1615. @Test
  1616. public void testTeamMember_PUSH_CREATE() throws Exception {
  1617. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1618. repository.authorizationControl = AuthorizationControl.NAMED;
  1619. repository.accessRestriction = AccessRestrictionType.PUSH;
  1620. TeamModel team = new TeamModel("test");
  1621. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1622. UserModel user = new UserModel("test");
  1623. user.teams.add(team);
  1624. assertTrue("team member CAN NOT view!", user.canView(repository));
  1625. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1626. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1627. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1628. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1629. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1630. assertEquals("team member has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
  1631. }
  1632. /**
  1633. * CLONE_CREATE = CLONE access restriction, CREATE access permission
  1634. */
  1635. @Test
  1636. public void testTeamMember_CLONE_CREATE() throws Exception {
  1637. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1638. repository.authorizationControl = AuthorizationControl.NAMED;
  1639. repository.accessRestriction = AccessRestrictionType.CLONE;
  1640. TeamModel team = new TeamModel("test");
  1641. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1642. UserModel user = new UserModel("test");
  1643. user.teams.add(team);
  1644. assertTrue("team member CAN NOT view!", user.canView(repository));
  1645. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1646. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1647. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1648. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1649. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1650. assertEquals("team member has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
  1651. }
  1652. /**
  1653. * VIEW_CREATE = VIEW access restriction, CREATE access permission
  1654. */
  1655. @Test
  1656. public void testTeamMember_VIEW_CREATE() throws Exception {
  1657. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1658. repository.authorizationControl = AuthorizationControl.NAMED;
  1659. repository.accessRestriction = AccessRestrictionType.VIEW;
  1660. TeamModel team = new TeamModel("test");
  1661. team.setRepositoryPermission(repository.name, AccessPermission.CREATE);
  1662. UserModel user = new UserModel("test");
  1663. user.teams.add(team);
  1664. assertTrue("team member CAN NOT view!", user.canView(repository));
  1665. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1666. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1667. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1668. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1669. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1670. assertEquals("team member has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
  1671. }
  1672. /**
  1673. * NONE_DELETE = NO access restriction, DELETE access permission
  1674. * (not useful scenario)
  1675. */
  1676. @Test
  1677. public void testTeamMember_NONE_DELETE() throws Exception {
  1678. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1679. repository.authorizationControl = AuthorizationControl.NAMED;
  1680. repository.accessRestriction = AccessRestrictionType.NONE;
  1681. TeamModel team = new TeamModel("test");
  1682. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1683. UserModel user = new UserModel("test");
  1684. user.teams.add(team);
  1685. assertTrue("team member CAN NOT view!", user.canView(repository));
  1686. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1687. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1688. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1689. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1690. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1691. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1692. }
  1693. /**
  1694. * PUSH_DELETE = PUSH access restriction, DELETE access permission
  1695. */
  1696. @Test
  1697. public void testTeamMember_PUSH_DELETE() throws Exception {
  1698. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1699. repository.authorizationControl = AuthorizationControl.NAMED;
  1700. repository.accessRestriction = AccessRestrictionType.PUSH;
  1701. TeamModel team = new TeamModel("test");
  1702. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1703. UserModel user = new UserModel("test");
  1704. user.teams.add(team);
  1705. assertTrue("team member CAN NOT view!", user.canView(repository));
  1706. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1707. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1708. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1709. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1710. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1711. assertEquals("team member has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
  1712. }
  1713. /**
  1714. * CLONE_DELETE = CLONE access restriction, DELETE access permission
  1715. */
  1716. @Test
  1717. public void testTeamMember_CLONE_DELETE() throws Exception {
  1718. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1719. repository.authorizationControl = AuthorizationControl.NAMED;
  1720. repository.accessRestriction = AccessRestrictionType.CLONE;
  1721. TeamModel team = new TeamModel("test");
  1722. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1723. UserModel user = new UserModel("test");
  1724. user.teams.add(team);
  1725. assertTrue("team member CAN NOT view!", user.canView(repository));
  1726. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1727. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1728. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1729. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1730. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1731. assertEquals("team member has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
  1732. }
  1733. /**
  1734. * VIEW_DELETE = VIEW access restriction, DELETE access permission
  1735. */
  1736. @Test
  1737. public void testTeamMember_VIEW_DELETE() throws Exception {
  1738. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1739. repository.authorizationControl = AuthorizationControl.NAMED;
  1740. repository.accessRestriction = AccessRestrictionType.VIEW;
  1741. TeamModel team = new TeamModel("test");
  1742. team.setRepositoryPermission(repository.name, AccessPermission.DELETE);
  1743. UserModel user = new UserModel("test");
  1744. user.teams.add(team);
  1745. assertTrue("team member CAN NOT view!", user.canView(repository));
  1746. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1747. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1748. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1749. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1750. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1751. assertEquals("team member has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
  1752. }
  1753. /**
  1754. * NONE_REWIND = NO access restriction, REWIND access permission
  1755. * (not useful scenario)
  1756. */
  1757. @Test
  1758. public void testTeamMember_NONE_REWIND() throws Exception {
  1759. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1760. repository.authorizationControl = AuthorizationControl.NAMED;
  1761. repository.accessRestriction = AccessRestrictionType.NONE;
  1762. TeamModel team = new TeamModel("test");
  1763. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1764. UserModel user = new UserModel("test");
  1765. user.teams.add(team);
  1766. assertTrue("team member CAN NOT view!", user.canView(repository));
  1767. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1768. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1769. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1770. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1771. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1772. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1773. }
  1774. /**
  1775. * PUSH_REWIND = PUSH access restriction, REWIND access permission
  1776. */
  1777. @Test
  1778. public void testTeamMember_PUSH_REWIND() throws Exception {
  1779. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1780. repository.authorizationControl = AuthorizationControl.NAMED;
  1781. repository.accessRestriction = AccessRestrictionType.PUSH;
  1782. TeamModel team = new TeamModel("test");
  1783. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1784. UserModel user = new UserModel("test");
  1785. user.teams.add(team);
  1786. assertTrue("team member CAN NOT view!", user.canView(repository));
  1787. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1788. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1789. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1790. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1791. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1792. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1793. }
  1794. /**
  1795. * CLONE_REWIND = CLONE access restriction, REWIND access permission
  1796. */
  1797. @Test
  1798. public void testTeamMember_CLONE_REWIND() throws Exception {
  1799. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1800. repository.authorizationControl = AuthorizationControl.NAMED;
  1801. repository.accessRestriction = AccessRestrictionType.CLONE;
  1802. TeamModel team = new TeamModel("test");
  1803. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1804. UserModel user = new UserModel("test");
  1805. user.teams.add(team);
  1806. assertTrue("team member CAN NOT view!", user.canView(repository));
  1807. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1808. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1809. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1810. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1811. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1812. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1813. }
  1814. /**
  1815. * VIEW_REWIND = VIEW access restriction, REWIND access permission
  1816. */
  1817. @Test
  1818. public void testTeamMember_VIEW_REWIND() throws Exception {
  1819. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1820. repository.authorizationControl = AuthorizationControl.NAMED;
  1821. repository.accessRestriction = AccessRestrictionType.VIEW;
  1822. TeamModel team = new TeamModel("test");
  1823. team.setRepositoryPermission(repository.name, AccessPermission.REWIND);
  1824. UserModel user = new UserModel("test");
  1825. user.teams.add(team);
  1826. assertTrue("team member CAN NOT view!", user.canView(repository));
  1827. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1828. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1829. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1830. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1831. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1832. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1833. }
  1834. /**
  1835. * NONE_CLONE = NO access restriction, CLONE access permission
  1836. * (not useful scenario)
  1837. */
  1838. @Test
  1839. public void testTeamMember_NONE_CLONE() throws Exception {
  1840. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1841. repository.authorizationControl = AuthorizationControl.NAMED;
  1842. repository.accessRestriction = AccessRestrictionType.NONE;
  1843. TeamModel team = new TeamModel("test");
  1844. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1845. UserModel user = new UserModel("test");
  1846. user.teams.add(team);
  1847. assertTrue("team member CAN NOT view!", user.canView(repository));
  1848. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1849. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1850. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1851. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1852. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1853. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1854. }
  1855. /**
  1856. * PUSH_CLONE = PUSH access restriction, CLONE access permission
  1857. */
  1858. @Test
  1859. public void testTeamMember_PUSH_CLONE() throws Exception {
  1860. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1861. repository.authorizationControl = AuthorizationControl.NAMED;
  1862. repository.accessRestriction = AccessRestrictionType.PUSH;
  1863. TeamModel team = new TeamModel("test");
  1864. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1865. UserModel user = new UserModel("test");
  1866. user.teams.add(team);
  1867. assertTrue("team member CAN NOT view!", user.canView(repository));
  1868. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1869. assertFalse("team member CAN push!", user.canPush(repository));
  1870. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1871. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1872. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1873. assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  1874. }
  1875. /**
  1876. * CLONE_CLONE = CLONE access restriction, CLONE access permission
  1877. */
  1878. @Test
  1879. public void testTeamMember_CLONE_CLONE() throws Exception {
  1880. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1881. repository.authorizationControl = AuthorizationControl.NAMED;
  1882. repository.accessRestriction = AccessRestrictionType.CLONE;
  1883. TeamModel team = new TeamModel("test");
  1884. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1885. UserModel user = new UserModel("test");
  1886. user.teams.add(team);
  1887. assertTrue("team member CAN NOT view!", user.canView(repository));
  1888. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1889. assertFalse("team member CAN push!", user.canPush(repository));
  1890. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1891. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1892. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1893. assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  1894. }
  1895. /**
  1896. * VIEW_CLONE = VIEW access restriction, CLONE access permission
  1897. */
  1898. @Test
  1899. public void testTeamMember_VIEW_CLONE() throws Exception {
  1900. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1901. repository.authorizationControl = AuthorizationControl.NAMED;
  1902. repository.accessRestriction = AccessRestrictionType.VIEW;
  1903. TeamModel team = new TeamModel("test");
  1904. team.setRepositoryPermission(repository.name, AccessPermission.CLONE);
  1905. UserModel user = new UserModel("test");
  1906. user.teams.add(team);
  1907. assertTrue("team member CAN NOT view!", user.canView(repository));
  1908. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1909. assertFalse("team member CAN push!", user.canPush(repository));
  1910. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1911. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1912. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1913. assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  1914. }
  1915. /**
  1916. * NONE_VIEW = NO access restriction, VIEW access permission
  1917. * (not useful scenario)
  1918. */
  1919. @Test
  1920. public void testTeamMember_NONE_VIEW() throws Exception {
  1921. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1922. repository.authorizationControl = AuthorizationControl.NAMED;
  1923. repository.accessRestriction = AccessRestrictionType.NONE;
  1924. TeamModel team = new TeamModel("test");
  1925. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1926. UserModel user = new UserModel("test");
  1927. user.teams.add(team);
  1928. assertTrue("team member CAN NOT view!", user.canView(repository));
  1929. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1930. assertTrue("team member CAN NOT push!", user.canPush(repository));
  1931. assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
  1932. assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
  1933. assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
  1934. assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  1935. }
  1936. /**
  1937. * PUSH_VIEW = PUSH access restriction, VIEW access permission
  1938. */
  1939. @Test
  1940. public void testTeamMember_PUSH_VIEW() throws Exception {
  1941. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1942. repository.authorizationControl = AuthorizationControl.NAMED;
  1943. repository.accessRestriction = AccessRestrictionType.PUSH;
  1944. TeamModel team = new TeamModel("test");
  1945. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1946. UserModel user = new UserModel("test");
  1947. user.teams.add(team);
  1948. assertTrue("team member CAN NOT view!", user.canView(repository));
  1949. assertTrue("team member CAN NOT clone!", user.canClone(repository));
  1950. assertFalse("team member CAN push!", user.canPush(repository));
  1951. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1952. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1953. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1954. assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  1955. }
  1956. /**
  1957. * CLONE_VIEW = CLONE access restriction, VIEW access permission
  1958. */
  1959. @Test
  1960. public void testTeamMember_CLONE_VIEW() throws Exception {
  1961. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1962. repository.authorizationControl = AuthorizationControl.NAMED;
  1963. repository.accessRestriction = AccessRestrictionType.CLONE;
  1964. TeamModel team = new TeamModel("test");
  1965. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1966. UserModel user = new UserModel("test");
  1967. user.teams.add(team);
  1968. assertTrue("team member CAN NOT view!", user.canView(repository));
  1969. assertFalse("team member CAN clone!", user.canClone(repository));
  1970. assertFalse("team member CAN push!", user.canPush(repository));
  1971. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1972. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1973. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1974. assertEquals("team member has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
  1975. }
  1976. /**
  1977. * VIEW_VIEW = VIEW access restriction, VIEW access permission
  1978. */
  1979. @Test
  1980. public void testTeamMember_VIEW_VIEW() throws Exception {
  1981. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1982. repository.authorizationControl = AuthorizationControl.NAMED;
  1983. repository.accessRestriction = AccessRestrictionType.VIEW;
  1984. TeamModel team = new TeamModel("test");
  1985. team.setRepositoryPermission(repository.name, AccessPermission.VIEW);
  1986. UserModel user = new UserModel("test");
  1987. user.teams.add(team);
  1988. assertTrue("team member CAN NOT view!", user.canView(repository));
  1989. assertFalse("team member CAN clone!", user.canClone(repository));
  1990. assertFalse("team member CAN push!", user.canPush(repository));
  1991. assertFalse("team member CAN create ref!", user.canCreateRef(repository));
  1992. assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
  1993. assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
  1994. assertEquals("team member has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
  1995. }
  1996. @Test
  1997. public void testOwner() throws Exception {
  1998. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  1999. repository.authorizationControl = AuthorizationControl.NAMED;
  2000. repository.accessRestriction = AccessRestrictionType.VIEW;
  2001. UserModel user = new UserModel("test");
  2002. repository.addOwner(user.username);
  2003. assertFalse("user SHOULD NOT HAVE a repository permission!", user.hasRepositoryPermission(repository.name));
  2004. assertTrue("owner CAN NOT view!", user.canView(repository));
  2005. assertTrue("owner CAN NOT clone!", user.canClone(repository));
  2006. assertTrue("owner CAN NOT push!", user.canPush(repository));
  2007. assertTrue("owner CAN NOT create ref!", user.canCreateRef(repository));
  2008. assertTrue("owner CAN NOT delete ref!", user.canDeleteRef(repository));
  2009. assertTrue("owner CAN NOT rewind ref!", user.canRewindRef(repository));
  2010. assertEquals("owner has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  2011. assertTrue("owner CAN NOT fork!", user.canFork(repository));
  2012. assertFalse("owner CAN NOT delete!", user.canDelete(repository));
  2013. assertTrue("owner CAN NOT edit!", user.canEdit(repository));
  2014. }
  2015. @Test
  2016. public void testMultipleOwners() throws Exception {
  2017. RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
  2018. repository.authorizationControl = AuthorizationControl.NAMED;
  2019. repository.accessRestriction = AccessRestrictionType.VIEW;
  2020. UserModel user = new UserModel("test");
  2021. repository.addOwner(user.username);
  2022. UserModel user2 = new UserModel("test2");
  2023. repository.addOwner(user2.username);
  2024. // first owner
  2025. assertFalse("user SHOULD NOT HAVE a repository permission!", user.hasRepositoryPermission(repository.name));
  2026. assertTrue("owner CAN NOT view!", user.canView(repository));
  2027. assertTrue("owner CAN NOT clone!", user.canClone(repository));
  2028. assertTrue("owner CAN NOT push!", user.canPush(repository));
  2029. assertTrue("owner CAN NOT create ref!", user.canCreateRef(repository));
  2030. assertTrue("owner CAN NOT delete ref!", user.canDeleteRef(repository));
  2031. assertTrue("owner CAN NOT rewind ref!", user.canRewindRef(repository));
  2032. assertEquals("owner has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  2033. assertTrue("owner CAN NOT fork!", user.canFork(repository));
  2034. assertFalse("owner CAN NOT delete!", user.canDelete(repository));
  2035. assertTrue("owner CAN NOT edit!", user.canEdit(repository));
  2036. // second owner
  2037. assertFalse("user SHOULD NOT HAVE a repository permission!", user2.hasRepositoryPermission(repository.name));
  2038. assertTrue("owner CAN NOT view!", user2.canView(repository));
  2039. assertTrue("owner CAN NOT clone!", user2.canClone(repository));
  2040. assertTrue("owner CAN NOT push!", user2.canPush(repository));
  2041. assertTrue("owner CAN NOT create ref!", user2.canCreateRef(repository));
  2042. assertTrue("owner CAN NOT delete ref!", user2.canDeleteRef(repository));
  2043. assertTrue("owner CAN NOT rewind ref!", user2.canRewindRef(repository));
  2044. assertEquals("owner has wrong permission!", AccessPermission.REWIND, user2.getRepositoryPermission(repository).permission);
  2045. assertTrue("owner CAN NOT fork!", user2.canFork(repository));
  2046. assertFalse("owner CAN NOT delete!", user2.canDelete(repository));
  2047. assertTrue("owner CAN NOT edit!", user2.canEdit(repository));
  2048. assertTrue(repository.isOwner(user.username));
  2049. assertTrue(repository.isOwner(user2.username));
  2050. }
  2051. @Test
  2052. public void testOwnerPersonalRepository() throws Exception {
  2053. RepositoryModel repository = new RepositoryModel("~test/myrepo.git", null, null, new Date());
  2054. repository.authorizationControl = AuthorizationControl.NAMED;
  2055. repository.accessRestriction = AccessRestrictionType.VIEW;
  2056. UserModel user = new UserModel("test");
  2057. repository.addOwner(user.username);
  2058. assertFalse("user SHOULD NOT HAVE a repository permission!", user.hasRepositoryPermission(repository.name));
  2059. assertTrue("user CAN NOT view!", user.canView(repository));
  2060. assertTrue("user CAN NOT clone!", user.canClone(repository));
  2061. assertTrue("user CAN NOT push!", user.canPush(repository));
  2062. assertTrue("user CAN NOT create ref!", user.canCreateRef(repository));
  2063. assertTrue("user CAN NOT delete ref!", user.canDeleteRef(repository));
  2064. assertTrue("user CAN NOT rewind ref!", user.canRewindRef(repository));
  2065. assertEquals("user has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
  2066. assertFalse("user CAN fork!", user.canFork(repository));
  2067. assertTrue("user CAN NOT delete!", user.canDelete(repository));
  2068. assertTrue("user CAN NOT edit!", user.canEdit(repository));
  2069. }
  2070. @Test
  2071. public void testVisitorPersonalRepository() throws Exception {
  2072. RepositoryModel repository = new RepositoryModel("~test/myrepo.git", null, null, new Date());
  2073. repository.authorizationControl = AuthorizationControl.NAMED;
  2074. repository.accessRestriction = AccessRestrictionType.VIEW;
  2075. UserModel user = new UserModel("visitor");
  2076. repository.addOwner("test");
  2077. assertFalse("user HAS a repository permission!", user.hasRepositoryPermission(repository.name));
  2078. assertFalse("user CAN view!", user.canView(repository));
  2079. assertFalse("user CAN clone!", user.canClone(repository));
  2080. assertFalse("user CAN push!", user.canPush(repository));
  2081. assertFalse("user CAN create ref!", user.canCreateRef(repository));
  2082. assertFalse("user CAN delete ref!", user.canDeleteRef(repository));
  2083. assertFalse("user CAN rewind ref!", user.canRewindRef(repository));
  2084. assertEquals("user has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
  2085. assertFalse("user CAN fork!", user.canFork(repository));
  2086. assertFalse("user CAN delete!", user.canDelete(repository));
  2087. assertFalse("user CAN edit!", user.canEdit(repository));
  2088. }
  2089. @Test
  2090. public void testRegexMatching() throws Exception {
  2091. RepositoryModel repository = new RepositoryModel("ubercool/_my-r/e~po.git", null, null, new Date());
  2092. repository.authorizationControl = AuthorizationControl.NAMED;
  2093. repository.accessRestriction = AccessRestrictionType.VIEW;
  2094. UserModel user = new UserModel("test");
  2095. user.setRepositoryPermission("ubercool/[A-Z0-9-~_\\./]+", AccessPermission.CLONE);
  2096. assertTrue("user DOES NOT HAVE a repository permission!", user.hasRepositoryPermission(repository.name));
  2097. assertTrue("user CAN NOT view!", user.canView(repository));
  2098. assertTrue("user CAN NOT clone!", user.canClone(repository));
  2099. assertFalse("user CAN push!", user.canPush(repository));
  2100. assertFalse("user CAN create ref!", user.canCreateRef(repository));
  2101. assertFalse("user CAN delete ref!", user.canDeleteRef(repository));
  2102. assertFalse("user CAN rewind ref!", user.canRewindRef(repository));
  2103. assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
  2104. assertFalse("user CAN fork!", user.canFork(repository));
  2105. assertFalse("user CAN delete!", user.canDelete(repository));
  2106. assertFalse("user CAN edit!", user.canEdit(repository));
  2107. }
  2108. @Test
  2109. public void testRegexIncludeCommonExcludePersonal() throws Exception {
  2110. UserModel user = new UserModel("test");
  2111. user.setRepositoryPermission("[^~].*", AccessPermission.CLONE);
  2112. // common
  2113. RepositoryModel common = new RepositoryModel("ubercool/_my-r/e~po.git", null, null, new Date());
  2114. common.authorizationControl = AuthorizationControl.NAMED;
  2115. common.accessRestriction = AccessRestrictionType.VIEW;
  2116. assertTrue("user DOES NOT HAVE a repository permission!", user.hasRepositoryPermission(common.name));
  2117. assertTrue("user CAN NOT view!", user.canView(common));
  2118. assertTrue("user CAN NOT clone!", user.canClone(common));
  2119. assertFalse("user CAN push!", user.canPush(common));
  2120. assertFalse("user CAN create ref!", user.canCreateRef(common));
  2121. assertFalse("user CAN delete ref!", user.canDeleteRef(common));
  2122. assertFalse("user CAN rewind ref!", user.canRewindRef(common));
  2123. assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(common).permission);
  2124. assertFalse("user CAN fork!", user.canFork(common));
  2125. assertFalse("user CAN delete!", user.canDelete(common));
  2126. assertFalse("user CAN edit!", user.canEdit(common));
  2127. // personal
  2128. RepositoryModel personal = new RepositoryModel("~ubercool/_my-r/e~po.git", null, null, new Date());
  2129. personal.authorizationControl = AuthorizationControl.NAMED;
  2130. personal.accessRestriction = AccessRestrictionType.VIEW;
  2131. assertFalse("user HAS a repository permission!", user.hasRepositoryPermission(personal.name));
  2132. assertFalse("user CAN NOT view!", user.canView(personal));
  2133. assertFalse("user CAN NOT clone!", user.canClone(personal));
  2134. assertFalse("user CAN push!", user.canPush(personal));
  2135. assertFalse("user CAN create ref!", user.canCreateRef(personal));
  2136. assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
  2137. assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
  2138. assertEquals("user has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(personal).permission);
  2139. assertFalse("user CAN fork!", user.canFork(personal));
  2140. assertFalse("user CAN delete!", user.canDelete(personal));
  2141. assertFalse("user CAN edit!", user.canEdit(personal));
  2142. }
  2143. @Test
  2144. public void testRegexMatching2() throws Exception {
  2145. RepositoryModel personal = new RepositoryModel("~ubercool/_my-r/e~po.git", null, null, new Date());
  2146. personal.authorizationControl = AuthorizationControl.NAMED;
  2147. personal.accessRestriction = AccessRestrictionType.VIEW;
  2148. UserModel user = new UserModel("test");
  2149. // permit all repositories excluding all personal rpeositories
  2150. user.setRepositoryPermission("[^~].*", AccessPermission.CLONE);
  2151. // permitall ~ubercool repositories
  2152. user.setRepositoryPermission("~ubercool/.*", AccessPermission.CLONE);
  2153. // personal
  2154. assertTrue("user DOES NOT HAVE a repository permission!", user.hasRepositoryPermission(personal.name));
  2155. assertTrue("user CAN NOT view!", user.canView(personal));
  2156. assertTrue("user CAN NOT clone!", user.canClone(personal));
  2157. assertFalse("user CAN push!", user.canPush(personal));
  2158. assertFalse("user CAN create ref!", user.canCreateRef(personal));
  2159. assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
  2160. assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
  2161. assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(personal).permission);
  2162. assertFalse("user CAN fork!", user.canFork(personal));
  2163. assertFalse("user CAN delete!", user.canDelete(personal));
  2164. assertFalse("user CAN edit!", user.canEdit(personal));
  2165. }
  2166. @Test
  2167. public void testRegexOrder() throws Exception {
  2168. RepositoryModel personal = new RepositoryModel("~ubercool/_my-r/e~po.git", null, null, new Date());
  2169. personal.authorizationControl = AuthorizationControl.NAMED;
  2170. personal.accessRestriction = AccessRestrictionType.VIEW;
  2171. UserModel user = new UserModel("test");
  2172. user.setRepositoryPermission(".*", AccessPermission.PUSH);
  2173. user.setRepositoryPermission("~ubercool/.*", AccessPermission.CLONE);
  2174. // has PUSH access because first match is PUSH permission
  2175. assertTrue("user HAS a repository permission!", user.hasRepositoryPermission(personal.name));
  2176. assertTrue("user CAN NOT view!", user.canView(personal));
  2177. assertTrue("user CAN NOT clone!", user.canClone(personal));
  2178. assertTrue("user CAN NOT push!", user.canPush(personal));
  2179. assertFalse("user CAN create ref!", user.canCreateRef(personal));
  2180. assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
  2181. assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
  2182. assertEquals("user has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(personal).permission);
  2183. assertFalse("user CAN fork!", user.canFork(personal));
  2184. assertFalse("user CAN delete!", user.canDelete(personal));
  2185. assertFalse("user CAN edit!", user.canEdit(personal));
  2186. user.permissions.clear();
  2187. user.setRepositoryPermission("~ubercool/.*", AccessPermission.CLONE);
  2188. user.setRepositoryPermission(".*", AccessPermission.PUSH);
  2189. // has CLONE access because first match is CLONE permission
  2190. assertTrue("user HAS a repository permission!", user.hasRepositoryPermission(personal.name));
  2191. assertTrue("user CAN NOT view!", user.canView(personal));
  2192. assertTrue("user CAN NOT clone!", user.canClone(personal));
  2193. assertFalse("user CAN push!", user.canPush(personal));
  2194. assertFalse("user CAN create ref!", user.canCreateRef(personal));
  2195. assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
  2196. assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
  2197. assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(personal).permission);
  2198. assertFalse("user CAN fork!", user.canFork(personal));
  2199. assertFalse("user CAN delete!", user.canDelete(personal));
  2200. assertFalse("user CAN edit!", user.canEdit(personal));
  2201. }
  2202. @Test
  2203. public void testExclusion() throws Exception {
  2204. RepositoryModel personal = new RepositoryModel("~ubercool/_my-r/e~po.git", null, null, new Date());
  2205. personal.authorizationControl = AuthorizationControl.NAMED;
  2206. personal.accessRestriction = AccessRestrictionType.VIEW;
  2207. UserModel user = new UserModel("test");
  2208. user.setRepositoryPermission("~ubercool/.*", AccessPermission.EXCLUDE);
  2209. user.setRepositoryPermission(".*", AccessPermission.PUSH);
  2210. // has EXCLUDE access because first match is EXCLUDE permission
  2211. assertTrue("user DOES NOT HAVE a repository permission!", user.hasRepositoryPermission(personal.name));
  2212. assertFalse("user CAN NOT view!", user.canView(personal));
  2213. assertFalse("user CAN NOT clone!", user.canClone(personal));
  2214. assertFalse("user CAN push!", user.canPush(personal));
  2215. assertFalse("user CAN create ref!", user.canCreateRef(personal));
  2216. assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
  2217. assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
  2218. assertEquals("user has wrong permission!", AccessPermission.EXCLUDE, user.getRepositoryPermission(personal).permission);
  2219. assertFalse("user CAN fork!", user.canFork(personal));
  2220. assertFalse("user CAN delete!", user.canDelete(personal));
  2221. assertFalse("user CAN edit!", user.canEdit(personal));
  2222. }
  2223. @Test
  2224. public void testAdminTeamInheritance() throws Exception {
  2225. UserModel user = new UserModel("test");
  2226. TeamModel team = new TeamModel("team");
  2227. team.canAdmin = true;
  2228. user.teams.add(team);
  2229. assertTrue("User did not inherit admin privileges", user.canAdmin());
  2230. }
  2231. @Test
  2232. public void testForkTeamInheritance() throws Exception {
  2233. UserModel user = new UserModel("test");
  2234. TeamModel team = new TeamModel("team");
  2235. team.canFork = true;
  2236. user.teams.add(team);
  2237. assertTrue("User did not inherit fork privileges", user.canFork());
  2238. }
  2239. @Test
  2240. public void testCreateTeamInheritance() throws Exception {
  2241. UserModel user = new UserModel("test");
  2242. TeamModel team = new TeamModel("team");
  2243. team.canCreate= true;
  2244. user.teams.add(team);
  2245. assertTrue("User did not inherit create privileges", user.canCreate());
  2246. }
  2247. @Test
  2248. public void testIsFrozen() throws Exception {
  2249. RepositoryModel repo = new RepositoryModel("somerepo.git", null, null, new Date());
  2250. repo.authorizationControl = AuthorizationControl.NAMED;
  2251. repo.accessRestriction = AccessRestrictionType.NONE;
  2252. UserModel user = new UserModel("test");
  2253. TeamModel team = new TeamModel("team");
  2254. assertEquals("user has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repo).permission);
  2255. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repo).permission);
  2256. // freeze repo
  2257. repo.isFrozen = true;
  2258. assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repo).permission);
  2259. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repo).permission);
  2260. }
  2261. @Test
  2262. public void testIsBare() throws Exception {
  2263. RepositoryModel repo = new RepositoryModel("somerepo.git", null, null, new Date());
  2264. repo.authorizationControl = AuthorizationControl.NAMED;
  2265. repo.accessRestriction = AccessRestrictionType.NONE;
  2266. UserModel user = new UserModel("test");
  2267. TeamModel team = new TeamModel("team");
  2268. assertEquals("user has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repo).permission);
  2269. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repo).permission);
  2270. // set repo to have a working copy, pushes prohibited
  2271. repo.isBare = false;
  2272. assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repo).permission);
  2273. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repo).permission);
  2274. }
  2275. @Test
  2276. public void testIsMirror() throws Exception {
  2277. RepositoryModel repo = new RepositoryModel("somerepo.git", null, null, new Date());
  2278. repo.authorizationControl = AuthorizationControl.NAMED;
  2279. repo.accessRestriction = AccessRestrictionType.NONE;
  2280. UserModel user = new UserModel("test");
  2281. TeamModel team = new TeamModel("team");
  2282. assertEquals("user has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repo).permission);
  2283. assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repo).permission);
  2284. // set repo to be a mirror, pushes prohibited
  2285. repo.isMirror = true;
  2286. assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repo).permission);
  2287. assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repo).permission);
  2288. }
  2289. }