Looks good, one small typo inline (akismit vs. akismet). I think we'll just 
need to document how you run these tests (against an already deployed 
environment and with some files in a folder that's exported as WORKSPACE env 
dir?).

Diff comments:

> diff --git a/tests/integration/test_wordpress_plugins.py 
> b/tests/integration/test_wordpress_plugins.py
> new file mode 100755
> index 0000000..0fd88d0
> --- /dev/null
> +++ b/tests/integration/test_wordpress_plugins.py
> @@ -0,0 +1,88 @@
> +#!/usr/bin/env python3
> +import os
> +import requests
> +import sys
> +import unittest
> +from selenium import webdriver
> +from selenium.webdriver.common.action_chains import ActionChains
> +from selenium.webdriver.common.by import By
> +from selenium.webdriver.common.keys import Keys
> +from selenium.webdriver.firefox.options import Options
> +from selenium.webdriver.support import expected_conditions as EC
> +from selenium.webdriver.support.ui import WebDriverWait
> +
> +
> +def read_secret(filen, mode="r"):
> +    with open(os.path.join(os.environ["WORKSPACE"], filen), mode) as f:
> +        return f.read()
> +
> +
> +AUTH_TOKEN = str(read_secret("auth_token.txt")).rstrip()
> +MAXIMUM_PAGE_LOAD_TIME = 15
> +SSO_PASSWORD = str(read_secret("sso_password.txt")).rstrip()
> +TEST_IMAGE = read_secret("test.png", mode="rb")
> +
> +
> +class WordpressIntegrationTest(unittest.TestCase):
> +    def _wordpress_sso_login(self):
> +        self.driver.get("https://test-blog.launchpad.net/wp-admin";)
> +        self.assertIn("Log In", self.driver.title)
> +        elem = self.driver.find_element_by_id("lplogin")
> +        elem.send_keys(Keys.RETURN)
> +        WebDriverWait(self.driver, 
> MAXIMUM_PAGE_LOAD_TIME).until(EC.presence_of_element_located((By.ID, 
> "id_email")))
> +        elem = self.driver.find_element_by_id("id_email")
> +        elem.send_keys("webops+wordpress...@canonical.com")
> +        elem = self.driver.find_element_by_id("id_password")
> +        elem.send_keys(SSO_PASSWORD)
> +        elem = self.driver.find_element_by_name("continue")
> +        elem.send_keys(Keys.RETURN)
> +        WebDriverWait(self.driver, 
> MAXIMUM_PAGE_LOAD_TIME).until(EC.presence_of_element_located((By.NAME, 
> "yes")))
> +        elem = self.driver.find_element_by_id("id_wordpress-k8s-ci")
> +        if not elem.is_selected():
> +            ActionChains(self.driver).move_to_element(elem).click().perform()
> +        elem = self.driver.find_element_by_name("yes")
> +        elem.send_keys(Keys.RETURN)
> +        WebDriverWait(self.driver, 
> MAXIMUM_PAGE_LOAD_TIME).until(EC.title_contains(("Dashboard")))
> +
> +    def setUp(self):
> +        options = Options()
> +        options.headless = True
> +        self.driver = webdriver.Firefox(service_log_path="/dev/null", 
> options=options)
> +
> +    def test_wordpress_signin(self):
> +        self._wordpress_sso_login()
> +        self.assertIn("Dashboard", self.driver.title)
> +
> +    def test_wordpress_akismit(self):

akismet

> +        self._wordpress_sso_login()
> +        
> self.driver.get("https://test-blog.launchpad.net/wp-admin/options-general.php?page=akismet-key-config";)
> +        elem = self.driver.find_element_by_id("delete-action")
> +        self.assertEqual("Disconnect this account", elem.text)
> +
> +    def test_swift_integration_content_rendering(self):
> +        data = TEST_IMAGE
> +        headers = {
> +            "Authorization": "Basic {}".format(AUTH_TOKEN),
> +            "content-disposition": "attachment; filename=test.png",
> +            "content-type": "image/png",
> +        }
> +        resp = 
> requests.post(url="https://test-blog.launchpad.net/wp-json/wp/v2/media/";, 
> data=data, headers=headers)
> +
> +        headers = {
> +            "Authorization": "Basic {}".format(AUTH_TOKEN),
> +        }
> +        resp = requests.post(
> +            url="https://test-blog.launchpad.net/wp-json/wp/v2/posts";,
> +            data={"title": "Test Post", "content": 
> resp.json()["description"]["rendered"], "status": "publish"},
> +            headers=headers,
> +        )
> +        self.driver.get(resp.json()["guid"]["raw"])
> +        elem = 
> self.driver.find_element_by_xpath('//p[@class="attachment"]/a/img')
> +        self.assertIn("test.png", elem.get_attribute("src"))
> +
> +    def tearDown(self):
> +        self.driver.close()
> +
> +
> +if __name__ == "__main__":
> +    unittest.main()


-- 
https://code.launchpad.net/~tcuthbert/charm-k8s-wordpress/+git/charm-k8s-wordpress/+merge/386476
Your team Wordpress Charmers is requested to review the proposed merge of 
~tcuthbert/charm-k8s-wordpress/+git/charm-k8s-wordpress:integration into 
charm-k8s-wordpress:master.

-- 
Mailing list: https://launchpad.net/~wordpress-charmers
Post to     : wordpress-charmers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~wordpress-charmers
More help   : https://help.launchpad.net/ListHelp

Reply via email to