summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruckelman <uckelman@nomic.net>2010-03-21 19:04:22 +0000
committeruckelman <uckelman@nomic.net>2010-03-21 19:04:22 +0000
commitaab481efddce9501b125e995d82c50f03e08d6e7 (patch)
tree2a72b7f82efeaa1def82649af2e3f1a4e906c94a
parent1b1bd4936c1df0a9a1248697065e39e6f589bbdd (diff)
Building libs for Mailman and PhpBB3.
git-svn-id: https://vassalengine.svn.sourceforge.net/svnroot/vassalengine/site-src/trunk@6625 67b53d14-2c14-4ace-a08f-0dab2b34000c
-rw-r--r--src/MailmanLib.php11
-rw-r--r--src/PhpBB3Conf.php5
-rw-r--r--src/PhpBB3Lib.php30
-rw-r--r--test/MailmanLibTest.php25
-rw-r--r--test/PhpBB3LibTest.php50
-rw-r--r--test/empty0
6 files changed, 121 insertions, 0 deletions
diff --git a/src/MailmanLib.php b/src/MailmanLib.php
new file mode 100644
index 0000000..ca3dadf
--- /dev/null
+++ b/src/MailmanLib.php
@@ -0,0 +1,11 @@
+<?php
+
+function read_raw_message($url) {
+ $input = file_get_contents($url);
+ if (!$input) {
+ trigger_error("No input in $url", E_USER_ERROR);
+ }
+ return $input;
+}
+
+?>
diff --git a/src/PhpBB3Conf.php b/src/PhpBB3Conf.php
new file mode 100644
index 0000000..7f023d9
--- /dev/null
+++ b/src/PhpBB3Conf.php
@@ -0,0 +1,5 @@
+<?php
+
+$phpbb_root_path = '/var/www/forum/';
+
+?>
diff --git a/src/PhpBB3Lib.php b/src/PhpBB3Lib.php
new file mode 100644
index 0000000..f9f91d7
--- /dev/null
+++ b/src/PhpBB3Lib.php
@@ -0,0 +1,30 @@
+<?php
+
+# phpBB setup
+define('IN_PHPBB', true);
+require_once(__DIR__ . '/PhpBB3Conf.php');
+$phpEx = substr(strrchr(__FILE__, '.'), 1);
+require_once($phpbb_root_path . 'common.' . $phpEx);
+#require_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
+
+
+function get_user_id($from) {
+ global $db;
+
+ $sql = 'SELECT user_id FROM ' . USERS_TABLE .
+ ' WHERE user_email = "' . $db->sql_escape($from) . '"';
+
+ $result = $db->sql_query($sql);
+// FIXME: what to do if more than one row is returned?
+ $row = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ if (!$row) {
+ trigger_error("Unknown user email: $from", E_USER_ERROR);
+ }
+
+ return $row['user_id'];
+}
+
+
+?>
diff --git a/test/MailmanLibTest.php b/test/MailmanLibTest.php
new file mode 100644
index 0000000..eeee160
--- /dev/null
+++ b/test/MailmanLibTest.php
@@ -0,0 +1,25 @@
+<?php
+
+require_once('PHPUnit/Framework.php');
+require_once('src/MailmanLib.php');
+
+class MailmanLibTest extends PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider provider_read_raw_message
+ */
+ public function test_read_raw_message($url, $expected, $ex) {
+ if ($ex) $this->setExpectedException($ex);
+ $this->assertEquals($expected, read_raw_message($url));
+ }
+
+ public function provider_read_raw_message() {
+ return array(
+ array(__DIR__ . '/empty', null, 'PHPUnit_Framework_Error'),
+ array(__DIR__ . '/bougs', null, 'PHPUnit_Framework_Error'),
+ array(__DIR__ . '/1', file_get_contents(__DIR__ . '/1'), null),
+ );
+ }
+}
+
+?>
diff --git a/test/PhpBB3LibTest.php b/test/PhpBB3LibTest.php
new file mode 100644
index 0000000..cfad41f
--- /dev/null
+++ b/test/PhpBB3LibTest.php
@@ -0,0 +1,50 @@
+<?php
+
+require_once('PHPUnit/Framework.php');
+
+class PhpBB3LibTest extends PHPUnit_Framework_TestCase {
+
+ /**
+ * phpBB3 uses many globals; due to the way tests are run, we cannot
+ * easily get these globals into the right scope so that the methods
+ * called by our tests can see them. Therefore, we use this function
+ * to run tests externally and report back on the results.
+ */
+ protected function exec_kludge($run) {
+ $prog = <<<EOF
+try {
+ require_once("src/PhpBB3Lib.php");
+ \$result = serialize($run);
+}
+catch (Exception \$e) {
+ \$result = serialize(\$e);
+}
+
+print \$result;
+EOF;
+
+ $result = unserialize(exec('php -r \'' . $prog . '\''));
+
+ if ($result instanceof Exception) {
+ throw $result;
+ }
+
+ return $result;
+ }
+
+ /**
+ * @dataProvider provider_get_user_id
+ */
+ public function test_get_user_id($from, $expected, $ex) {
+ if ($ex) $this->setExpectedException($ex);
+ $run = 'get_user_id("' . $from . '")';
+ $this->assertEquals($expected, $this->exec_kludge($run));
+ }
+
+ public function provider_get_user_id() {
+ return array(
+ array('bogus', null, 'PHPUnit_Framework_Error'),
+ array('uckelman@nomic.net', 2, null)
+ );
+ }
+}
diff --git a/test/empty b/test/empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/empty