Yaffs site version 1.1
[yaffs-website] / vendor / gabordemooij / redbean / testing / RedUNIT / Base / Keywords.php
diff --git a/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Keywords.php b/vendor/gabordemooij/redbean/testing/RedUNIT/Base/Keywords.php
new file mode 100644 (file)
index 0000000..1281fcd
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+namespace RedUNIT\Base;
+
+use RedUNIT\Base as Base;
+use RedBeanPHP\Facade as R;
+use RedBeanPHP\OODBBean as OODBBean;
+
+/**
+ * Keywords
+ *
+ * Tests whether we can use keywords as bean types and
+ * property names without running into security or stablity issues.
+ * RedBeanPHP should properly escape all bean types and properties
+ * so we may use whatever string we want.
+ *
+ * @file    RedUNIT/Base/Keywords.php
+ * @desc    Tests for possible keyword clashes.
+ * @author  Gabor de Mooij and the RedBeanPHP Community
+ * @license New BSD/GPLv2
+ *
+ * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community.
+ * This source file is subject to the New BSD/GPLv2 License that is bundled
+ * with this source code in the file license.txt.
+ */
+class Keywords extends Base
+{
+       /**
+        * What drivers should be loaded for this test pack?
+        *
+        * CUBRID has inescapable keywords :/
+        *
+        * @return array
+        */
+       public function getTargetDrivers()
+       {
+               return array( 'mysql', 'pgsql', 'sqlite' ); // CUBRID excluded for now.
+       }
+
+       /**
+        * Test if RedBeanPHP can properly handle keywords.
+        *
+        * @return void
+        */
+       public function testKeywords()
+       {
+               $keywords = array(
+                       'anokeyword', 'znokeyword', 'group', 'drop',
+                       'inner', 'join', 'select', 'table',
+                       'int', 'cascade', 'float', 'call',
+                       'in', 'status', 'order', 'limit',
+                       'having', 'else', 'if', 'while',
+                       'distinct', 'like'
+               );
+               foreach ( $keywords as $k ) {
+                       R::nuke();
+                       $bean = R::dispense( $k );
+                       $bean->$k = $k;
+                       $id = R::store( $bean );
+                       $bean = R::load( $k, $id );
+                       $bean2 = R::dispense( 'other' );
+                       $bean2->name = $k;
+                       $bean->bean = $bean2;
+                       $bean->ownBean[]    = $bean2;
+                       $bean->sharedBean[] = $bean2;
+                       $id = R::store( $bean );
+                       R::trash( $bean );
+                       pass();
+               }
+       }
+}