Exemplo n.º 1
0
    def test_report_share_public(self):
        user1 = self.account_admin.create_user('*****@*****.**')

        self._create_workflow(title='Example Workflow')
        self._build_chart()

        # Share report with public
        b = self.browser
        b.click_button('Report')  # switch to report
        with b.scope('.share-card'):
            b.click_button('Edit Privacy', wait=True)
        with b.scope('.share-modal', wait=True):  # wait for dialog
            b.check('Anyone can view')
            # This fires and forgets an AJAX request. Wait for it to finish.
            time.sleep(2)
            b.click_button('Close')
        b.assert_element('.share-card .accessible-to', text='Anyone can view')
        url = b.text('.share-card .url .copy', wait=True)

        # user1 can view the report
        accounts.logout(b)
        accounts.login(b, user1.email, user1.password)
        b.visit(url)
        b.assert_element('h1', text='Example Workflow', wait=True)

        # anonymous user can view the report
        accounts.logout(b)
        b.visit(url)
        b.assert_element('h1', text='Example Workflow', wait=True)
Exemplo n.º 2
0
    def test_report_share_with_collaborators(self):
        user1 = self.account_admin.create_user("*****@*****.**")
        user2 = self.account_admin.create_user("*****@*****.**")

        self._create_workflow(title="Example Workflow")
        self._build_chart()

        # Share report with user1, but not user2
        b = self.browser
        b.click_button("Report")  # switch to report
        with b.scope(".share-card"):
            b.click_button("Edit privacy", wait=True)
        with b.scope(".share-modal", wait=True):  # wait for dialog
            b.fill_in("email", user1.email)
            b.click_button("Grant access")
            # This fires and forgets an AJAX request. Wait for it to finish.
            time.sleep(2)
            b.click_button("Close")
        b.assert_element(".share-card .accessible-to", text="Only collaborators")
        url = b.value(".share-url input", wait=True)

        # user1 can view the report
        accounts.logout(b)
        accounts.login(b, user1.email, user1.password)
        b.visit(url)
        b.assert_element("h1", text="Example Workflow", wait=True)

        # user2 can't access the report
        accounts.logout(b)
        accounts.login(b, user2.email, user2.password)
        b.visit(url)
        b.assert_element(".error-number", text="403", wait=True)
Exemplo n.º 3
0
    def test_report_share_with_collaborators(self):
        user1 = self.account_admin.create_user('*****@*****.**')
        user2 = self.account_admin.create_user('*****@*****.**')

        self._create_workflow(title='Example Workflow')
        self._build_chart()

        # Share report with user1, but not user2
        b = self.browser
        b.click_button('Report')  # switch to report
        with b.scope('.share-card'):
            b.click_button('Edit Privacy', wait=True)
        with b.scope('.share-modal', wait=True):  # wait for dialog
            b.fill_in('email', user1.email)
            b.click_button('Grant access')
            # This fires and forgets an AJAX request. Wait for it to finish.
            time.sleep(2)
            b.click_button('Close')
        b.assert_element('.share-card .accessible-to',
                         text='Only collaborators')
        url = b.text('.share-card .url .copy', wait=True)

        # user1 can view the report
        accounts.logout(b)
        accounts.login(b, user1.email, user1.password)
        b.visit(url)
        b.assert_element('h1', text='Example Workflow', wait=True)

        # user2 can't access the report (we test for its title)
        accounts.logout(b)
        accounts.login(b, user2.email, user2.password)
        b.visit(url)
        b.assert_no_element('h1', text='Example Workflow', wait=True)
Exemplo n.º 4
0
    def test_report_share_public(self):
        user1 = self.account_admin.create_user("*****@*****.**")

        self._create_workflow(title="Example Workflow")
        self._build_chart()

        # Share report with public
        b = self.browser
        b.click_button("Report")  # switch to report
        with b.scope(".share-card"):
            b.click_button("Edit privacy", wait=True)
        with b.scope(".share-modal", wait=True):  # wait for dialog
            b.check("Anyone can view")
            # This fires and forgets an AJAX request. Wait for it to finish.
            time.sleep(2)
            b.click_button("Close")
        b.assert_element(".share-card .accessible-to", text="Anyone can view")
        url = b.value(".share-url input", wait=True)

        # user1 can view the report
        accounts.logout(b)
        accounts.login(b, user1.email, user1.password)
        b.visit(url)
        b.assert_element("h1", text="Example Workflow", wait=True)

        # anonymous user can view the report
        accounts.logout(b)
        b.visit(url)
        b.assert_element("h1", text="Example Workflow", wait=True)
