/Applications/BugTracker/Sources/er/bugtracker/tests/Selenium.java

https://github.com/amagavi/wonder · Java · 132 lines · 111 code · 19 blank · 2 comment · 5 complexity · 7e25f30f3ae72325f9d08dfb5dbec862 MD5 · raw file

  1. package er.bugtracker.tests;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import com.webobjects.appserver.WOActionResults;
  5. import com.webobjects.appserver.WOCookie;
  6. import com.webobjects.appserver.WORequest;
  7. import com.webobjects.appserver.WOResponse;
  8. import com.webobjects.eoaccess.EOUtilities;
  9. import com.webobjects.eocontrol.EOEditingContext;
  10. import com.webobjects.eocontrol.EOKeyValueQualifier;
  11. import com.webobjects.eocontrol.EOQualifier;
  12. import com.webobjects.foundation.NSArray;
  13. import com.webobjects.foundation.NSTimestamp;
  14. import er.bugtracker.Framework;
  15. import er.bugtracker.People;
  16. import er.bugtracker.Session;
  17. import er.directtoweb.components.strings.ERDEditHTML;
  18. import er.extensions.eof.ERXEC;
  19. import er.extensions.eof.ERXEOControlUtilities;
  20. import er.extensions.foundation.ERXProperties;
  21. import er.extensions.foundation.ERXUtilities;
  22. import er.selenium.SeleniumAction;
  23. public class Selenium extends SeleniumAction {
  24. private final static Logger log = LoggerFactory.getLogger(Selenium.class);
  25. public static final String USERNAME = "sel_name";
  26. public static final String PASSWORD = "sel_pass";
  27. private static final String NAME = "SeleniumName";
  28. private void deleteTestPeople() {
  29. People people = People.clazz.userWithUsernamePassword(session().defaultEditingContext(), USERNAME, PASSWORD);
  30. if (people != null) {
  31. EOEditingContext ec = ERXEC.newEditingContext();
  32. ec.lock();
  33. try {
  34. people = (People) EOUtilities.localInstanceOfObject(ec, people);
  35. ERXUtilities.deleteObjects(ec, people.allBugs());
  36. people.delete();
  37. // ERXEOAccessUtilities.deleteRowsDescribedByQualifier(ec, Bug.ENTITY, qualifier)
  38. /* TODO: this should be done in BTBusinessLogic */
  39. EOKeyValueQualifier frameworkQualifier = new EOKeyValueQualifier(Framework.Key.OWNER, EOQualifier.QualifierOperatorEqual, people);
  40. assert(frameworkQualifier != null);
  41. NSArray frameworks = ERXEOControlUtilities.objectsWithQualifier(ec,
  42. Framework.class.getSimpleName(), frameworkQualifier, null, false);
  43. ERXUtilities.deleteObjects(ec, frameworks);
  44. ec.saveChanges();
  45. } finally {
  46. ec.unlock();
  47. }
  48. log.debug("People {} deleted", USERNAME);
  49. }
  50. }
  51. private People addTestPeople(boolean isAdmin) {
  52. EOEditingContext ec = ERXEC.newEditingContext();
  53. People people = People.clazz.createAndInsertObject(ec);
  54. people.setName(NAME);
  55. people.setLogin(USERNAME);
  56. people.setPassword(PASSWORD);
  57. people.setIsAdmin(isAdmin);
  58. ec.saveChanges();
  59. log.debug("People {} added", USERNAME);
  60. return people;
  61. }
  62. private WOActionResults ensureTestPeopleAreLoggedIn() {
  63. Session session = (Session)session();
  64. session.setLanguage("English");
  65. People people = People.clazz.userWithUsernamePassword(session.defaultEditingContext(), USERNAME, PASSWORD);
  66. session.setUser(people);
  67. return success();
  68. }
  69. public Selenium(WORequest request) {
  70. super(request);
  71. }
  72. public WOActionResults resetSessionAction() {
  73. WOCookie dummyCookie = new WOCookie("BTL", "dummy");
  74. dummyCookie.setPath("/");
  75. dummyCookie.setDomain(null); // Let the browser set the domain
  76. dummyCookie.setExpires(new NSTimestamp().timestampByAddingGregorianUnits(0, -2, 0, 0, 0, 0));
  77. WOResponse response = success();
  78. response.addCookie(dummyCookie);
  79. session().terminate();
  80. return response;
  81. }
  82. public WOActionResults ensureTestAdminAction() {
  83. deleteTestPeople();
  84. addTestPeople(true);
  85. return ensureTestPeopleAreLoggedIn();
  86. }
  87. public WOActionResults ensurePeopleSetupAction() {
  88. Session session = (Session)session();
  89. People people = People.clazz.userWithUsernamePassword(session.defaultEditingContext(), "user100", "user");
  90. assert people != null;
  91. people.setIsActive(false);
  92. people = People.clazz.userWithUsernamePassword(session.defaultEditingContext(), "user101", "user");
  93. assert people != null;
  94. people.setIsActive(true);
  95. people.setIsAdmin(false);
  96. people.setIsEngineering(false);
  97. people.setIsCustomerService(true);
  98. session.defaultEditingContext().saveChanges();
  99. return ensureTestAdminAction();
  100. }
  101. public WOActionResults deleteTestPeopleAction() {
  102. deleteTestPeople();
  103. return success();
  104. }
  105. public WOActionResults disableTinyMCEAction() {
  106. ERXProperties.setStringForKey("nonexisting.js", ERDEditHTML.FILE_NAME_PROPERTY);
  107. return success();
  108. }
  109. public WOActionResults enableTinyMCEAction() {
  110. System.clearProperty(ERDEditHTML.FILE_NAME_PROPERTY);
  111. return success();
  112. }
  113. }