예제 #1
0
 public function testWheel()
 {
     $obj = new \BeeHub_ACL_Provider();
     $this->setCurrentUser('/system/users/john');
     $this->assertTrue($obj->wheel(), 'BeeHub_ACL_Provider::wheel() should return true, because John is a member of the admin group');
     $config = \BeeHub::config();
     $adminGroup = new \BeeHub_Group($config['namespace']['admin_group']);
     $adminGroup->change_memberships(array('jane'), \BeeHub_Group::USER_ACCEPT);
     $adminGroup->change_memberships(array('jane'), \BeeHub_Group::ADMIN_ACCEPT);
     $this->setCurrentUser('/system/users/jane');
     $this->assertTrue($obj->wheel(), 'BeeHub_ACL_Provider::wheel() should return true, because Jane is also a member of the admin group');
     $this->setCurrentUser('/system/users/johny');
     $this->assertFalse($obj->wheel(), 'BeeHub_ACL_Provider::wheel() should return true, because Johny is not a member of the admin group');
 }
예제 #2
0
 public function setUp()
 {
     parent::setUp();
     if (!setUpStorageBackend()) {
         $this->markTestSkipped('No storage backend specified; all tests depending on the storage backend are skipped');
         return;
     }
     $sponsorA = new \BeeHub_Sponsor('/system/sponsors/sponsor_a');
     $sponsorA->change_memberships(array('jane'), \BeeHub_Sponsor::ADMIN_ACCEPT);
     $sponsorA->change_memberships(array('jane'), \BeeHub_Sponsor::SET_ADMIN);
     $jane = new \BeeHub_User('/system/users/jane');
     $jane->user_set_sponsor('/system/sponsors/sponsor_a');
     $jane->storeProperties();
     $foo = new \BeeHub_Group('/system/groups/foo');
     $foo->change_memberships(array('jane'), \BeeHub_Group::USER_ACCEPT);
     $foo->change_memberships(array('jane'), \BeeHub_Group::ADMIN_ACCEPT);
     $foo->change_memberships(array('jane'), \BeeHub_Group::SET_ADMIN);
     $this->obj = new \BeeHub_File('/foo/file.txt');
     $_SERVER['REQUEST_URI'] = '/foo/file.txt';
 }
예제 #3
0
}
// The configuration checks out, let's install stuff
// Import the database structure
print "Creating database structure...";
// Create users collection
// TODO: Check input!
$username = $_SERVER['PHP_AUTH_USER'];
$userEmail = $_POST['email'];
$usersCollection = $db->createCollection('users');
$usersCollection->ensureIndex(array('name' => 1), array('unique' => 1));
$usersCollection->insert(array('name' => $username, 'displayname' => 'Administrator', 'email' => $userEmail, 'password' => \crypt($_SERVER['PHP_AUTH_PW'], '$6$rounds=5000$' . md5(time() . rand(0, 99999)) . '$'), 'default_sponsor' => DEFAULT_SPONSOR_NAME));
// Create groups collection
$groupsCollection = $db->createCollection('groups');
$groupsCollection->ensureIndex(array('name' => 1), array('unique' => 1));
$groupsCollection->insert(array('name' => \basename($config['namespace']['admin_group']), 'displayname' => ADMIN_GROUP_DISPLAYNAME, 'description' => ADMIN_GROUP_DESCRIPTION));
$group = new \BeeHub_Group($config['namespace']['admin_group']);
$group->change_memberships(array($username), \BeeHub_Group::USER_ACCEPT);
$group->change_memberships(array($username), \BeeHub_Group::ADMIN_ACCEPT);
$group->change_memberships(array($username), \BeeHub_Group::SET_ADMIN);
// Create sponsors collection
$sponsorsCollection = $db->createCollection('sponsors');
$sponsorsCollection->ensureIndex(array('name' => 1), array('unique' => 1));
$sponsorsCollection->insert(array('name' => DEFAULT_SPONSOR_NAME, 'displayname' => DEFAULT_SPONSOR_DISPLAYNAME, 'description' => DEFAULT_SPONSOR_DESCRIPTION));
$sponsor = new \BeeHub_Sponsor(\BeeHub::SPONSORS_PATH . DEFAULT_SPONSOR_NAME);
$sponsor->change_memberships(array($username), \BeeHub_Sponsor::ADMIN_ACCEPT);
$sponsor->change_memberships(array($username), \BeeHub_Sponsor::SET_ADMIN);
// Create the beehub_system collection
$systemCollection = $db->createCollection('beehub_system');
$systemCollection->insert(array('name' => 'etag', 'counter' => 0));
// Create the files collection
$filesCollection = $db->createCollection('files');
예제 #4
0
 public function testUser_propname()
 {
     $foo = new \BeeHub_Group('/system/groups/foo');
     $this->assertSame(\BeeHub::$GROUP_PROPS, $foo->user_propname());
 }
예제 #5
0
 public function testMethod_POST()
 {
     if (!setUpStorageBackend()) {
         $this->markTestSkipped('No storage backend specified; all tests depending on the storage backend are skipped');
         return;
     }
     $this->setCurrentUser('/system/users/john');
     $_POST['displayname'] = 'Some test group of John';
     $_POST['description'] = "This is the description of John's test group";
     $_POST['group_name'] = 'johngroup';
     $headers = array();
     $this->expectOutputRegex('/https 303 See Other/');
     $this->obj->method_POST($headers);
     $group = new \BeeHub_Group('/system/groups/johngroup');
     $this->assertSame($_POST['displayname'], $group->user_prop(\DAV::PROP_DISPLAYNAME));
     $this->assertSame($_POST['description'], $group->user_prop(\BeeHub::PROP_DESCRIPTION));
     $groupFolder = \DAV::$REGISTRY->resource('/' . $_POST['group_name']);
     $beehubConfig = \BeeHub::config();
     $expectedAcl = array(new \DAVACL_Element_ace($group->path, false, array(\DAVACL::PRIV_READ, \DAVACL::PRIV_WRITE), false, false));
     $this->assertNull($groupFolder->user_prop(\DAV::PROP_OWNER));
     $this->assertEquals($expectedAcl, $groupFolder->user_prop_acl_internal());
     $this->assertSame('/system/sponsors/sponsor_a', $groupFolder->user_prop(\BeeHub::PROP_SPONSOR));
 }