Exemplo n.º 5
0
    def test_report_read_only(self):
        user1 = self.account_admin.create_user("*****@*****.**")

        self._create_workflow(title="Example Workflow")
        self._build_chart()

        # Share report with public
        b = self.browser
        b.click_button("Report")  # switch to report
        with b.scope(".share-card"):
            b.click_button("Edit privacy", wait=True)
        with b.scope(".share-modal", wait=True):  # wait for dialog
            b.check("Anyone can view")
            # This fires and forgets an AJAX request. Wait for it to finish.
            time.sleep(2)
            b.click_button("Close")
        b.assert_element(".share-card .accessible-to", text="Anyone can view")
        url = b.get_url()
        report_url = url + "report"

        # anonymous user can view the report UI
        accounts.logout(b)
        b.visit(url)
        b.click_button("Report", wait=True)  # switch to report
        b.assert_element("h1", text="Example Workflow", wait=True)
        b.assert_no_element(".add-block-prompt")

        # anonymous user can view the report iframe
        b.visit(report_url)
        b.assert_element("h1", text="Example Workflow", wait=True)
Exemplo n.º 6
0
    def test_report_read_only(self):
        user1 = self.account_admin.create_user("*****@*****.**")

        self._create_workflow(title="Example Workflow")
        self._build_chart()

        # Share report with public
        b = self.browser
        b.click_button("Report Editor")  # switch to report
        with b.scope(".share-card"):
            b.click_button("Edit privacy", wait=True)
        with b.scope(".share-modal", wait=True):  # wait for dialog
            b.choose("Public")
            # Wait for server response
            b.assert_element("fieldset.share-public-options:not(:disabled)",
                             wait=True)
            b.click_button("Close")
        url = b.get_url()
        report_url = url + "report"

        # anonymous user can view the report UI
        accounts.logout(b)
        b.visit(url)
        b.click_button("Report Editor", wait=True)  # switch to report
        b.assert_no_element(".add-block-prompt")

        # anonymous user can view the report iframe
        b.visit(report_url)
        b.assert_element("h1", text="Example Workflow", wait=True)
Exemplo n.º 7
0
    def test_report_share_public(self):
        user1 = self.account_admin.create_user("*****@*****.**")

        self._create_workflow(title="Example Workflow")
        self._build_chart()

        # Share report with public
        b = self.browser
        b.click_button("Report Editor")  # switch to report
        with b.scope(".share-card"):
            b.click_button("Edit privacy", wait=True)
        with b.scope(".share-modal", wait=True):  # wait for dialog
            b.choose("Public")
            # Wait for server response
            b.assert_element("fieldset.share-public-options:not(:disabled)",
                             wait=True)
            b.click_button("Close")
        url = b.value(".share-url input", wait=True)

        # user1 can view the report
        accounts.logout(b)
        accounts.login(b, user1.email, user1.password)
        b.visit(url)
        b.assert_element("h1", text="Example Workflow", wait=True)

        # anonymous user can view the report
        accounts.logout(b)
        b.visit(url)
        b.assert_element("h1", text="Example Workflow", wait=True)
Exemplo n.º 8
0
    def test_remember_locale_on_login(self):
        # When a user logs out, their locale continues to be used.
        # When a user logs in, the locale they used the last time they were logged in is used.
        b = self.browser

        # Login (in English)
        login(b, self.user.email, self.user.email)
        b.visit("/workflows")

        b.assert_element(
            'form.create-workflow button[type="submit"]',
            text="Create your first workflow",
            wait=True,
        )

        # Switch to Greek and then logout. After logout, page must still be in Greek.
        switch_locale_react(b, "Language", "Ελληνικά")
        logout(b)
        b.assert_element('input[name="password"][placeholder="Συνθηματικό"]', wait=True)
        b.assert_element('button[type="submit"]', text="Σύνδεση")

        # Switch to English and then login. After login, page must be in Greek.
        switch_locale_django(b, "English")
        login(b, self.user.email, self.user.email)
        b.assert_element(
            'form.create-workflow button[type="submit"]',
            text="Δημιουργήστε την πρώτη σας ροή εργασιών",
            wait=True,
        )
