wordpress-charmers team mailing list archive
-
wordpress-charmers team
-
Mailing list archive
-
Message #00426
Re: [Merge] ~tcuthbert/charm-k8s-wordpress/+git/charm-k8s-wordpress:integration into charm-k8s-wordpress:master
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-ci@xxxxxxxxxxxxx")
> + 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.