Produced by Araxis Merge on 6/18/2018 3:37:03 PM Eastern Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.
| # | Location | File | Last Modified |
|---|---|---|---|
| 1 | CTT_DM2_v7.zip\CTT_ntrt-jira-ssoi-authenticator\authenticator\src\test\java\gov\vha\ctt\ntrt | SsoiAuthenticatorTest.java | Tue Jun 12 16:41:56 2018 UTC |
| 2 | CTT_DM2_v7.zip\CTT_ntrt-jira-ssoi-authenticator\authenticator\src\test\java\gov\vha\ctt\ntrt | SsoiAuthenticatorTest.java | Tue Jun 12 21:08:13 2018 UTC |
| Description | Between Files 1 and 2 |
|
|---|---|---|
| Text Blocks | Lines | |
| Unchanged | 6 | 1358 |
| Changed | 5 | 10 |
| Inserted | 0 | 0 |
| Removed | 0 | 0 |
| Whitespace | |
|---|---|
| Character case | Differences in character case are significant |
| Line endings | Differences in line endings (CR and LF characters) are ignored |
| CR/LF characters | Not shown in the comparison detail |
No regular expressions were active.
| 1 | package go v.vha.ctt. ntrt; | |
| 2 | ||
| 3 | import com .atlassian .crowd.emb edded.api. Group; | |
| 4 | import com .atlassian .crowd.exc eption.Ope rationFail edExceptio n; | |
| 5 | import com .atlassian .jira.bc.p rojectrole s.ProjectR oleService ; | |
| 6 | import com .atlassian .jira.exce ption.Crea teExceptio n; | |
| 7 | import com .atlassian .jira.juni t.rules.Av ailableInC ontainer; | |
| 8 | import com .atlassian .jira.juni t.rules.Mo ckitoConta iner; | |
| 9 | import com .atlassian .jira.juni t.rules.Mo ckitoMocks InContaine r; | |
| 10 | import com .atlassian .jira.mock .MockProje ctRoleMana ger; | |
| 11 | import com .atlassian .jira.mock .component .MockCompo nentWorker ; | |
| 12 | import com .atlassian .jira.mock .ofbiz.Moc kGenericVa lue; | |
| 13 | import com .atlassian .jira.proj ect.Projec t; | |
| 14 | import com .atlassian .jira.proj ect.Projec tImpl; | |
| 15 | import com .atlassian .jira.proj ect.Projec tManager; | |
| 16 | import com .atlassian .jira.secu rity.group s.GroupMan ager; | |
| 17 | import com .atlassian .jira.secu rity.login .LoginMana ger; | |
| 18 | import com .atlassian .jira.secu rity.roles .ProjectRo le; | |
| 19 | import com .atlassian .jira.secu rity.roles .ProjectRo leImpl; | |
| 20 | import com .atlassian .jira.secu rity.roles .ProjectRo leManager; | |
| 21 | import com .atlassian .jira.user .Applicati onUser; | |
| 22 | import com .atlassian .jira.user .MockAppli cationUser ; | |
| 23 | import com .atlassian .jira.user .MockGroup ; | |
| 24 | import com .atlassian .jira.user .UserDetai ls; | |
| 25 | import com .atlassian .jira.user .util.User Manager; | |
| 26 | import com .atlassian .jira.util .ErrorColl ection; | |
| 27 | import com .atlassian .seraph.co nfig.Secur ityConfig; | |
| 28 | import com .atlassian .seraph.el evatedsecu rity.Eleva tedSecurit yGuard; | |
| 29 | import com .atlassian .seraph.se rvice.reme mberme.Rem emberMeSer vice; | |
| 30 | import com .google.co mmon.colle ct.Immutab leMap; | |
| 31 | import org .apache.lo g4j.Append er; | |
| 32 | import org .apache.lo g4j.Level; | |
| 33 | import org .apache.lo g4j.LogMan ager; | |
| 34 | import org .apache.lo g4j.Logger ; | |
| 35 | import org .apache.lo g4j.spi.Lo ggingEvent ; | |
| 36 | import org .junit.Bef ore; | |
| 37 | import org .junit.Rul e; | |
| 38 | import org .junit.Tes t; | |
| 39 | import org .mockito.A rgumentCap tor; | |
| 40 | import org .mockito.C aptor; | |
| 41 | import org .mockito.M ock; | |
| 42 | import org .springfra mework.moc k.web.Mock HttpServle tRequest; | |
| 43 | import org .springfra mework.moc k.web.Mock HttpServle tResponse; | |
| 44 | import org .springfra mework.moc k.web.Mock HttpSessio n; | |
| 45 | ||
| 46 | import jav ax.servlet .http.Http ServletReq uest; | |
| 47 | import jav ax.servlet .http.Http ServletRes ponse; | |
| 48 | import jav a.security .Principal ; | |
| 49 | import jav a.util.*; | |
| 50 | ||
| 51 | import sta tic com.at lassian.ji ra.securit y.roles.Pr ojectRoleA ctor.USER_ ROLE_ACTOR _TYPE; | |
| 52 | import sta tic com.go ogle.commo n.collect. ImmutableM ap.of; | |
| 53 | import sta tic gov.vh a.ctt.ntrt .SsoiAuthe nticator.* ; | |
| 54 | import sta tic gov.vh a.ctt.ntrt .SsoiAuthe nticator.R ole.*; | |
| 55 | import sta tic java.l ang.String .format; | |
| 56 | import sta tic java.u til.Collec tions.empt yList; | |
| 57 | import sta tic org.as sertj.core .api.Asser tions.asse rtThat; | |
| 58 | import sta tic org.mo ckito.Argu mentMatche rs.isA; | |
| 59 | import sta tic org.mo ckito.Argu mentMatche rs.matches ; | |
| 60 | import sta tic org.mo ckito.BDDM ockito.giv en; | |
| 61 | import sta tic org.mo ckito.Mock ito.*; | |
| 62 | import sta tic org.sp ringframew ork.test.u til.Reflec tionTestUt ils.setFie ld; | |
| 63 | ||
| 64 | public cla ss SsoiAut henticator Test { | |
| 65 | ||
| 66 | privat e SsoiAuth enticator authentica tor; | |
| 67 | ||
| 68 | privat e static f inal Strin g ADMIN_RO LE = NTRT_ ADMIN.toSt ring().toL owerCase() ; | |
| 69 | privat e static f inal Strin g STAFF_RO LE = NTRT_ STAFF.toSt ring().toL owerCase() ; | |
| 70 | privat e static f inal Strin g USER_ROL E = NTRT_U SER.toStri ng().toLow erCase(); | |
| 71 | privat e static f inal Strin g TEST_USE R_NAME = " testuser"; | |
| 72 | ||
| 73 | @Rule | |
| 74 | public MockitoCo ntainer mo ckitoConta iner = Moc kitoMocksI nContainer .rule(this ); | |
| 75 | ||
| 76 | @Mock | |
| 77 | @Avail ableInCont ainer | |
| 78 | privat e Remember MeService rememberMe Service; | |
| 79 | ||
| 80 | @Mock | |
| 81 | @Avail ableInCont ainer | |
| 82 | privat e Security Config sec urityConfi g; | |
| 83 | ||
| 84 | @Mock | |
| 85 | @Avail ableInCont ainer | |
| 86 | privat e UserMana ger userMa nager; | |
| 87 | ||
| 88 | @Mock | |
| 89 | @Avail ableInCont ainer | |
| 90 | privat e Elevated SecurityGu ard elevat edSecurity Guard; | |
| 91 | ||
| 92 | @Mock | |
| 93 | @Avail ableInCont ainer | |
| 94 | privat e LoginMan ager login Manager; | |
| 95 | ||
| 96 | @Mock | |
| 97 | @Avail ableInCont ainer | |
| 98 | privat e GroupMan ager group Manager; | |
| 99 | ||
| 100 | @Mock | |
| 101 | @Avail ableInCont ainer | |
| 102 | privat e ProjectR oleService projectRo leService; | |
| 103 | ||
| 104 | @Mock | |
| 105 | @Avail ableInCont ainer | |
| 106 | privat e ProjectM anager pro jectManage r; | |
| 107 | ||
| 108 | @Mock | |
| 109 | @Avail ableInCont ainer | |
| 110 | privat e ProjectR oleManager projectRo leManager; | |
| 111 | ||
| 112 | @Mock | |
| 113 | privat e Appender appender; | |
| 114 | ||
| 115 | @Capto r | |
| 116 | privat e Argument Captor<Log gingEvent> captor; | |
| 117 | ||
| 118 | privat e final Pr oject ntrt Project = new Projec tImpl(new MockGeneri cValue("NT RT", Immut ableMap.of ("key", "N TRT"))); | |
| 119 | privat e final Gr oup jiraSe rviceDeskU sersGroup = new Mock Group(JIRA _GROUP_SER VICEDESK_U SERS); | |
| 120 | ||
| 121 | @Befor e | |
| 122 | public void setU p() throws Exception { | |
| 123 | au thenticato r = new Ss oiAuthenti cator(); | |
| 124 | ne w MockComp onentWorke r() | |
| 125 | .add Mock(UserM anager.cla ss, userMa nager) | |
| 126 | .add Mock(Remem berMeServi ce.class, rememberMe Service) | |
| 127 | .add Mock(Secur ityConfig. class, sec urityConfi g) | |
| 128 | .add Mock(Eleva tedSecurit yGuard.cla ss, elevat edSecurity Guard) | |
| 129 | .add Mock(Login Manager.cl ass, login Manager) | |
| 130 | .add Mock(Group Manager.cl ass, group Manager) | |
| 131 | .add Mock(Proje ctRoleServ ice.class, projectRo leService) | |
| 132 | .add Mock(Proje ctManager. class, pro jectManage r) | |
| 133 | .add Mock(Proje ctRoleMana ger.class, projectRo leManager) | |
| 134 | .ini t(); | |
| 135 | ||
| 136 | Lo gger rootL ogger = Lo gManager.g etRootLogg er(); | |
| 137 | ro otLogger.a ddAppender (appender) ; | |
| 138 | ro otLogger.s etLevel(Le vel.DEBUG) ; | |
| 139 | } | |
| 140 | ||
| 141 | @Test | |
| 142 | public void find NtrtRolesS houldFindA llRoles() throws Exc eption { | |
| 143 | En umSet<Role > roles = authentica tor.findNt rtRoles(mo ckRequest( of( | |
| 144 | HEAD ER_PRISME_ ROLES, for mat("foo,% s,%s,%s,ba r", ADMIN_ ROLE, STAF F_ROLE, US ER_ROLE))) ); | |
| 145 | as sertThat(r oles).cont ainsExactl yInAnyOrde r(NTRT_ADM IN, NTRT_S TAFF, NTRT _USER); | |
| 146 | } | |
| 147 | ||
| 148 | @Test | |
| 149 | public void find NtrtRolesS houldFindO neRole() t hrows Exce ption { | |
| 150 | En umSet<Role > roles = authentica tor.findNt rtRoles(mo ckRequest( of( | |
| 151 | HEAD ER_PRISME_ ROLES, for mat("foo,% s,bar", AD MIN_ROLE)) )); | |
| 152 | as sertThat(r oles).cont ainsExactl y(NTRT_ADM IN); | |
| 153 | } | |
| 154 | ||
| 155 | @Test | |
| 156 | public void find NtrtRolesS houldFindN oRoles() t hrows Exce ption { | |
| 157 | En umSet<Role > roles = authentica tor.findNt rtRoles(mo ckRequest( of( | |
| 158 | HEAD ER_PRISME_ ROLES, "fo o,bar"))); | |
| 159 | as sertThat(r oles).isEm pty(); | |
| 160 | } | |
| 161 | ||
| 162 | @Test | |
| 163 | public void getD isplayName ShouldPref erHeadersT oEmailAddr ess() { | |
| 164 | Ht tpServletR equest req uest = moc kRequest(o f( | |
| 165 | HEAD ER_FIRSTNA ME, "HOMER ", | |
| 166 | HEAD ER_LASTNAM E, "SIMPSO N", | |
| 167 | HEADER_ADE MAIL, " PII ")); | |
| 168 | as sertThat(a uthenticat or.getDisp layName(re quest)).is EqualTo("H omer Simps on"); | |
| 169 | } | |
| 170 | ||
| 171 | @Test | |
| 172 | public void getD isplayName ShouldUseA ccountName IfEmailInW rongFormat () { | |
| 173 | Ht tpServletR equest req uest = moc kRequest(o f( | |
| 174 | HEAD ER_ADSAMAC COUNTNAME, "homersim pson", | |
| 175 | HEADER_ADE MAIL, " PII ")); | |
| 176 | as sertThat(a uthenticat or.getDisp layName(re quest)).is EqualTo("h omersimpso n"); | |
| 177 | } | |
| 178 | ||
| 179 | @Test | |
| 180 | public void getD isplayName ShouldUseE mailWhenNa mesAbsent( ) { | |
| 181 | HttpServle tRequest r equest = m ockRequest (of(HEADER _ADEMAIL, " PII ")); | |
| 182 | as sertThat(a uthenticat or.getDisp layName(re quest)).is EqualTo("H omer Simps on"); | |
| 183 | } | |
| 184 | ||
| 185 | @Test | |
| 186 | public void getD isplayName ShouldUseE mailWhenFi rstNameAbs ent() { | |
| 187 | Ht tpServletR equest req uest = moc kRequest(o f( | |
| 188 | HEAD ER_LASTNAM E, "SIMPSO N", | |
| 189 | HEADER_ADE MAIL, " PII ")); | |
| 190 | as sertThat(a uthenticat or.getDisp layName(re quest)).is EqualTo("H omer Simps on"); | |
| 191 | } | |
| 192 | ||
| 193 | @Test | |
| 194 | public void getD isplayName ShouldUseE mailWhenLa stNameAbse nt() { | |
| 195 | Ht tpServletR equest req uest = moc kRequest(o f( | |
| 196 | HEAD ER_FIRSTNA ME, "HOMER ", | |
| 197 | HEADER_ADE MAIL, " PII ")); | |
| 198 | as sertThat(a uthenticat or.getDisp layName(re quest)).is EqualTo("H omer Simps on"); | |
| 199 | } | |
| 200 | ||
| 201 | @Test | |
| 202 | public void getU serReturns NullWhenNt rtRoleAbse nt() { | |
| 203 | gi ven(userMa nager.getU serByName( TEST_USER_ NAME)).wil lReturn(nu ll); | |
| 204 | ||
| 205 | Ht tpServletR equest req uest = moc kRequest(o f( | |
| 206 | HEAD ER_ADSAMAC COUNTNAME, TEST_USER _NAME, | |
| 207 | HEAD ER_PRISME_ ROLES, "fo o,bar")); | |
| 208 | as sertThat(a uthenticat or.getUser (request, null)).isN ull(); | |
| 209 | } | |
| 210 | ||
| 211 | @Test | |
| 212 | public void getU serUsesCac hedRoles() { | |
| 213 | ||
| 214 | Mo ckHttpSess ion sessio n = mockSe ssionWithC achedRoles (NTRT_USER , NTRT_STA FF, NTRT_A DMIN); | |
| 215 | ||
| 216 | Mo ckHttpServ letRequest request = mockReque st(of( | |
| 217 | HEAD ER_ADSAMAC COUNTNAME, TEST_USER _NAME, | |
| 218 | HEAD ER_PRISME_ ROLES, for mat("%s,%s ,%s", USER _ROLE, STA FF_ROLE, A DMIN_ROLE) )); | |
| 219 | re quest.setS ession(ses sion); | |
| 220 | ||
| 221 | gi venUserMan agerWillRe turnTestUs er(); | |
| 222 | ||
| 223 | Pr incipal us er = authe nticator.g etUser(req uest, new MockHttpSe rvletRespo nse()); | |
| 224 | as sertThat(u ser).isNot Null(); | |
| 225 | as sertThat(u ser.getNam e()).isEqu alTo(TEST_ USER_NAME) ; | |
| 226 | ||
| 227 | // if the ca ched roles were used , we won't look for roles in t he databas e | |
| 228 | ve rify(proje ctRoleMana ger, never ()).getPro jectRoles( isA(Applic ationUser. class), is A(Project. class)); | |
| 229 | } | |
| 230 | ||
| 231 | @Test | |
| 232 | @Suppr essWarning s("depreca tion") | |
| 233 | public void getU serAssigns RolesToUse rWhenCache dRolesNotF ound() { | |
| 234 | st ubTestAndA dminUsersA ndUsersGro upAndProje ct(); | |
| 235 | gi venProject RoleServic eWillRetur nProjectRo le(JIRA_RO LE_CUSTOME R); | |
| 236 | gi venProject RoleServic eWillRetur nProjectRo le(JIRA_RO LE_TEAM); | |
| 237 | gi venProject RoleServic eWillRetur nProjectRo le(JIRA_RO LE_ADMIN); | |
| 238 | gi venProject RoleManage rWillRetur nProjectRo les( | |
| 239 | proj ectRole(JI RA_ROLE_CU STOMER), p rojectRole (JIRA_ROLE _TEAM), pr ojectRole( JIRA_ROLE_ ADMIN)); | |
| 240 | ||
| 241 | Mo ckHttpServ letRequest request = mockReque st(of( | |
| 242 | HEAD ER_ADSAMAC COUNTNAME, TEST_USER _NAME, | |
| 243 | HEAD ER_PRISME_ ROLES, for mat("%s,%s ,%s", USER _ROLE, STA FF_ROLE, A DMIN_ROLE) )); | |
| 244 | ||
| 245 | Pr incipal us er = authe nticator.g etUser(req uest, new MockHttpSe rvletRespo nse()); | |
| 246 | as sertThat(u ser).isNot Null(); | |
| 247 | as sertThat(u ser.getNam e()).isEqu alTo(TEST_ USER_NAME) ; | |
| 248 | ||
| 249 | // verify th e roles we re cached in the ses sion | |
| 250 | Se t<String> cachedRole s = authen ticator.ge tCachedRol es(request .getSessio n()); | |
| 251 | as sertThat(c achedRoles ).isNotNul l(); | |
| 252 | as sertThat(c achedRoles .size()).i sEqualTo(3 ); | |
| 253 | as sertThat(c achedRoles ).contains ExactlyInA nyOrder(JI RA_ROLE_CU STOMER, JI RA_ROLE_TE AM, JIRA_R OLE_ADMIN) ; | |
| 254 | ||
| 255 | Se t<String> userKeys = Collectio ns.singlet on(TEST_US ER_NAME); | |
| 256 | Ap plicationU ser adminU ser = auth enticator. getAdminUs er(); | |
| 257 | ||
| 258 | // user shou ld have be en added t o three ro les on the back end | |
| 259 | ve rify(proje ctRoleServ ice, times (3)).addAc torsToProj ectRole( | |
| 260 | eq(a dminUser), | |
| 261 | eq(u serKeys), | |
| 262 | isA( ProjectRol e.class), | |
| 263 | isA( Project.cl ass), | |
| 264 | eq(U SER_ROLE_A CTOR_TYPE) , | |
| 265 | isA( ErrorColle ction.clas s) | |
| 266 | ); | |
| 267 | } | |
| 268 | ||
| 269 | @Test | |
| 270 | public void getU serReturns NullWhenNo RolesAreCa chedAndUse rCantBeAss ignedToPro jectRole() { | |
| 271 | st ubTestAndA dminUsersA ndUsersGro upAndProje ct(); | |
| 272 | gi venProject RoleServic eWillRetur nProjectRo le(JIRA_RO LE_ADMIN); | |
| 273 | ||
| 274 | Mo ckHttpServ letRequest request = mockReque st(of( | |
| 275 | HEAD ER_ADSAMAC COUNTNAME, TEST_USER _NAME, | |
| 276 | HEAD ER_PRISME_ ROLES, for mat("%s,%s ,%s", USER _ROLE, STA FF_ROLE, A DMIN_ROLE) )); | |
| 277 | ||
| 278 | do FailAddAct orsToProje ctRole(); | |
| 279 | ||
| 280 | Pr incipal us er = authe nticator.g etUser(req uest, new MockHttpSe rvletRespo nse()); | |
| 281 | as sertThat(u ser).isNul l(); | |
| 282 | } | |
| 283 | ||
| 284 | @Test | |
| 285 | public void getU serReturns NullWhenCa chedRolesA reInvalidA ndUserCant BeAssigned ToProjectR ole() { | |
| 286 | st ubTestAndA dminUsersA ndUsersGro upAndProje ct(); | |
| 287 | gi venProject RoleServic eWillRetur nProjectRo le(JIRA_RO LE_CUSTOME R); | |
| 288 | ||
| 289 | Mo ckHttpServ letRequest request = mockReque st(of( | |
| 290 | HEAD ER_ADSAMAC COUNTNAME, TEST_USER _NAME, | |
| 291 | HEAD ER_PRISME_ ROLES, USE R_ROLE)); | |
| 292 | Mo ckHttpSess ion sessio n = mockSe ssionWithC achedRoles (NTRT_ADMI N); | |
| 293 | re quest.setS ession(ses sion); | |
| 294 | ||
| 295 | do FailAddAct orsToProje ctRole(); | |
| 296 | ||
| 297 | Pr incipal us er = authe nticator.g etUser(req uest, new MockHttpSe rvletRespo nse()); | |
| 298 | as sertThat(u ser).isNul l(); | |
| 299 | } | |
| 300 | ||
| 301 | @Test | |
| 302 | public void getU serDelegat esToParent WhenAccoun tHeaderNot Present() { | |
| 303 | Ht tpServletR equest req uest = moc kRequest(o f(HEADER_P RISME_ROLE S, "ntrt_u ser")); | |
| 304 | fi nal String username = "nonNtrt User"; | |
| 305 | ||
| 306 | se tField(aut henticator , "config" , security Config); | |
| 307 | gi ven(securi tyConfig.g etRemember MeService( )).willRet urn(rememb erMeServic e); | |
| 308 | gi ven(securi tyConfig.g etElevated SecurityGu ard()).wil lReturn(el evatedSecu rityGuard) ; | |
| 309 | gi ven(rememb erMeServic e.getRemem berMeCooki eAuthentic atedUserna me( | |
| 310 | isA( HttpServle tRequest.c lass), isA (HttpServl etResponse .class))). willReturn (username) ; | |
| 311 | gi ven(userMa nager.getU serByName( username)) .willRetur n(new Mock Applicatio nUser(user name)); | |
| 312 | gi ven(elevat edSecurity Guard.perf ormElevate dSecurityC heck( | |
| 313 | isA( HttpServle tRequest.c lass), mat ches(usern ame))).wil lReturn(tr ue); | |
| 314 | gi ven(loginM anager.aut horiseForL ogin( | |
| 315 | isA( Applicatio nUser.clas s), isA(Ht tpServletR equest.cla ss))).will Return(tru e); | |
| 316 | as sertThat(a uthenticat or.getUser (request, mockRespon se()).getN ame()).isE qualTo(use rname); | |
| 317 | } | |
| 318 | ||
| 319 | @Test | |
| 320 | public void crea teNewUserR eturnsNull WhenAccoun tNameIsPre sentButEma ilAddressI sAbsent() { | |
| 321 | fi nal String accountNa me = TEST_ USER_NAME; | |
| 322 | Ht tpServletR equest req uest = moc kRequest(o f(HEADER_A DSAMACCOUN TNAME, acc ountName, HEADER_PRI SME_ROLES, "ntrt_use r")); | |
| 323 | as sertThat(a uthenticat or.createN ewUser(req uest, acco untName)). isNull(); | |
| 324 | } | |
| 325 | ||
| 326 | @Test | |
| 327 | @Suppr essWarning s("depreca tion") | |
| 328 | public void getU serReturns PrincipalO nHappyPath () throws Exception { | |
| 329 | ||
| 330 | gi venGroupMa nagerWillR eturnServi ceDeskUser sGroup(); | |
| 331 | ||
| 332 | Pr ojectRole teamRole = projectRo le(JIRA_RO LE_TEAM); | |
| 333 | gi ven(projec tRoleServi ce.getProj ectRoleByN ame(isA(St ring.class ), isA(Err orCollecti on.class)) ).willRetu rn(teamRol e); | |
| 334 | ||
| 335 | Pr oject proj ect = mock (Project.c lass); | |
| 336 | gi ven(projec tManager.g etProjectB yCurrentKe y(JIRA_PRO JECT_NAME_ NTRT)).wil lReturn(pr oject); | |
| 337 | gi venProject RoleManage rWillRetur nProjectRo les(teamRo le); | |
| 338 | ||
| 339 | Ap plicationU ser testUs er = new M ockApplica tionUser(T EST_USER_N AME); | |
| 340 | gi ven(userMa nager.crea teUser(isA (UserDetai ls.class)) ).willRetu rn(testUse r); | |
| 341 | gi ven(userMa nager.getU serByName( TEST_USER_ NAME)).wil lReturn(te stUser); | |
| 342 | ||
| 343 | Ap plicationU ser adminU ser = new MockApplic ationUser( "admin"); | |
| 344 | gi ven(userMa nager.getU serObject( JIRA_USER_ NAME_ADMIN )).willRet urn(adminU ser); | |
| 345 | ||
| 346 | Ht tpServletR equest req uest = moc kRequest(o f( | |
| 347 | HEAD ER_ADSAMAC COUNTNAME, TEST_USER _NAME, | |
| 348 | HEAD ER_ADEMAIL , "test@us er.com", | |
| 349 | HEAD ER_PRISME_ ROLES, "nt rt_user")) ; | |
| 350 | ||
| 351 | Pr incipal ex pected = t his.authen ticator.ge tUser(requ est, null) ; | |
| 352 | as sertThat(e xpected).i sInstanceO f(Principa l.class); | |
| 353 | as sertThat(e xpected.ge tName()).i sEqualTo(T EST_USER_N AME); | |
| 354 | } | |
| 355 | ||
| 356 | @Test | |
| 357 | public void getU serReturns NullOnCrea teUserFail ure() thro ws Excepti on { | |
| 358 | gi ven(userMa nager.crea teUser(isA (UserDetai ls.class)) ).willThro w(CreateEx ception.cl ass); | |
| 359 | ||
| 360 | Ht tpServletR equest req uest = moc kRequest(o f( | |
| 361 | HEAD ER_ADSAMAC COUNTNAME, TEST_USER _NAME, | |
| 362 | HEAD ER_ADEMAIL , "test@us er.com", | |
| 363 | HEAD ER_PRISME_ ROLES, "nt rt_user")) ; | |
| 364 | ||
| 365 | as sertThat(a uthenticat or.getUser (request, null)).isN ull(); | |
| 366 | } | |
| 367 | ||
| 368 | @Test | |
| 369 | public void getH eaderHandl esIncorrec tCase() th rows Excep tion { | |
| 370 | fi nal String expected = "bar"; | |
| 371 | ||
| 372 | Ht tpServletR equest req uest = moc kRequest(o f("foo", e xpected)); | |
| 373 | as sertThat(a uthenticat or.getHead er(request , "FOO")). isEqualTo( expected); | |
| 374 | ||
| 375 | re quest = mo ckRequest( of("FOO", expected)) ; | |
| 376 | as sertThat(a uthenticat or.getHead er(request , "foo")). isEqualTo( expected); | |
| 377 | ||
| 378 | re quest = mo ckRequest( of("FoO", expected)) ; | |
| 379 | as sertThat(a uthenticat or.getHead er(request , "foo")). isEqualTo( expected); | |
| 380 | as sertThat(a uthenticat or.getHead er(request , "FOO")). isEqualTo( expected); | |
| 381 | } | |
| 382 | ||
| 383 | @Test | |
| 384 | public void getH eaderLogsM issingHead er() throw s Exceptio n { | |
| 385 | ||
| 386 | Mo ckHttpSess ion sessio n = new Mo ckHttpSess ion(); | |
| 387 | Mo ckHttpServ letRequest request = mockReque st(of("baz ", "quux", "doodle", "dee")); | |
| 388 | re quest.setS ession(ses sion); | |
| 389 | ||
| 390 | au thenticato r.getHeade r(request, "foo"); | |
| 391 | au thenticato r.getHeade r(request, "bar"); | |
| 392 | ||
| 393 | ve rify(appen der, times (2)).doApp end(captor .capture() ); | |
| 394 | ||
| 395 | @S uppressWar nings("unc hecked") | |
| 396 | Li st<String> actualMis sedHeaders = (List<S tring>) se ssion.getA ttribute(N TRT_AUTHEN TICATOR_MI SSING_HEAD ERS_LOGGED _KEY); | |
| 397 | as sertThat(a ctualMisse dHeaders). containsEx actly("foo ", "bar"); | |
| 398 | ||
| 399 | St ring messa geTemplate = LOG_MES SAGE_MISSI NG_HEADER. replace("{ }", "%s"); | |
| 400 | St ring expec tedFoundHe aders = Ar rays.asLis t("baz", " doodle").t oString(); | |
| 401 | St ring bazMe ssage = fo rmat(messa geTemplate , "foo", s ession.get Id(), expe ctedFoundH eaders); | |
| 402 | St ring doodl eMessage = format(me ssageTempl ate, "bar" , session. getId(), e xpectedFou ndHeaders) ; | |
| 403 | ||
| 404 | Li st<Logging Event> log s = captor .getAllVal ues(); | |
| 405 | as sertThat(l ogs.get(0) .getMessag e()).isEqu alTo(bazMe ssage); | |
| 406 | as sertThat(l ogs.get(1) .getMessag e()).isEqu alTo(doodl eMessage); | |
| 407 | } | |
| 408 | ||
| 409 | @Test | |
| 410 | public void vali dateCached RolesIdent ifiesMatch es() { | |
| 411 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER), proj ectRolesFo r(NTRT_USE R), true); | |
| 412 | as sertValida teCachedRo les(ntrtRo les(NTRT_S TAFF), pro jectRolesF or(NTRT_ST AFF), true ); | |
| 413 | as sertValida teCachedRo les(ntrtRo les(NTRT_A DMIN), pro jectRolesF or(NTRT_AD MIN), true ); | |
| 414 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ STAFF), pr ojectRoles For(NTRT_U SER, NTRT_ STAFF), tr ue); | |
| 415 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ ADMIN), pr ojectRoles For(NTRT_U SER, NTRT_ ADMIN), tr ue); | |
| 416 | as sertValida teCachedRo les(ntrtRo les(NTRT_S TAFF, NTRT _ADMIN), p rojectRole sFor(NTRT_ STAFF, NTR T_ADMIN), true); | |
| 417 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ STAFF, NTR T_ADMIN), projectRol esFor(NTRT _USER, NTR T_STAFF, N TRT_ADMIN) , true); | |
| 418 | } | |
| 419 | ||
| 420 | @Test | |
| 421 | public void vali dateCached RolesIdent ifiesMisma tches() { | |
| 422 | ||
| 423 | // user has wrong proj ect role | |
| 424 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER), proj ectRolesFo r(NTRT_STA FF), false ); | |
| 425 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER), proj ectRolesFo r(NTRT_ADM IN), false ); | |
| 426 | as sertValida teCachedRo les(ntrtRo les(NTRT_S TAFF), pro jectRolesF or(NTRT_US ER), false ); | |
| 427 | as sertValida teCachedRo les(ntrtRo les(NTRT_S TAFF), pro jectRolesF or(NTRT_AD MIN), fals e); | |
| 428 | as sertValida teCachedRo les(ntrtRo les(NTRT_A DMIN), pro jectRolesF or(NTRT_US ER), false ); | |
| 429 | as sertValida teCachedRo les(ntrtRo les(NTRT_A DMIN), pro jectRolesF or(NTRT_ST AFF), fals e); | |
| 430 | ||
| 431 | // user has one too ma ny project roles | |
| 432 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER), proj ectRolesFo r(NTRT_USE R, NTRT_ST AFF), fals e); | |
| 433 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER), proj ectRolesFo r(NTRT_USE R, NTRT_AD MIN), fals e); | |
| 434 | as sertValida teCachedRo les(ntrtRo les(NTRT_S TAFF), pro jectRolesF or(NTRT_ST AFF, NTRT_ USER), fal se); | |
| 435 | as sertValida teCachedRo les(ntrtRo les(NTRT_S TAFF), pro jectRolesF or(NTRT_ST AFF, NTRT_ USER), fal se); | |
| 436 | as sertValida teCachedRo les(ntrtRo les(NTRT_A DMIN), pro jectRolesF or(NTRT_AD MIN, NTRT_ USER), fal se); | |
| 437 | as sertValida teCachedRo les(ntrtRo les(NTRT_A DMIN), pro jectRolesF or(NTRT_AD MIN, NTRT_ STAFF), fa lse); | |
| 438 | ||
| 439 | // user has two too ma ny project roles | |
| 440 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER), proj ectRolesFo r(NTRT_USE R, NTRT_ST AFF, NTRT_ ADMIN), fa lse); | |
| 441 | as sertValida teCachedRo les(ntrtRo les(NTRT_S TAFF), pro jectRolesF or(NTRT_ST AFF, NTRT_ USER, NTRT _ADMIN), f alse); | |
| 442 | as sertValida teCachedRo les(ntrtRo les(NTRT_A DMIN), pro jectRolesF or(NTRT_AD MIN, NTRT_ STAFF, NTR T_USER), f alse); | |
| 443 | ||
| 444 | // user has one too fe w project roles | |
| 445 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ STAFF), pr ojectRoles For(NTRT_U SER), fals e); | |
| 446 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ STAFF), pr ojectRoles For(NTRT_S TAFF), fal se); | |
| 447 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ ADMIN), pr ojectRoles For(NTRT_U SER), fals e); | |
| 448 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ ADMIN), pr ojectRoles For(NTRT_A DMIN), fal se); | |
| 449 | ||
| 450 | // user has two too fe w project roles | |
| 451 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ STAFF, NTR T_ADMIN), projectRol esFor(NTRT _USER), fa lse); | |
| 452 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ STAFF, NTR T_ADMIN), projectRol esFor(NTRT _STAFF), f alse); | |
| 453 | as sertValida teCachedRo les(ntrtRo les(NTRT_U SER, NTRT_ STAFF, NTR T_ADMIN), projectRol esFor(NTRT _ADMIN), f alse); | |
| 454 | } | |
| 455 | ||
| 456 | @Test | |
| 457 | public void cach eProjectRo lesCachesP rojectRole s() { | |
| 458 | Mo ckApplicat ionUser us er = new M ockApplica tionUser(T EST_USER_N AME, "Test User", "t est@user.c om"); | |
| 459 | Mo ckHttpSess ion sessio n = new Mo ckHttpSess ion(); | |
| 460 | ||
| 461 | gi venProject ManagerWil lReturnNtr tProject() ; | |
| 462 | gi ven(projec tRoleManag er.getProj ectRoles(e q(user), i sA(Project .class))). willReturn (Arrays.as List( | |
| 463 | new ProjectRol eImpl(JIRA _ROLE_CUST OMER, ""), | |
| 464 | new ProjectRol eImpl(JIRA _ROLE_TEAM , ""), | |
| 465 | new ProjectRol eImpl(JIRA _ROLE_ADMI N, "") | |
| 466 | )) ; | |
| 467 | ||
| 468 | au thenticato r.cachePro jectRoles( user, sess ion); | |
| 469 | Se t<String> cachedRole s = authen ticator.ge tCachedRol es(session ); | |
| 470 | ||
| 471 | as sertThat(c achedRoles ).isNotNul l(); | |
| 472 | as sertThat(c achedRoles .size()).i sEqualTo(3 ); | |
| 473 | as sertThat(c achedRoles ).contains ExactlyInA nyOrder(JI RA_ROLE_CU STOMER, JI RA_ROLE_TE AM, JIRA_R OLE_ADMIN) ; | |
| 474 | } | |
| 475 | ||
| 476 | @Test | |
| 477 | public void cach eProjectRo lesDoesNot CacheZeroR oles() { | |
| 478 | Mo ckApplicat ionUser us er = new M ockApplica tionUser(T EST_USER_N AME, "Test User", "t est@user.c om"); | |
| 479 | Mo ckHttpSess ion sessio n = new Mo ckHttpSess ion(); | |
| 480 | ||
| 481 | gi venProject ManagerWil lReturnNtr tProject() ; | |
| 482 | gi ven(projec tRoleManag er.getProj ectRoles(e q(user), i sA(Project .class))). willReturn (emptyList ()); | |
| 483 | ||
| 484 | au thenticato r.cachePro jectRoles( user, sess ion); | |
| 485 | Se t<String> cachedRole s = authen ticator.ge tCachedRol es(session ); | |
| 486 | ||
| 487 | as sertThat(c achedRoles ).isNull() ; | |
| 488 | } | |
| 489 | ||
| 490 | @Test( expected = IllegalAr gumentExce ption.clas s) | |
| 491 | @Suppr essWarning s("depreca tion") | |
| 492 | public void getA dminUserTh rowsWhenUs erNotFound () { | |
| 493 | gi ven(userMa nager.getU serObject( JIRA_USER_ NAME_ADMIN )).willRet urn(null); | |
| 494 | au thenticato r.getAdmin User(); | |
| 495 | } | |
| 496 | ||
| 497 | @Test | |
| 498 | public void addU serToGroup ReturnsFal seWhenAddO perationFa ils() thro ws Excepti on { | |
| 499 | gi venGroupMa nagerWillR eturnServi ceDeskUser sGroup(); | |
| 500 | do Throw(Oper ationFaile dException .class).wh en(groupMa nager).add UserToGrou p(isA(Appl icationUse r.class), isA(Group. class)); | |
| 501 | as sertThat(a uthenticat or.addUser ToGroup(te stUser(), JIRA_GROUP _SERVICEDE SK_USERS)) .isFalse() ; | |
| 502 | } | |
| 503 | ||
| 504 | @Test | |
| 505 | public void assi gnUserToPr ojectRoles ReturnsFal seIfUserCa nnotBeAdde dToService DeskUsersG roup() thr ows Except ion { | |
| 506 | gi venGroupMa nagerWillR eturnServi ceDeskUser sGroup(); | |
| 507 | do Throw(Oper ationFaile dException .class).wh en(groupMa nager).add UserToGrou p(isA(Appl icationUse r.class), isA(Group. class)); | |
| 508 | as sertThat(a uthenticat or.assignU serToProje ctRoles(te stUser(), null)).isF alse(); | |
| 509 | } | |
| 510 | ||
| 511 | @Test | |
| 512 | public void assi gnUserToPr ojectRoles ReturnsFal seIfUserCa nnotBeAssi gnedToProj ectRole() { | |
| 513 | st ubTestAndA dminUsersA ndUsersGro upAndProje ct(); | |
| 514 | gi venProject RoleServic eWillRetur nProjectRo le(JIRA_RO LE_TEAM); | |
| 515 | do FailAddAct orsToProje ctRole(); | |
| 516 | ||
| 517 | as sertThat(a uthenticat or.assignU serToProje ctRoles(te stUser(), EnumSet.of (NTRT_STAF F))).isFal se(); | |
| 518 | } | |
| 519 | ||
| 520 | @Test | |
| 521 | public void remo veUserFrom ProjectRol eTrapsErro r() { | |
| 522 | st ubTestAndA dminUsersA ndUsersGro upAndProje ct(); | |
| 523 | gi venProject RoleManage rWillRetur nProjectRo les(projec tRole(JIRA _ROLE_CUST OMER)); | |
| 524 | do FailRemove ActorsFrom ProjectRol e(); | |
| 525 | ||
| 526 | St ring messa geTemplate = LOG_MES SAGE_COULD _NOT_REMOV E_PROJECT_ ROLE.repla ce("{}", " %s"); | |
| 527 | St ring expec tedMessage = format( messageTem plate, | |
| 528 | form at("%s(%s) ", TEST_US ER_NAME, T EST_USER_N AME), | |
| 529 | form at("Projec t Role: %s (%d)", JIR A_ROLE_CUS TOMER, 100 0), | |
| 530 | "Pro ject: NTRT ", "[]", " []"); | |
| 531 | ||
| 532 | au thenticato r.removeUs erFromProj ectRole(te stUser(), projectRol e(JIRA_ROL E_CUSTOMER )); | |
| 533 | ||
| 534 | ve rify(appen der, times (1)).doApp end(captor .capture() ); | |
| 535 | Li st<Logging Event> log s = captor .getAllVal ues(); | |
| 536 | as sertThat(l ogs.size() ).isEqualT o(1); | |
| 537 | as sertThat(l ogs.get(0) .getMessag e()).isEqu alTo(expec tedMessage ); | |
| 538 | } | |
| 539 | ||
| 540 | @Test | |
| 541 | public void getP rojectRole TrapsError () throws Exception { | |
| 542 | st ubTestAndA dminUsersA ndUsersGro upAndProje ct(); | |
| 543 | gi venProject RoleServic eWillRetur nProjectRo le(JIRA_RO LE_CUSTOME R); | |
| 544 | ||
| 545 | St ring messa geTemplate = LOG_MES SAGE_GET_P ROJECT_ROL E_ERROR.re place("{}" , "%s"); | |
| 546 | St ring expec tedMessage = format( messageTem plate, JIR A_ROLE_CUS TOMER, "[] ", "[]"); | |
| 547 | ||
| 548 | ad dErrorToEr rorCollect ionWhen(pr ojectRoleS ervice, 1) .getProjec tRoleByNam e( | |
| 549 | isA( String.cla ss), | |
| 550 | isA( ErrorColle ction.clas s)); | |
| 551 | ||
| 552 | au thenticato r.getProje ctRole(JIR A_ROLE_CUS TOMER); | |
| 553 | ||
| 554 | ve rify(appen der, times (1)).doApp end(captor .capture() ); | |
| 555 | Li st<Logging Event> log s = captor .getAllVal ues(); | |
| 556 | as sertThat(l ogs.size() ).isEqualT o(1); | |
| 557 | as sertThat(l ogs.get(0) .getMessag e()).isEqu alTo(expec tedMessage ); | |
| 558 | } | |
| 559 | ||
| 560 | /* | |
| 561 | Ut ilities | |
| 562 | */ | |
| 563 | ||
| 564 | privat e ProjectR ole projec tRole(Stri ng project Role) { | |
| 565 | re turn new M ockProject RoleManage r.MockProj ectRole(10 00, projec tRole, pro jectRole); | |
| 566 | } | |
| 567 | ||
| 568 | privat e void giv enProjectR oleManager WillReturn ProjectRol es(Project Role... pr ojectRoles ) { | |
| 569 | gi ven(projec tRoleManag er.getProj ectRoles(i sA(Applica tionUser.c lass), isA (Project.c lass))) | |
| 570 | .wil lReturn(Ar rays.asLis t(projectR oles)); | |
| 571 | } | |
| 572 | ||
| 573 | privat e void stu bTestAndAd minUsersAn dUsersGrou pAndProjec t() { | |
| 574 | gi venUserMan agerWillRe turnAdminU ser(); | |
| 575 | gi venUserMan agerWillRe turnTestUs er(); | |
| 576 | gi venGroupMa nagerWillR eturnServi ceDeskUser sGroup(); | |
| 577 | gi venProject ManagerWil lReturnNtr tProject() ; | |
| 578 | } | |
| 579 | ||
| 580 | @Suppr essWarning s("depreca tion") | |
| 581 | privat e void doF ailAddActo rsToProjec tRole() { | |
| 582 | Se t<String> userKeys = Collectio ns.singlet on(TEST_US ER_NAME); | |
| 583 | Ap plicationU ser adminU ser = auth enticator. getAdminUs er(); | |
| 584 | ||
| 585 | ad dErrorToEr rorCollect ionWhen(pr ojectRoleS ervice, 5) .addActors ToProjectR ole( | |
| 586 | eq(a dminUser), | |
| 587 | eq(u serKeys), | |
| 588 | isA( ProjectRol e.class), | |
| 589 | isA( Project.cl ass), | |
| 590 | eq(U SER_ROLE_A CTOR_TYPE) , | |
| 591 | isA( ErrorColle ction.clas s)); | |
| 592 | } | |
| 593 | ||
| 594 | @Suppr essWarning s("depreca tion") | |
| 595 | privat e void doF ailRemoveA ctorsFromP rojectRole () { | |
| 596 | Se t<String> userKeys = Collectio ns.singlet on(TEST_US ER_NAME); | |
| 597 | Ap plicationU ser adminU ser = auth enticator. getAdminUs er(); | |
| 598 | ||
| 599 | ad dErrorToEr rorCollect ionWhen(pr ojectRoleS ervice, 5) .removeAct orsFromPro jectRole( | |
| 600 | eq(a dminUser), | |
| 601 | eq(u serKeys), | |
| 602 | isA( ProjectRol e.class), | |
| 603 | isA( Project.cl ass), | |
| 604 | eq(U SER_ROLE_A CTOR_TYPE) , | |
| 605 | isA( ErrorColle ction.clas s)); | |
| 606 | } | |
| 607 | ||
| 608 | privat e <T> T ad dErrorToEr rorCollect ionWhen(T t, int err orCollecti onArgument Index) { | |
| 609 | re turn doAns wer(invoca tion -> { | |
| 610 | // popul ating the errors col lection wi ll cause a ddUserToPr ojectRole( ) to retur n false | |
| 611 | ErrorCol lection er rors1 = in vocation.g etArgument (errorColl ectionArgu mentIndex) ; | |
| 612 | errors1. addError(" Induced er ror", ""); | |
| 613 | return n ull; | |
| 614 | }) .when(t); | |
| 615 | } | |
| 616 | ||
| 617 | privat e MockHttp Session mo ckSessionW ithCachedR oles(Role. .. ntrtRol es) { | |
| 618 | Mo ckHttpSess ion sessio n = new Mo ckHttpSess ion(); | |
| 619 | Se t<String> cachedRole s = projec tRolesFor( ntrtRoles) ; | |
| 620 | se ssion.setA ttribute(N TRT_SSOI_A UTH_ROLES_ KEY, cache dRoles); | |
| 621 | re turn sessi on; | |
| 622 | } | |
| 623 | ||
| 624 | privat e void giv enProjectR oleService WillReturn ProjectRol e(String p rojectRole Name) { | |
| 625 | Pr ojectRole projectRol e = new Mo ckProjectR oleManager .MockProje ctRole(0, projectRol eName, "") ; | |
| 626 | gi ven(projec tRoleServi ce.getProj ectRoleByN ame(eq(pro jectRoleNa me), isA(E rrorCollec tion.class ))).willRe turn(proje ctRole); | |
| 627 | } | |
| 628 | ||
| 629 | privat e void giv enProjectM anagerWill ReturnNtrt Project() { | |
| 630 | gi ven(projec tManager.g etProjectB yCurrentKe y(eq(JIRA_ PROJECT_NA ME_NTRT))) .willRetur n(ntrtProj ect); | |
| 631 | } | |
| 632 | ||
| 633 | privat e void giv enGroupMan agerWillRe turnServic eDeskUsers Group() { | |
| 634 | gi ven(groupM anager.get Group(JIRA _GROUP_SER VICEDESK_U SERS)).wil lReturn(ji raServiceD eskUsersGr oup); | |
| 635 | } | |
| 636 | ||
| 637 | @Suppr essWarning s("depreca tion") | |
| 638 | privat e void giv enUserMana gerWillRet urnTestUse r() { | |
| 639 | gi ven(userMa nager.getU serObject( TEST_USER_ NAME)).wil lReturn(te stUser()); | |
| 640 | } | |
| 641 | ||
| 642 | privat e MockAppl icationUse r testUser () { | |
| 643 | re turn new M ockApplica tionUser(T EST_USER_N AME, TEST_ USER_NAME) ; | |
| 644 | } | |
| 645 | ||
| 646 | @Suppr essWarning s("depreca tion") | |
| 647 | privat e void giv enUserMana gerWillRet urnAdminUs er() { | |
| 648 | gi ven(userMa nager.getU serObject( JIRA_USER_ NAME_ADMIN )).willRet urn(new Mo ckApplicat ionUser(JI RA_USER_NA ME_ADMIN, JIRA_USER_ NAME_ADMIN )); | |
| 649 | } | |
| 650 | ||
| 651 | privat e void ass ertValidat eCachedRol es(EnumSet <Role> ntr tRoles, Se t<String> projectRol es, boolea n expected ) { | |
| 652 | as sertThat(a uthenticat or.validat eCachedRol es(ntrtRol es, projec tRoles)).i sEqualTo(e xpected); | |
| 653 | } | |
| 654 | ||
| 655 | privat e Set<Stri ng> projec tRolesFor( Role... nt rtRoles) { | |
| 656 | Ha shSet<Stri ng> projec tRoles = n ew HashSet <>(3); | |
| 657 | fo r (Role nt rtRole : n trtRoles) { | |
| 658 | projectR oles.add(p rojectRole For(ntrtRo le)); | |
| 659 | } | |
| 660 | re turn proje ctRoles; | |
| 661 | } | |
| 662 | ||
| 663 | privat e EnumSet< Role> ntrt Roles(Role ... ntrtRo les) { | |
| 664 | En umSet<Role > roles = EnumSet.no neOf(Role. class); | |
| 665 | ro les.addAll (Arrays.as List(ntrtR oles)); | |
| 666 | re turn roles ; | |
| 667 | } | |
| 668 | ||
| 669 | ||
| 670 | privat e String p rojectRole For(Role n trtRole) { | |
| 671 | re turn PROJE CT_ROLES.g et(ntrtRol e); | |
| 672 | } | |
| 673 | ||
| 674 | privat e MockHttp ServletReq uest mockR equest(Map <String, S tring> val ues) { | |
| 675 | Mo ckHttpServ letRequest request = new MockH ttpServlet Request(); | |
| 676 | va lues.forEa ch(request ::addHeade r); | |
| 677 | re turn reque st; | |
| 678 | } | |
| 679 | ||
| 680 | privat e MockHttp ServletRes ponse mock Response() { | |
| 681 | re turn new M ockHttpSer vletRespon se(); | |
| 682 | } | |
| 683 | ||
| 684 | } |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.