Exemplo n.º 9
0
    def test_remember_signup_locale(self):
        b = self.browser
        b.visit(self.live_server_url + "/account/signup/")
        switch_locale_django(b, "Ελληνικά")

        # self.assertTrue(b.is_element_present_by_text('Use Facebook account'))
        # self.assertTrue(b.is_element_present_by_text('Use Google account'))

        b.fill_in("email", "*****@*****.**")
        b.fill_in("first_name", "Jane")
        b.fill_in("last_name", "Doe")
        b.fill_in("password1", "?P455W0rd!")
        b.fill_in("password2", "?P455W0rd!")
        b.click_button("Εγγραφή")

        b.assert_element(
            "h1", text="Επιβεβαιώστε τη διεύθυνση του ηλ. ταχυδρομείου σας", wait=True
        )

        # Test the email is right
        email = self.account_admin.latest_sent_email
        self.assertIsNotNone(email)
        self.assertEqual("*****@*****.**", email["To"])
        url = find_url_in_email(email)
        self.assertIsNotNone(url)

        # Follow the link
        b.visit(url)
        b.click_button("Επιβεβαίωση", wait=True)

        # Change locale to English and browse
        switch_locale_django(b, "English")
        b.click_link("Sign up", wait=True)
        b.assert_element(
            'input[name="first_name"][placeholder="First name"]', wait=True
        )
        b.assert_element('button[type="submit"]', text="Register")
        b.click_link("Sign in")

        # Now log in with our new account
        # TODO _why_? The user already logged in
        b.fill_in("login", "*****@*****.**", wait=True)
        b.fill_in("password", "?P455W0rd!")
        b.click_button("Sign In")
        b.wait_for_element("a", text="Οι ροές εργασιών μου")

        # After logout, page must still be in Greek.
        logout(b)
        b.assert_element('input[name="password"][placeholder="Συνθηματικό"]', wait=True)
        b.assert_element('button[type="submit"]', text="Σύνδεση")
Exemplo n.º 10
0
    def test_report_share_with_report_viewer(self):
        user1 = self.account_admin.create_user("*****@*****.**")

        self._create_workflow(title="Example Workflow")
        self._build_chart()

        b = self.browser
        b.click_button("Report Editor")  # switch to report
        # Add a table (we'll test that it appears on the page)
        with b.scope(".block-chart + .add-block-prompt"):
            b.click_button("Add table from tab")
        b.click_button("Tab 1", wait=True)
        # Share with user1 as "report-viewer"
        with b.scope(".share-card"):
            b.click_button("Edit privacy", wait=True)
        with b.scope(".share-modal", wait=True):  # wait for dialog
            b.fill_in("email", user1.email)
            b.click_button("Grant access")
            # This fires and forgets an AJAX request. Wait for it to finish.
            time.sleep(2)
            b.click_button("Can view")
        with b.scope(".dropdown-menu-portal"):
            b.click_button("Can only view report")
            # This fires and forgets an AJAX request. Wait for it to finish.
            time.sleep(2)
        with b.scope(".share-modal"):
            b.click_button("Close")
        b.assert_element(".share-card .accessible-to",
                         text="Only collaborators")
        url = b.value(".share-url input", wait=True)

        # Log in as user1
        accounts.logout(b)
        accounts.login(b, user1.email, user1.password)
        b.visit(url)
        b.assert_element("h1", text="Example Workflow",
                         wait=True)  # The page renders
        b.assert_element("td.type-number", text="2",
                         wait=True)  # Can view table
        with b.iframe("iframe", wait=True):
            b.assert_element("svg", wait=True)  # Can view chart