aboutsummaryrefslogtreecommitdiff
path: root/engine/tests/api/plugins.php
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-11-30 03:56:34 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-11-30 03:56:34 +0000
commit8173f672f06ad2783d3d0112e7b285d2240f488b (patch)
tree283496b227e083fb18ee628f9a6b8b40a0b24edb /engine/tests/api/plugins.php
parentcaef932790b72de1efa5b8ef2065dd3ca3b9eb5a (diff)
downloadelgg-8173f672f06ad2783d3d0112e7b285d2240f488b.tar.gz
elgg-8173f672f06ad2783d3d0112e7b285d2240f488b.tar.bz2
Refs #1986 #2170 #2225 Added ElggPluginManifest, ElggPluginManifestParser, and its parser classes for 1.7 and 1.8 style manifests. Changed load_plugin_manifest() to use new parser. Added initial unit tests.
git-svn-id: http://code.elgg.org/elgg/trunk@7481 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/tests/api/plugins.php')
-rw-r--r--engine/tests/api/plugins.php213
1 files changed, 213 insertions, 0 deletions
diff --git a/engine/tests/api/plugins.php b/engine/tests/api/plugins.php
new file mode 100644
index 000000000..66e87c91e
--- /dev/null
+++ b/engine/tests/api/plugins.php
@@ -0,0 +1,213 @@
+<?php
+/**
+ * Elgg Plugins Test
+ *
+ * @package Elgg
+ * @subpackage Test
+ */
+class ElggCorePluginsAPITest extends ElggCoreUnitTest {
+ var $manifest_file_18 = <<<___END
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest version="1.8">
+ <name>Test Manifest</name>
+ <author>Anyone</author>
+ <version>1.0</version>
+ <blurb>A concise description.</blurb>
+ <description>A longer, more interesting description.</description>
+ <website>http://www.elgg.org/</website>
+ <copyright>(C) Elgg 2010</copyright>
+ <license>GNU Public License version 2</license>
+ <depends>
+ <type>elgg</type>
+ <value>2009030802</value>
+ </depends>
+
+ <screenshot description="Fun things to do 1">graphics/plugin_ss1.png</screenshot>
+ <screenshot description="Fun things to do 2">graphics/plugin_ss2.png</screenshot>
+
+ <admin>
+ <on_enable>setup_function</on_enable>
+ <on_disable>teardown_function</on_disable>
+ <interface_type>simple</interface_type>
+ </admin>
+
+ <depends>
+ <type>php_extension</type>
+ <value>gd</value>
+ </depends>
+
+ <depends>
+ <type>php_ini</type>
+ <name>safe_mode</name>
+ <value>off</value>
+ </depends>
+
+ <conflicts>
+ <type>plugin</type>
+ <value>profile</value>
+ </conflicts>
+
+ <provides>
+ <name>profile_api</name>
+ <version>1.3</version>
+ </provides>
+
+</plugin_manifest>
+___END;
+
+ // 1.8 manifest object
+ var $manifest18;
+
+ var $manifest_file_17 = <<<___END
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin_manifest>
+ <field key="author" value="Anyone" />
+ <field key="version" value="1.0" />
+ <field key="description" value="A 1.7-style manifest" />
+ <field key="website" value="http://www.elgg.org/" />
+ <field key="copyright" value="(C) Elgg2008-2009" />
+ <field key="license" value="GNU Public License version 2" />
+ <field key="elgg_version" value="2009030702" />
+</plugin_manifest>
+___END;
+
+ // 1.7 manifest object
+ var $manifest17;
+
+ public function __construct() {
+ parent::__construct();
+
+ $this->manifest18 = new ElggPluginManifest($this->manifest_file_18, 'unit_test');
+ $this->manifest17 = new ElggPluginManifest($this->manifest_file_17);
+ }
+
+ /**
+ * Called after each test method.
+ */
+ public function tearDown() {
+ // do not allow SimpleTest to interpret Elgg notices as exceptions
+ $this->swallowErrors();
+ }
+
+
+ // generic tests
+ public function testElggPluginManifestFromString() {
+ $manifest = new ElggPluginManifest($this->manifest_file_17);
+
+ $this->assertIsA($manifest, 'ElggPluginManifest');
+ }
+
+ public function testElggPluginManifestFromFile() {
+ $file = get_config('dataroot') . '/manifest_test.xml';
+ $fp = fopen($file, 'wb');
+ fputs($fp, $this->manifest_file_17);
+ fclose($fp);
+
+ $manifest = new ElggPluginManifest($file);
+
+ $this->assertIsA($manifest, 'ElggPluginManifest');
+
+ unlink($file);
+ }
+
+ public function testElggPluginManifestFromXML() {
+ $xml = xml_to_object($this->manifest_file_17);
+ $manifest = new ElggPluginManifest($xml);
+
+ $this->assertIsA($manifest, 'ElggPluginManifest');
+ }
+
+
+
+ // 1.8 interface
+
+ public function testElggPluginManifest18() {
+ $manifest_array = array(
+ 'name' => 'Test Manifest',
+ 'author' => 'Anyone',
+ 'version' => '1.0',
+ 'blurb' => 'A concise description.',
+ 'description' => 'A longer, more interesting description.',
+ 'website' => 'http://www.elgg.org/',
+ 'copyright' => '(C) Elgg 2010',
+ 'license' => 'GNU Public License version 2',
+
+ 'depends' => array(
+ array('type' => 'elgg', 'value' => '2009030802'),
+ array('type' => 'php_extension', 'value' => 'gd'),
+ array('type' => 'php_ini', 'name' => 'safe_mode', 'value' => 'off'),
+ ),
+
+ 'screenshots' => array(
+ array('description' => 'Fun things to do 1', 'path' => 'graphics/plugin_ss1.png'),
+ array('description' => 'Fun things to do 2', 'path' => 'graphics/plugin_ss2.png'),
+ ),
+
+ 'conflicts' => array(
+ array('type' => 'plugin', 'value' => 'profile')
+ ),
+
+ 'provides' => array(
+ array('name' => 'profile_api', 'version' => 1.3)
+ ),
+
+ 'admin' => array(
+ 'on_enable' => 'setup_function',
+ 'on_disable' => 'teardown_function',
+ 'interface_type' => 'simple'
+ )
+ );
+
+ $this->assertEqual($this->manifest18->getManifest(), $manifest_array);
+ }
+
+ public function testElggPluginManifestGetApiVersion() {
+ $this->assertEqual($this->manifest18->getApiVersion(), 1.8);
+ }
+
+ public function testElggPluginManifestGetName() {
+ $this->assertEqual($this->manifest18->getName(), 'Test Manifest');
+ }
+
+ public function testElggPluginManifestGetAuthor() {
+ $this->assertEqual($this->manifest18->getAuthor(), 'Anyone');
+ }
+
+ public function testElggPluginManifestGetVersion() {
+ $this->assertEqual($this->manifest18->getVersion(), 1.0);
+ }
+
+ public function testElggPluginManifestGetBlurb() {
+ $this->assertEqual($this->manifest18->getBlurb(), 'A concise description.');
+ }
+
+ public function testElggPluginManifestGetWebsite() {
+ $this->assertEqual($this->manifest18->getWebsite(), 'http://www.elgg.org/');
+ }
+
+ public function testElggPluginManifestGetCopyright() {
+ $this->assertEqual($this->manifest18->getCopyright(), '(C) Elgg 2010');
+ }
+
+ public function testElggPluginManifestGetLicense() {
+ $this->assertEqual($this->manifest18->getLicense(), 'GNU Public License version 2');
+ }
+
+
+ // 1.7 interface
+
+ public function testElggPluginManifest17() {
+ $manifest_array = array(
+ 'author' => 'Anyone',
+ 'version' => '1.0',
+ 'description' => 'A 1.7-style manifest',
+ 'website' => 'http://www.elgg.org/',
+ 'copyright' => '(C) Elgg2008-2009',
+ 'license' => 'GNU Public License version 2',
+ 'elgg_version' => '2009030702'
+ );
+
+ $this->assertEqual($this->manifest17->getManifest(), $manifest_array);
+ }
+
+}