def testDisableAndEnableUserFromListbox(self):
    """Test that disabling and enabling a user works from the listbox."""
    landing_page = LandingPage(self.driver)
    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)
    self.assertTestUserPresenceOnPage(True)

    self.assertUserCanBeDisabledAndThenEnabled(True, True)
Beispiel #2
0
    def testDisableAndEnableUserFromListbox(self):
        """Test that disabling and enabling a user works from the listbox."""
        landing_page = LandingPage(self.driver)
        landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                                   BaseTest.TEST_USER_AS_DICT['email'],
                                   self.args.server_url)
        self.assertTestUserPresenceOnPage(True)

        self.assertUserCanBeDisabledAndThenEnabled(True, True)
Beispiel #3
0
    def testManuallyAddUserFromLandingPage(self):
        """Test that manually adding a user shows up on the user listing."""
        landing_page = LandingPage(self.driver)
        self.assertTestUserPresenceOnPage(False)

        landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                                   BaseTest.TEST_USER_AS_DICT['email'],
                                   self.args.server_url)

        self.assertTestUserPresenceOnPage(True)
  def testManuallyAddUserFromLandingPage(self):
    """Test that manually adding a user shows up on the user listing."""
    landing_page = LandingPage(self.driver)
    self.assertTestUserPresenceOnPage(False)

    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)

    self.assertTestUserPresenceOnPage(True)
  def testDisableAndEnableUserFromDetailsDialog(self):
    """Test that disabling and enabling a user works from the details page."""
    landing_page = LandingPage(self.driver)
    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)
    self.assertTestUserPresenceOnPage(True)

    self.assertUserCanBeDisabledAndThenEnabled(False, True)

    landing_page.tryToCloseDetailsDialogAndRefreshIfFail(self.args.server_url)
Beispiel #6
0
    def testDisableAndEnableUserFromDetailsDialog(self):
        """Test that disabling and enabling a user works from the details page."""
        landing_page = LandingPage(self.driver)
        landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                                   BaseTest.TEST_USER_AS_DICT['email'],
                                   self.args.server_url)
        self.assertTestUserPresenceOnPage(True)

        self.assertUserCanBeDisabledAndThenEnabled(False, True)

        landing_page.tryToCloseDetailsDialogAndRefreshIfFail(
            self.args.server_url)
Beispiel #7
0
    def testDeleteUser(self):
        """Test that deleting a user removes that user."""
        landing_page = LandingPage(self.driver)
        landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                                   BaseTest.TEST_USER_AS_DICT['email'],
                                   self.args.server_url)

        self.assertTestUserPresenceOnPage(True)

        landing_page.remove_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                                      self.args.server_url)

        self.assertTestUserPresenceOnPage(False)
  def testDeleteUser(self):
    """Test that deleting a user removes that user."""
    landing_page = LandingPage(self.driver)
    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)

    self.assertTestUserPresenceOnPage(True)

    landing_page.remove_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                                  self.args.server_url)

    self.assertTestUserPresenceOnPage(False)
  def testSearchUserFromLandingPage(self):
    """Test that search displays user results within the landing page."""
    landing_page = LandingPage(self.driver)
    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)
    self.assertTestUserPresenceOnPage(True)

    landing_page.searchForTestItem(BaseTest.TEST_USER_AS_DICT['name'])

    self.assertTestUserPresenceOnPage(True, False)
    landing_url = self.args.server_url + flask.url_for('landing')
    self.assertEquals(landing_url, self.driver.current_url)
