aboutsummaryrefslogtreecommitdiff
path: root/engine/tests/objects
diff options
context:
space:
mode:
authornickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>2009-10-27 21:58:25 +0000
committernickw <nickw@36083f99-b078-4883-b0ff-0f9b5a30f544>2009-10-27 21:58:25 +0000
commitbd2d492f2616489a40a0f3ed90ea5e6558117fc8 (patch)
tree6099c607cad11874ab57518deb26d3b812abe3dc /engine/tests/objects
parentafa0511a08cf4e53e3e0d6ab5562add2eb8d06b8 (diff)
downloadelgg-bd2d492f2616489a40a0f3ed90ea5e6558117fc8.tar.gz
elgg-bd2d492f2616489a40a0f3ed90ea5e6558117fc8.tar.bz2
Modifying user file locations to be based on guid.
Previous implementations utilized the owner's username to determine a file path matrix based on (up to) the first five letters. To eliminate language and filesystem inconsistencies, the matrix is now created from the entity's creation date and guid. This has the added benefit of (potentially) allowing users to update their usernames. git-svn-id: http://code.elgg.org/elgg/trunk@3590 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/tests/objects')
-rw-r--r--engine/tests/objects/filestore.php106
-rw-r--r--engine/tests/objects/users.php10
2 files changed, 116 insertions, 0 deletions
diff --git a/engine/tests/objects/filestore.php b/engine/tests/objects/filestore.php
new file mode 100644
index 000000000..76583a463
--- /dev/null
+++ b/engine/tests/objects/filestore.php
@@ -0,0 +1,106 @@
+<?php
+/**
+ * Elgg Test Skeleton
+ *
+ * @package Elgg
+ * @subpackage Test
+ * @author Curverider Ltd
+ * @link http://elgg.org/
+ */
+class ElggCoreFilestoreTest extends ElggCoreUnitTest {
+
+ /**
+ * Called before each test object.
+ */
+ public function __construct() {
+ parent::__construct();
+
+ // all code should come after here
+ }
+
+ /**
+ * Called before each test method.
+ */
+ public function setUp() {
+ $this->filestore = new ElggDiskFilestoreTest();
+ }
+
+ /**
+ * Called after each test method.
+ */
+ public function tearDown() {
+ // do not allow SimpleTest to interpret Elgg notices as exceptions
+ $this->swallowErrors();
+
+ unset($this->filestore);
+ }
+
+ /**
+ * Called after each test object.
+ */
+ public function __destruct() {
+ // all code should go above here
+ parent::__destruct();
+ }
+
+ public function testFileMatrix() {
+ global $CONFIG;
+
+ // create a test user
+ $user = $this->createTestUser();
+ $created = date('Y/m/d', $user->time_created);
+
+ // check matrix with username
+ $user_dir = $this->filestore->make_file_matrix($user->username);
+ $this->assertIdentical($user_dir, "f/i/l/e/T/fileTest/");
+
+ // check matrix with guid
+ $guid_dir = $this->filestore->make_file_matrix($user->guid);
+ $this->assertIdentical($guid_dir, "$created/$user->guid/");
+ $this->dump($user_dir);$this->dump($guid_dir);
+
+ // clean up user
+ $user->delete();
+ }
+
+ public function testFilenameOnFilestore() {
+ global $CONFIG;
+
+ // create a user to own the file
+ $user = $this->createTestUser();
+ $created = date('Y/m/d', $user->time_created);
+
+ // setup a test file; no need to save
+ $file = new ElggFile();
+ $file->owner_guid = $user->guid;
+ $file->setFilename('testing/filestore.txt');
+
+ // ensure filename and path is expected
+ $filename = $file->getFilenameOnFilestore($file);
+ $filepath = "$CONFIG->dataroot$created/$user->guid/testing/filestore.txt";
+ $this->assertIdentical($filename, $filepath);
+
+ // clean up user
+ $user->delete();
+ }
+
+
+ protected function createTestUser($username = 'fileTest') {
+ $user = new ElggUser();
+ $user->username = $username;
+ $guid = $user->save();
+
+ // load user to have access to creation time
+ return get_entity($guid);
+ }
+}
+
+class ElggDiskFilestoreTest extends ElggDiskFilestore {
+ public function make_file_matrix($filename) {
+ return parent::make_file_matrix($filename);
+ }
+
+ public function user_file_matrix($guid) {
+ return parent::user_file_matrix($guid);
+ }
+}
diff --git a/engine/tests/objects/users.php b/engine/tests/objects/users.php
index 5c88e4ece..358a80f1c 100644
--- a/engine/tests/objects/users.php
+++ b/engine/tests/objects/users.php
@@ -142,6 +142,16 @@ class ElggCoreUserTest extends ElggCoreUnitTest {
$object->delete();
}
+ public function testElggUserSave() {
+ // new object
+ $this->AssertEqual($this->user->getGUID(), 0);
+ $guid = $this->user->save();
+ $this->AssertNotEqual($guid, 0);
+
+ // clean up
+ $this->user->delete();
+ }
+
protected function fetchUser($guid) {
global $CONFIG;