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