Beispiel #10
0
    def testCreateNewInviteCode(self):
        """Test that creating a new invite code actually generates a new one."""
        landing_page = LandingPage(self.driver)
        # Create test user and get it.
        landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                                   BaseTest.TEST_USER_AS_DICT['email'],
                                   self.args.server_url)
        self.assertTestUserPresenceOnPage(True)
        test_user_item = landing_page.findTestUser(
            BaseTest.TEST_USER_AS_DICT['name'])

        # Navigate to details dialog.
        details_dialog = landing_page.getDetailsDialogForItem(test_user_item)

        # Get the initial invite code.
        initial_invite_code = details_dialog.find_element(
            *LandingPage.USER_INVITE_CODE_TEXT).get_attribute('value')

        # Click new invite code on that user.
        get_invite_code_button = details_dialog.find_element(
            *LandingPage.USER_ROTATE_KEYS_BUTTON)
        get_invite_code_button.click()

        # Wait for post to finish, can take a while.
        WebDriverWait(self.driver, LandingPage.DEFAULT_TIMEOUT).until(
            EC.invisibility_of_element_located(
                ((LandingPage.USER_DETAILS_SPINNER))))

        # Renavigate to the landing page to ensure the backend changed vs just a
        # UI update if specified.
        self.driver.get(self.args.server_url + flask.url_for('landing'))
        test_user_item = landing_page.findTestUser(
            BaseTest.TEST_USER_AS_DICT['name'])

        # Set the container element to find the disable/enable button and text on.
        # Will be either the item within the listbox or the overall details dialog.
        details_dialog = landing_page.getDetailsDialogForItem(test_user_item)

        # Check the invite code text changed.
        final_invite_code = details_dialog.find_element(
            *LandingPage.USER_INVITE_CODE_TEXT).get_attribute('value')
        self.assertNotEquals(initial_invite_code, final_invite_code)

        landing_page.tryToCloseDetailsDialogAndRefreshIfFail(
            self.args.server_url)
  def testCreateNewInviteCode(self):
    """Test that creating a new invite code actually generates a new one."""
    landing_page = LandingPage(self.driver)
    # Create test user and get it.
    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)
    self.assertTestUserPresenceOnPage(True)
    test_user_item = landing_page.findTestUser(
        BaseTest.TEST_USER_AS_DICT['name'])

    # Navigate to details dialog.
    details_dialog = landing_page.getDetailsDialogForItem(test_user_item)

    # Get the initial invite code.
    initial_invite_code = details_dialog.find_element(
        *LandingPage.USER_INVITE_CODE_TEXT).get_attribute('value')

    # Click new invite code on that user.
    get_invite_code_button = details_dialog.find_element(
        *LandingPage.USER_ROTATE_KEYS_BUTTON)
    get_invite_code_button.click()

    # Wait for post to finish, can take a while.
    WebDriverWait(self.driver, LandingPage.DEFAULT_TIMEOUT).until(
        EC.invisibility_of_element_located(((
            LandingPage.USER_DETAILS_SPINNER))))

    # Renavigate to the landing page to ensure the backend changed vs just a
    # UI update if specified.
    self.driver.get(self.args.server_url + flask.url_for('landing'))
    test_user_item = landing_page.findTestUser(
        BaseTest.TEST_USER_AS_DICT['name'])

    # Set the container element to find the disable/enable button and text on.
    # Will be either the item within the listbox or the overall details dialog.
    details_dialog = landing_page.getDetailsDialogForItem(test_user_item)

    # Check the invite code text changed.
    final_invite_code = details_dialog.find_element(
        *LandingPage.USER_INVITE_CODE_TEXT).get_attribute('value')
    self.assertNotEquals(initial_invite_code, final_invite_code)

    landing_page.tryToCloseDetailsDialogAndRefreshIfFail(self.args.server_url)
  def testRepeatedSearchesFromLandingPage(self):
    """Test that search displays results within the landing page."""
    landing_url = self.args.server_url + flask.url_for('landing')

    # Add user and server.
    landing_page = LandingPage(self.driver)
    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)
    landing_page.add_test_server(
        BaseTest.TEST_SERVER_AS_DICT['ip'],
        BaseTest.TEST_SERVER_AS_DICT['name'],
        BaseTest.TEST_SERVER_AS_DICT['ssh_private_key'],
        BaseTest.TEST_SERVER_AS_DICT['host_public_key'],
        self.args.server_url)

    # Verify they both show up.
    self.assertTestUserPresenceOnPage(True)
    self.assertTestServerPresenceOnPage(True)

    # Search for a server.
    landing_page.searchForTestItem(BaseTest.TEST_SERVER_AS_DICT['name'])

    # Verify the server was found and the user was not.
    self.assertTestUserPresenceOnPage(False, False)
    self.assertTestServerPresenceOnPage(True, False)

    # Verify we are still on the landing page.
    self.assertEquals(landing_url, self.driver.current_url)

    # Search for a user.
    landing_page.searchForTestItem(BaseTest.TEST_USER_AS_DICT['name'])

    # Verify the user was found and the server was not.
    self.assertTestUserPresenceOnPage(True, False)
    self.assertTestServerPresenceOnPage(False, False)

    # Verify we are still on the landing page.
    self.assertEquals(landing_url, self.driver.current_url)
    def testErrorNotificationIsWorking(self):
        """Test the error notification is properly wired up, opened, and closed.

    Not testing the actual behavior directly (e.g. the db save) as those should
    be covered by unit tests.
    """
        self.driver.get(self.args.server_url + flask.url_for("landing"))
        landing_page = LandingPage(self.driver)

        # By default the error notification will be present but not displayed.
        error_notification = ErrorNotification(self.driver)
        self.assertTrue(error_notification.is_present())
        self.assertFalse(error_notification.is_displayed())

        landing_page.add_test_user(
            BaseTest.TEST_USER_AS_DICT["name"], BaseTest.TEST_USER_AS_DICT["email"], self.args.server_url
        )
        landing_page.add_test_user(
            BaseTest.TEST_USER_AS_DICT["name"], BaseTest.TEST_USER_AS_DICT["email"], self.args.server_url
        )

        # Trying to add the same user twice will cause the error notification
        # to be displayed.
        WebDriverWait(self.driver, ErrorNotification.DEFAULT_TIMEOUT).until(
            EC.visibility_of_element_located((error_notification.ERROR_NOTIFICATION_DIALOG))
        )
        self.assertTrue(error_notification.is_displayed())

        # Check the correct error message is displayed.
        # TODO: Make it testable for i18n.
        message = custom_exceptions.UnableToSaveToDB.message
        self.assertTrue(error_notification.has_error_message(message))

        # Check we can close the error notification.
        error_notification.close()
        self.assertFalse(error_notification.is_displayed())
  def testErrorNotificationIsWorking(self):
    """Test the error notification is properly wired up, opened, and closed.

    Not testing the actual behavior directly (e.g. the db save) as those should
    be covered by unit tests.
    """
    self.driver.get(self.args.server_url + flask.url_for('landing'))
    landing_page = LandingPage(self.driver)

    # By default the error notification will be present but not displayed.
    error_notification = ErrorNotification(self.driver)
    self.assertTrue(error_notification.is_present())
    self.assertFalse(error_notification.is_displayed())

    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)
    landing_page.add_test_user(BaseTest.TEST_USER_AS_DICT['name'],
                               BaseTest.TEST_USER_AS_DICT['email'],
                               self.args.server_url)

    # Trying to add the same user twice will cause the error notification
    # to be displayed.
    WebDriverWait(self.driver, ErrorNotification.DEFAULT_TIMEOUT).until(
        EC.visibility_of_element_located((
            error_notification.ERROR_NOTIFICATION_DIALOG)))
    self.assertTrue(error_notification.is_displayed())

    # Check the correct error message is displayed.
    # TODO: Make it testable for i18n.
    message = custom_exceptions.UnableToSaveToDB.message
    self.assertTrue(error_notification.has_error_message(message))

    # Check we can close the error notification.
    error_notification.close()
    self.assertFalse(error_notification.is_displayed())