AuthenticationService { public boolean authenticate(String authCredentials) { if (null == authCredentials) { return false; } final String encodedUserPassword = authCredentials.replaceFirst("Basic" + " ", ""); String usernameAndPassword = null; try { String secretKey = XACMLProperties.getProperty(XacmlRestProperties.PROP_AES_KEY); PeCryptoUtils.initAesKey(secretKey); papPass = PeCryptoUtils.decrypt(XACMLProperties.getProperty(XacmlRestProperties.PROP_PAP_PASS)); } catch (Exception e) { PolicyLogger.error(e); } try { byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword); usernameAndPassword = new String(decodedBytes, StandardCharsets.UTF_8); } catch (Exception e) { PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "AuthenticationService", "Exception decoding username and password"); return false; } try { final StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); final String username = tokenizer.nextToken(); final String password = tokenizer.nextToken(); return papId.equals(username) && papPass.equals(password); } catch (Exception e) { PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "AuthenticationService", "Exception authenticating user"); return false; } }  boolean authenticate(String authCredentials);  }
@Test public void testAuth() throws UnsupportedEncodingException { String systemKey = "xacml.properties"; String oldProperty = System.getProperty(systemKey); System.setProperty(systemKey, "xacml.pap.properties"); AuthenticationService service = new AuthenticationService(); assertEquals(service.authenticate(basicCred), true); if (oldProperty != null) { System.setProperty(systemKey, oldProperty); } else { System.clearProperty(systemKey); } }