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)
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)
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)
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)
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)
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)
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)
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, )
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="Σύνδεση")
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