/webportal/src/test/java/au/org/emii/portal/test/authentication/MockGeoNetworkXmlPwUpdateService.java

http://alageospatialportal.googlecode.com/ · Java · 81 lines · 54 code · 14 blank · 13 comment · 5 complexity · b48f4982a75d1e2d3a8a135b398b4c05 MD5 · raw file

  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package au.org.emii.portal.test.authentication;
  6. import java.io.IOException;
  7. import java.io.PrintStream;
  8. import org.apache.commons.io.IOUtils;
  9. import org.apache.log4j.Logger;
  10. import org.simpleframework.http.Request;
  11. import org.simpleframework.http.Response;
  12. import org.simpleframework.http.core.Container;
  13. /**
  14. * Fake password change service used for changing passwords when the old
  15. * password is known
  16. * @author geoff
  17. */
  18. public class MockGeoNetworkXmlPwUpdateService implements Container {
  19. private Logger logger = Logger.getLogger(getClass());
  20. public static final String BAD_PASSWORD = "aaaaaa";
  21. public static final String GOOD_PASSWORD = "bbbbbb";
  22. public static final String NEW_PASSWORD = "nnnnnn";
  23. private static final String SUCCEED_OUTPUT = "test_data/xml.user.pwupdate-succeed";
  24. private static final String WRONG_PASSWORD_OUTPUT = "test_data/xml.user.pwupdate-fail_wrong_password";
  25. private static final String UNAUTHORISED_OUTPUT = "test_data/xml.user.pwupdate-fail-unauthorised";
  26. private boolean loggedIn = true;
  27. @Override
  28. public void handle(Request request, Response response) {
  29. String outputFile = null;
  30. try {
  31. String password = request.getParameter("password");
  32. String newPassword = request.getParameter("newPassword");
  33. PrintStream out = response.getPrintStream();
  34. if (loggedIn) {
  35. if (password.equals(GOOD_PASSWORD)) {
  36. // ok change password
  37. response.set("Content-Type", "application/xml");
  38. outputFile = SUCCEED_OUTPUT;
  39. logger.info("password changed to " + newPassword);
  40. } else {
  41. outputFile = WRONG_PASSWORD_OUTPUT;
  42. logger.error("password incorrect - not changing");
  43. }
  44. } else {
  45. outputFile = UNAUTHORISED_OUTPUT;
  46. logger.error("not logged in");
  47. }
  48. // XML mime type is only for a successful response - all other cases
  49. // send html mime type back, even though output is valid xml. This
  50. // is to mimic the MEST server
  51. if (!outputFile.equals(SUCCEED_OUTPUT)) {
  52. response.set("Content-Type", "text/html");
  53. }
  54. String output = IOUtils.toString(getClass().getClassLoader().getResourceAsStream(outputFile));
  55. out.print(output);
  56. out.close();
  57. } catch (IOException ex) {
  58. logger.error("mock server io error", ex);
  59. }
  60. }
  61. public boolean isLoggedIn() {
  62. return loggedIn;
  63. }
  64. public void setLoggedIn(boolean loggedIn) {
  65. this.loggedIn = loggedIn;
  66. }
  67. }