/** * Extracts user groups from {@link SecurityRealm}. * * @param userId * @return List of effective groups. Null if there's no info */ private static @CheckForNull List<String> getAuthoritiesFromRealm(@Nonnull String userId) { final Jenkins instance = Jenkins.getInstance(); if (instance == null) { return null; // Jenkins has not been started yet } @CheckForNull UserDetails userDetails = null; try { final SecurityRealm sr = instance.getSecurityRealm(); userDetails = sr.loadUserByUsername(userId); } catch (DataAccessException ex) { // fallback to null handler } catch (UsernameNotFoundException ex) { // fallback to null handler } if (userDetails == null) { return null; } GrantedAuthority[] authorities = userDetails.getAuthorities(); List<String> authorityList = new ArrayList<String>(authorities.length); for (GrantedAuthority auth : authorities) { authorityList.add(auth.getAuthority()); } return authorityList; }
public void testFill() throws Exception { Locale.setDefault(Locale.ENGLISH); // make sure the recorder is where we think it is, it contains the palette selection tester.assertComponent("userForm:roles:roles:recorder", Recorder.class); // try to add a new user FormTester form = tester.newFormTester("userForm"); form.setValue("username", "user"); form.setValue("password", "pwd"); form.setValue("confirmPassword", "pwd"); // note: use a known role, there is no way to add a new role using wickettester support form.setValue("roles:roles:recorder", dao.getRoles().get(0)); form.submit("save"); tester.assertErrorMessages(new String[0]); tester.assertRenderedPage(UserPage.class); dao.reload(); UserDetails user = dao.loadUserByUsername("user"); assertEquals("pwd", user.getPassword()); assertEquals(1, user.getAuthorities().length); }
public void testLoadUserByUsername() { User u = new User() { @Override public boolean hasPermission(PermissionName permission) { return true; } }; u.setUserName(USER_NAME); u.setUniqueId(); CoreContext coreContext = createMock(CoreContext.class); AcdContext acdContext = createMock(AcdContext.class); StandardUserDetailsService uds = new StandardUserDetailsService(); uds.setCoreContext(coreContext); uds.setAcdContext(acdContext); coreContext.loadUserByUserNameOrAlias(USER_NAME); expectLastCall().andReturn(u); acdContext.getUsersWithAgents(); expectLastCall().andReturn(Collections.emptyList()); replay(coreContext, acdContext); // load the user details UserDetails details = uds.loadUserByUsername(USER_NAME); assertEquals(USER_NAME, details.getUsername()); GrantedAuthority[] authorities = details.getAuthorities(); assertTrue(contains(authorities, UserRole.Admin.toAuth())); assertTrue(contains(authorities, UserRole.User.toAuth())); assertFalse(contains(authorities, UserRole.AcdAgent.toAuth())); assertFalse(contains(authorities, UserRole.AcdSupervisor.toAuth())); assertTrue(contains(authorities, UserRole.AttendantAdmin.toAuth())); verify(coreContext, acdContext); }