diff --git a/.project b/.project index ac9cc38..a3e13d8 100644 --- a/.project +++ b/.project @@ -10,24 +10,8 @@ - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature org.python.pydev.pythonNature diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 0000000..53cdb91 --- /dev/null +++ b/.pydevproject @@ -0,0 +1,8 @@ + + +python 2.7 +Default + +/${PROJECT_DIR_NAME}/end2endtest + + diff --git a/Dockerfile b/Dockerfile index 0fad7f8..a99adf3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,10 @@ RUN echo 'mysql-server mysql-server/root_password password password' | debconf-s RUN echo 'mysql-server mysql-server/root_password_again password password' | debconf-set-selections RUN apt-get -y install wordpress vim less xvfb firefox chromium-chromedriver \ - wget git mysql-server iputils-ping vnc4server net-tools strace fvwm python3-pip make + wget git mysql-server iputils-ping vnc4server net-tools strace fvwm python3-pip make\ + python-pip + +RUN pip install vnc2flv ADD requirements.txt /tmp/requirements.txt diff --git a/Makefile b/Makefile index 16656d9..f0266d7 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ testenv: check: phpunit --stderr tests -e2e: +e2e: recording PYTHONPAT=end2endtest python3 -m unittest discover -v -f -s end2endtest -p "*.py" PDOauth: @@ -16,6 +16,14 @@ PDOauth: runsso: PDOauth cd PDOauth; make runserver -cleanup: - rm -rf wordpress/ +cleanup: stoprecording + rm -rf /tmp/wordpress/ + mv /tmp/wplog/* shippable rm -rf tmp/ + +recording: + start-stop-daemon --start --background --oknodo --name flvrec --make-pidfile --pidfile /tmp/flvrec.pid --startas /usr/bin/python -- /usr/local/bin/flvrec.py -o /tmp/wplog/record.flv :1 + +stoprecording: + -start-stop-daemon --stop --pidfile /tmp/flvrec.pid + diff --git a/README.md b/README.md index 632b6d3..4e98bb0 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,30 @@ -# MSSO login plugin for Wordpress +# Autentikációs plugin Wordpress-hez -Ez egy wordpress plugin. -Segítségével az eDemo SSO autentikációs szolgáltatást igénybe véve lehet bejelentkezni a wordpress-be. +Segítségével az ADA (Anonim Digitális Azonosító) autentikációs szolgáltatást igénybe véve lehet bejelentkezni a wordpress-be. -SSO szolgáltatás: https://sso.edemokraciagep.org/static/login.html +ADA szolgáltatás: https://adatom.hu +Teszt szerver: https://sso.edemokraciagep.org funkciók -- bejelentkezés SSO szolgáltatás segítségével -- regisztráció SSO szolgáltatás segítségével (független a gyári WP regisztrálási lehetőség beállítástól) -- login widget - sso login, sso regisztráció, logout, sso account bind, show user profil -- login oldal SSO kiegészítés - sso login, sso regisztráció -- SSO adatok a felhasználói profil oldalon - adatfrissítés funkció +- bejelentkezés ADA szolgáltatás segítségével +- regisztráció ADA felhasználóknak (független a gyári WP regisztrálási lehetőség beállítástól) +- login widget - ADA login, ADA regisztráció, logout, ADA account bind, show user profile +- login oldal ADA kiegészítés - ADA login, ADA regisztráció +- ADA adatok a felhasználói profil oldalon - adatfrissítés funkció - plugin beállító adminisztrációs panel a beállítások menüben - felhasználói fiók letiltása (ban user) funkció -- SSO tanusítások user meta -- SSO user ID user mata -- 0 szintű 'SSO user' szerepkör -- assurance függő regisztráció +- ADA igazolások - user meta +- ADA user ID user mata +- 0 szintű 'ADA user' szerepkör +- igazolás függő regisztráció opciók -- SSO regisztráció letiltása -> scope: all user -- SSO bejelentkezés letiltása -> scope: all user +- ADA regisztráció letiltása -> scope: all user +- ADA bejelentkezés letiltása -> scope: all user - SSL tanusítvány ellenőrzése -- SSO account bind engedélyezése +- ADA account bind engedélyezése - admin bar alapértelmezett kikapcsolása - alapértelmezett felhasználói szerepkör beállítása -- regisztrációhoz szükséges assurancok beállítása +- regisztrációhoz szükséges igazolások beállítása ---- \ No newline at end of file +--- diff --git a/eDemo-SSOauth/includes/class_edemo-ssoauth_widgets.php b/eDemo-SSOauth/includes/class_edemo-ssoauth_widgets.php index 7793858..f315e31 100644 --- a/eDemo-SSOauth/includes/class_edemo-ssoauth_widgets.php +++ b/eDemo-SSOauth/includes/class_edemo-ssoauth_widgets.php @@ -81,7 +81,7 @@ function widget( $args, $instance ) { //section for all ?> -
  • +
  • \ No newline at end of file +?> diff --git a/end2endtest/InstallTest.py b/end2endtest/InstallTest.py index 6d66d0e..04a42f0 100644 --- a/end2endtest/InstallTest.py +++ b/end2endtest/InstallTest.py @@ -1,81 +1,31 @@ from selenium import webdriver -from selenium.webdriver.common.keys import Keys from unittest.case import TestCase -import pdb -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.support import expected_conditions as EC -from selenium.webdriver.common.by import By -import sys -import time +from UIProcedures import UIProcedures +import os - -class element_to_be_useable(object): - def __init__(self, locator): - self.locator = locator - - def __call__(self, driver): - try: - element = driver.find_element(*self.locator) - except: - #print(sys.exc_info()) - element = None - if element: - try: - displayValue=element.value_of_css_property('display') - displayok = displayValue in ('block', 'inline','inline-block') - displayed = element.is_displayed() - enabled = element.is_enabled() - if displayed and enabled and displayok: - return element - except StaleElementReferenceException: - pass - return False - -class UIActions(object): - def waitUntilElementEnabled(self, fieldId): - element = WebDriverWait(self.driver, 100).until(element_to_be_useable((By.ID,fieldId))) - return element - - def wait_on_element_text(self, by_type, element, text, timeout=20): - WebDriverWait(self.driver, timeout).until( - EC.text_to_be_present_in_element( - (by_type, element), text) - ) - - def fillInField(self, fieldId, value): - element = self.waitUntilElementEnabled(fieldId) - element.clear() - element.send_keys(value) - - -class UIProcedures(UIActions): - def login_as_admin(self): - self.driver.get("http://blog.example.com:8080/wp-login.php") - self.waitUntilElementEnabled("user_login").send_keys("admin") - self.waitUntilElementEnabled("user_pass").send_keys("admin") - self.waitUntilElementEnabled("wp-submit").click() - self.waitUntilElementEnabled("wpadminbar") - - def configureSSO(self): - self.driver.get("http://blog.example.com:8080/wp-admin/options-general.php?page=edemosso") - self.fillInField("EdemoSSO_appname", "testapp") - self.fillInField("EdemoSSO_appkey", "testkey") - self.fillInField("EdemoSSO_secret", "testsecret") - self.fillInField("EdemoSSO_callback_uri", "/callback/uri") - self.waitUntilElementEnabled("EdemoSSO_allowBind").click() - self.waitUntilElementEnabled("EdemoSSO_allowLogin").click() - self.waitUntilElementEnabled("EdemoSSO_update").click() - -class InstalltestTest(TestCase, UIProcedures): +class InstallTest(TestCase, UIProcedures): def setUp(self): - self.driver = webdriver.Firefox() + profile_directory = os.path.join(os.path.dirname(__file__),"..", "etc", "firefox-profile") + profile = webdriver.FirefoxProfile(profile_directory) + profile.accept_untrusted_certs = True + self.driver = webdriver.Firefox(firefox_profile=profile) def tearDown(self): self.driver.close() - + def test_install_page(self): self.login_as_admin() + self.addSsoWidget() + self.workaroundPermalinkProblem() self.configureSSO() - self.wait_on_element_text(By.ID, "wpbody-content", "Options updated", 30) + self.assertFieldValue("EdemoSSO_serviceURI", "sso.edemokraciagep.org") + self.assertFieldValue("EdemoSSO_appname", "testapp") + self.assertFieldValue("EdemoSSO_appkey", "f7354fa2-811f-48b6-9be9-359c5d99d6a4") + self.assertFieldValue("EdemoSSO_secret", "e2etest") + self.assertSelected("EdemoSSO_allowBind") + self.assertSelected("EdemoSSO_allowLogin") + self.assertSelected("EdemoSSO_allowRegister") self.assertIn("Options updated",self.driver.find_element_by_id("wpbody-content").text) + self.wp_logout() + self.loginWithSSO() diff --git a/end2endtest/UIActions.py b/end2endtest/UIActions.py new file mode 100644 index 0000000..575fdc0 --- /dev/null +++ b/end2endtest/UIActions.py @@ -0,0 +1,71 @@ +from selenium.common.exceptions import StaleElementReferenceException +from selenium.webdriver.common.by import By +from selenium.webdriver.support.wait import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +import time + +class element_to_be_useable(object): + def __init__(self, locator): + self.locator = locator + + def __call__(self, driver): + try: + element = driver.find_element(*self.locator) + except: + #print(sys.exc_info()) + element = None + if element: + try: + displayValue=element.value_of_css_property('display') + displayok = displayValue in ('block', 'inline','inline-block') + displayed = element.is_displayed() + enabled = element.is_enabled() + if displayed and enabled and displayok: + return element + except StaleElementReferenceException: + pass + return False + +class UIActions(object): + def waitUntilElementEnabled(self, fieldId): + element = WebDriverWait(self.driver, 100).until(element_to_be_useable((By.ID,fieldId))) + return element + + def wait_on_element_text(self, by_type, element, text, timeout=20): + WebDriverWait(self.driver, timeout).until( + EC.text_to_be_present_in_element( + (by_type, element), text) + ) + + def fillInField(self, fieldId, value): + element = self.waitUntilElementEnabled(fieldId) + element.clear() + element.send_keys(value) + + def setCheckBox(self, elemId): + element = self.waitUntilElementEnabled(elemId) + if not element.is_selected(): + self.click(elemId) + tried=0 + while not element.is_selected() and tried<5: + time.sleep(1) + tried += 1 + + def click(self, fieldId): + element = self.waitUntilElementEnabled(fieldId) + self.driver.execute_script(""" + window.scrollTo( + 0, + document.getElementById('{0}').getBoundingClientRect().top- + document.body.getBoundingClientRect().top- + 100)""".format(fieldId)) + return element.click() + + def assertFieldValue(self, fieldId, value): + element = self.driver.find_element_by_id(fieldId) + self.assertEqual(value,element.get_property('value')) + + def assertSelected(self, fieldId): + element = self.driver.find_element_by_id(fieldId) + self.assertEqual(True,element.is_selected()) + diff --git a/end2endtest/UIProcedures.py b/end2endtest/UIProcedures.py new file mode 100644 index 0000000..99ce328 --- /dev/null +++ b/end2endtest/UIProcedures.py @@ -0,0 +1,68 @@ +from UIActions import UIActions +from selenium.webdriver.common.by import By +import pdb +import time + +class UIProcedures(UIActions): + def login_as_admin(self): + self.driver.get("https://blog.example.com:8080/wp-login.php") + self.waitUntilElementEnabled("user_login").send_keys("admin") + self.waitUntilElementEnabled("user_pass").send_keys("admin") + self.waitUntilElementEnabled("wp-submit").click() + self.waitUntilElementEnabled("wpadminbar") + + def addSsoWidget(self): + self.driver.get("https://blog.example.com:8080/wp-admin/widgets.php?widgets-access=on") + self.waitUntilElementEnabled("widgets-left") + ssoauth=self.driver.find_element_by_xpath("//a[contains(@href, 'base=edemo_ssoauth_login_widget')]") + ssoauth.click() + title = self.waitUntilElementEnabled("widget-edemo_ssoauth_login_widget-__i__-title") + title.clear() + title.send_keys("SSO") + sidebarPosition=self.driver.find_element_by_xpath("//select[@name='sidebar-1_position']") + for option in sidebarPosition.find_elements_by_tag_name('option'): + if option.text == '1': + option.click() + break + time.sleep(1)#FIXME:why is it needed? + self.click("savewidget") + self.wait_on_element_text(By.ID, "message", "Changes saved.", 50) + + + def configureSSO(self): + self.driver.get("https://blog.example.com:8080/wp-admin/options-general.php?page=edemosso") + self.fillInField("EdemoSSO_serviceURI", "sso.edemokraciagep.org") + self.fillInField("EdemoSSO_appname", "testapp") + self.fillInField("EdemoSSO_appkey", "f7354fa2-811f-48b6-9be9-359c5d99d6a4") + self.fillInField("EdemoSSO_secret", "e2etest") + self.setCheckBox("EdemoSSO_allowBind") + self.setCheckBox("EdemoSSO_allowLogin") + self.setCheckBox("EdemoSSO_allowRegister") + time.sleep(2)#WTF? + self.waitUntilElementEnabled("EdemoSSO_update").click() + self.wait_on_element_text(By.ID, "wpbody-content", "Options updated", 30) + + def wp_logout(self): + self.driver.get("https://blog.example.com:8080/wp-login.php?action=logout") + element=self.driver.find_element_by_xpath("//a") + element.click() + + def workaroundPermalinkProblem(self): + self.driver.get("https://blog.example.com:8080/wp-admin/options-permalink.php") + element=self.driver.find_element_by_xpath("//input[@value='/%year%/%monthnum%/%day%/%postname%/']") + element.click() + button = self.driver.find_element_by_id("submit") + button.click() + self.wait_on_element_text(By.ID, "setting-error-settings_updated", "Permalink structure updated.", 30) + + def loginWithSSO(self): + self.driver.get("https://blog.example.com:8080/") + registerLink=self.driver.find_element_by_xpath("//a[text()='Register with SSO']") + registerLink.click() + self.fillInField("LoginForm_email_input", "mag+blog@magwas.rulez.org") + self.fillInField("LoginForm_password_input", "3l3k Th3 T3st3r") + button=self.driver.find_element_by_xpath("//button[text()='Bejelentkezés']") + button.click() + self.waitUntilElementEnabled("wp-admin-bar-root-default") + avatar = self.driver.find_element_by_xpath("//a[text()='Howdy, SSO user']") + self.assertEqual(avatar.text,"Howdy, SSO user") diff --git a/etc/apache.conf.in b/etc/apache.conf similarity index 77% rename from etc/apache.conf.in rename to etc/apache.conf index e675b79..553e630 100644 --- a/etc/apache.conf.in +++ b/etc/apache.conf @@ -21,12 +21,14 @@ LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so MaxConnectionsPerChild 0 -ServerRoot PWD +User www-data +Group www-data +ServerRoot /tmp LogLevel debug -ErrorLog ./shippable/Error.log +ErrorLog /tmp/wplog/Error.log #ErrorLog ./tmp/ErrorLog LogFormat "%h %l %u %t \"%r\" %>s %b" common -CustomLog ./shippable/CustomLog common +CustomLog /tmp/wplog/CustomLog common PidFile /tmp/httpd.pid Mutex file:/tmp default Timeout 300 @@ -47,8 +49,19 @@ Listen 127.0.0.1:8080 LoadModule php7_module /usr/lib/apache2/modules/libphp7.0.so -DocumentRoot PWD/wordpress +DocumentRoot /tmp/wordpress ServerName blog.example.com DirectoryIndex index.php index.html - +SSLCertificateFile etc/cert.pem +SSLCertificateKeyFile etc/key.pem +SSLEngine on +SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown +SSLOptions +StdEnvVars +SSLOptions +ExportCertData +SSLSessionCacheTimeout 300 + + AllowOverride all + Require all granted + + diff --git a/etc/cert.pem b/etc/cert.pem new file mode 100644 index 0000000..542c47c --- /dev/null +++ b/etc/cert.pem @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGEzCCA/ugAwIBAgIJAO1ri/4eWAiFMA0GCSqGSIb3DQEBCwUAMIGfMQswCQYD +VQQGEwJodTENMAsGA1UECAwEcGVzdDERMA8GA1UEBwwIYnVkYXBlc3QxKTAnBgNV +BAoMIGluZm9ybWF0aWt1c29rIGF6IGVkZW1va3JhY2lhZXJ0MRkwFwYDVQQDDBBi +bG9nLmV4YW1wbGUuY29tMSgwJgYJKoZIhvcNAQkBFhltYWcrYmxvZ0BtYWd3YXMu +cnVsZXoub3JnMB4XDTE2MTEwMTEwNDkzMVoXDTI2MTAzMDEwNDkzMVowgZ8xCzAJ +BgNVBAYTAmh1MQ0wCwYDVQQIDARwZXN0MREwDwYDVQQHDAhidWRhcGVzdDEpMCcG +A1UECgwgaW5mb3JtYXRpa3Vzb2sgYXogZWRlbW9rcmFjaWFlcnQxGTAXBgNVBAMM +EGJsb2cuZXhhbXBsZS5jb20xKDAmBgkqhkiG9w0BCQEWGW1hZytibG9nQG1hZ3dh +cy5ydWxlei5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJBK94 +oggaztSCxx7UK2zfQlDfDYp9HCXTEQXj7jJRPE5VDIKBfaYmmCv2pTuks8qOCclA +HxsvrX6XQgpS0AHPpANcjiSulhpv/IudwP86U2yo/eXdU8afTs00QmoKB0I2gCSE +8pcJTo/AFbzNx2xrH4ThTNki97iu0fB6xNvwYEUKHs3cFLK8CFUzI/dg+GvDYnN/ +fTsaopZtwL7g6blbrm49IgLYQfS7DeaCHSkV5YeJIwxZSh51EdbnuiSW+p+pmddv +3tqi0pjZt3bzFmszZHSSVP3J2sy52rDJCRRgSpzjt7G6//OaLWmnPlBEp4mx7s2W +OA50lQsgRFwjMlCWhyrDnD1NBVdBd5e6A9US/ZEWbeABWNg7UwW9DZ87LiSP6a4Q +fGZaRGwM3kWpgeeYT/gAmTctIDN4B8G/QltK7knKGRdOsnxyfbmbni7TFseN57Jf +LUzCeV3xR/sO+4/xrzD5IoukrPZUvNQYy68tIbP2wHsX3KknSZs1s9uptSNXNWoP +pV9UCJTXxfCZm1o3vqH8lUeYZMq1khMdqIs19JbCrCTyhJk45enC3ux4nJ/VuXUu +t2gXTLiqP1Mkgfsc31AEMyC5e3o3unoDxEAj22Sv5mdhTciyrVv3T9/e3WoFK4bl +XOBsaNYlotwk3pdZQn0qoaz/mQ3AK28rTrpS0wIDAQABo1AwTjAdBgNVHQ4EFgQU +XXYq59uuklnzC9+Sw7PO97sKeEQwHwYDVR0jBBgwFoAUXXYq59uuklnzC9+Sw7PO +97sKeEQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAUlOkCHJLN8GU +zSQI7UYCBIDTVhA3uW9x4rvwcsxFhqosbhTgkx2LNWGa0Z6DZwur28LgmXSyDsr6 +V61sda2HyiDntj0sG1plO2IDzpVt/SaPxmcSo35QWdmUdVoDR4Vq3KY3CV/zhjHJ +Xt23O1GXQWcrGtRWyQFIlp3aZXnQlUum8AFPmeeydIa5E8gOFzVbktzt3QmTJ62/ +UPTw+rkQYAYn617UGEbujQ4mZq77YccsiNxny3KyIvNuP/Mv12i4Z7teSgXPZ5Wn +/CmRiwf/px6V1BhOaoj9lF2k7iWqslJE/bbKaFNmVYn4mA61R+W0eze0QBdWDVMb +4Hf7kfbYmc3P124Nr6hQotWBwI2fQoq2GJslixRzE6USFciLwzgY06VZqwHPYvhb +CU4JMTM70SBmVPUtDhCgNGNSrCpMqbsxfQdVwEPT7yPnUgDcRrPZkuEDeF3v20z8 +mimJz6H8VwwgQ4tklwSOwJIGD8R4VTvAetav85AKE7enFhmhQuSix7VNi8HZvb18 +W7jupviL1kz62VneVoMRmQzHBmrEaI+HNCHTD5rkcea+n7ZtlQr0M4dZGYsH1OxQ +rnnMUyTu3pYgB+36XGoGePAKzEXxKe7hTkc5FA4qvIUAmF6PBwFcXvej24PNcUT8 +SITwRTBndSWdKqSqrG2MIpe7qugAVLI= +-----END CERTIFICATE----- diff --git a/etc/firefox-profile/cert8.db b/etc/firefox-profile/cert8.db new file mode 100644 index 0000000..f4f605f Binary files /dev/null and b/etc/firefox-profile/cert8.db differ diff --git a/etc/firefox-profile/cert_override.txt b/etc/firefox-profile/cert_override.txt new file mode 100644 index 0000000..8909562 --- /dev/null +++ b/etc/firefox-profile/cert_override.txt @@ -0,0 +1,3 @@ +# PSM Certificate Override Settings file +# This is a generated file! Do not edit. +blog.example.com:8080 OID.2.16.840.1.101.3.4.2.1 9A:07:37:00:7E:DC:35:45:D2:C4:A2:1F:6A:4B:25:2C:69:09:BA:D5:44:22:9D:4D:98:69:33:99:EF:D9:9C:1C U AAAAAAAAAAAAAAAJAAAAogDta4v+HlgIhTCBnzELMAkGA1UEBhMCaHUxDTALBgNVBAgMBHBlc3QxETAPBgNVBAcMCGJ1ZGFwZXN0MSkwJwYDVQQKDCBpbmZvcm1hdGlrdXNvayBheiBlZGVtb2tyYWNpYWVydDEZMBcGA1UEAwwQYmxvZy5leGFtcGxlLmNvbTEoMCYGCSqGSIb3DQEJARYZbWFnK2Jsb2dAbWFnd2FzLnJ1bGV6Lm9yZw== diff --git a/etc/firefox-profile/key3.db b/etc/firefox-profile/key3.db new file mode 100644 index 0000000..a02bb6c Binary files /dev/null and b/etc/firefox-profile/key3.db differ diff --git a/etc/firefox-profile/secmod.db b/etc/firefox-profile/secmod.db new file mode 100644 index 0000000..729ba91 Binary files /dev/null and b/etc/firefox-profile/secmod.db differ diff --git a/etc/key.pem b/etc/key.pem new file mode 100644 index 0000000..cc7759d --- /dev/null +++ b/etc/key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +hfwVxYoFBchS7Yv847I0uAVPSwWr +-----END PRIVATE KEY----- diff --git a/tests/eDemo_SSOauth_widgetTest.php b/tests/eDemo_SSOauth_widgetTest.php index 6b8da7f..d15d239 100644 --- a/tests/eDemo_SSOauth_widgetTest.php +++ b/tests/eDemo_SSOauth_widgetTest.php @@ -3,6 +3,7 @@ require_once 'tests/fake_lib.php'; require_once 'eDemo-SSOauth/includes/class_edemo-ssoauth_base.php'; +require_once 'eDemo-SSOauth/includes/class_edemo-ssoauth.php'; require_once 'eDemo-SSOauth/includes/class_edemo-ssoauth_widgets.php'; class eDemo_SSOauth_login_widget__Test extends PHPUnit_Framework_TestCase @@ -25,4 +26,28 @@ public function test_constructor_sets_the_properties_from_plugin_options() false); } + public function test_serviceuri_exists() + { + init_mocked_option_container(); + update_option('eDemoSSO_serviceURI','sso.edemokraciagep.org.lehetne'); + $opt = get_option('eDemoSSO_serviceURI'); + $this->assertEquals('sso.edemokraciagep.org.lehetne',$opt); + } + + + public function test_site_url_exists() + { + $this->assertEquals( + '/login.html', + eDemo_SSOauth::SSO_SITE_URL); + } + + public function test_services_url_can_be_assembled() + { + init_mocked_option_container(); + update_option('eDemoSSO_serviceURI','sso.edemokraciagep.org.lehetne'); + $this->assertEquals( + 'sso.edemokraciagep.org.lehetne/login.html', + (get_option('eDemoSSO_serviceURI').eDemo_SSOauth::SSO_SITE_URL)); + } } diff --git a/tools/postci b/tools/postci new file mode 100755 index 0000000..e11ab9b --- /dev/null +++ b/tools/postci @@ -0,0 +1,2 @@ +#!/bin/bash +make cleanup diff --git a/tools/prepare b/tools/prepare index ab7296f..8b37b85 100755 --- a/tools/prepare +++ b/tools/prepare @@ -1,6 +1,6 @@ #!/bin/bash set -x -rm -rf tmp shippable wordpress +rm -rf tmp /tmp/wordpress mkdir -p tmp shippable export DISPLAY=:1 Xvnc -SecurityTypes=None :1& diff --git a/tools/runapache b/tools/runapache index 1757b50..b73d114 100755 --- a/tools/runapache +++ b/tools/runapache @@ -1,6 +1,6 @@ #!/bin/bash -sed sAPWDA$(pwd)A tmp/apache.conf -apache2 -X -f $(pwd)/tmp/apache.conf& -sleep 3 -tail -f shippable/*& +cp -r $(pwd)/etc /tmp +apache2 -X -f /tmp/etc/apache.conf& +sleep 2 +tail -f /tmp/wplog/*& diff --git a/tools/script b/tools/script index 5a1bfb7..2ee4fc6 100755 --- a/tools/script +++ b/tools/script @@ -1,6 +1,7 @@ #!/bin/bash make cleanup killall tail +ls -la /root . tools/prepare tools/runapache make check diff --git a/tools/wpinstall b/tools/wpinstall index 984e5b0..43cf860 100755 --- a/tools/wpinstall +++ b/tools/wpinstall @@ -1,10 +1,14 @@ -wget -O tmp/wp_cli https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -chmod a+x tmp/wp_cli -./tmp/wp_cli core download --allow-root --path=wordpress +#!/bin/bash +oldpath=$(pwd) +cd /tmp +rm -rf wordpress wplog +wget -O wp_cli https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar +chmod a+x wp_cli +./wp_cli core download --allow-root --path=wordpress mysql --password=password -e "create database wordpress" -./tmp/wp_cli core config --allow-root --dbname=wordpress --dbuser=root --dbhost=localhost --path=wordpress --dbpass=password -./tmp/wp_cli core install --allow-root --admin_name=admin --admin_password=admin --admin_email=admin@example.com --url=http://blog.example.com:8080 --title=WordPress --path=wordpress -cp -r eDemo-SSOauth wordpress/wp-content/plugins/ -./tmp/wp_cli --allow-root plugin activate eDemo-SSOauth --path=wordpress - - +./wp_cli core config --allow-root --dbname=wordpress --dbuser=root --dbhost=localhost --path=wordpress --dbpass=password +./wp_cli core install --allow-root --admin_name=admin --admin_password=admin --admin_email=admin@example.com --url=http://blog.example.com:8080 --title=WordPress --path=wordpress +cp -r $oldpath/eDemo-SSOauth wordpress/wp-content/plugins/ +./wp_cli --allow-root plugin activate eDemo-SSOauth --path=wordpress +mkdir -p /tmp/wplog +chown -R www-data.www-data wordpress wplog