permissions resolution now works for repos.
[gwvp.git] / unittests / permissionunittest.php
1 <?php
2 $lib_base = "../gwvplib/";
3
4 // initial http file
5 $WEB_ROOT_FS = realpath(dirname(__FILE__));
6 $BASE_URL = dirname($_SERVER["PHP_SELF"]);
7
8 global $WEB_ROOT_FS, $BASE_URL, $repo_base, $data_directory, $db_type, $db_name, $db_username, $db_password;
9
10 // add gwvplib as if it were a path in ../gwvplib
11 if(file_exists($lib_base)) {
12         $path = realpath($lib_base);
13         set_include_path(get_include_path().PATH_SEPARATOR.$path);
14 }
15
16 require_once("gwvplib.php");
17 global $db_type, $db_url;
18
19 $db_type = "sqlite";
20 $db_name = "/tmp/unittestdbperms.db";
21
22 unlink($db_name);
23 gwvp_dbCreateSQLiteStructure("$db_name");
24 gwvp_ConnectDB();
25 gwvp_setConfigVal("repodir", "/tmp");
26
27 //gwvp_createUser($email, $fullname, $password, $username, $desc, $status);
28 gwvp_createUser("a1@b.com", "full name1", "asdf", "user1", "asdf", 0);
29 gwvp_createUser("a2@b.com", "full name2", "asdf", "user2", "asdf", 0);
30 gwvp_createUser("a3@b.com", "full name3", "asdf", "user3", "asdf", 0);
31 gwvp_createUser("a4@b.com", "full name4", "asdf", "user4", "asdf", 0);
32 gwvp_createUser("a5@b.com", "full name5", "asdf", "user5", "asdf", 0);
33 gwvp_createUser("a6@b.com", "full name6", "asdf", "user6", "asdf", 0);
34
35 // gwvp_createGroup($group_name, $group_desc, $is_admin, $owner_id), gwvp_getUserId($useremail=null, $username = null)
36 gwvp_createGroup("group1", "group1", true, gwvp_getUserId(null, "user1"));
37 gwvp_createGroup("group2", "group2", true, gwvp_getUserId(null, "user2"));
38 gwvp_createGroup("group3", "group3", false, gwvp_getUserId(null, "user3"));
39 gwvp_createGroup("group4", "group4", false, gwvp_getUserId(null, "user4"));
40 gwvp_createGroup("group5", "group5", false, gwvp_getUserId(null, "user5"));
41 gwvp_createGroup("group6", "group6", false, gwvp_getUserId(null, "user6"));
42
43 /*
44  * // 0 - anyone can clone/read, only owner can write
45 // 1 - noone can clone/read, repo is visible (i.e. name), only owner can read/write repo
46 // 2 - only owner can see anything
47 function gwvp_createGitRepo($name, $ownerid, $desc, $bundle=null, $defaultperms=0)
48
49  */
50 gwvp_createGitRepo("utrepo1", gwvp_getUserId(null, "user1"), "repo1", null, 2);
51 gwvp_createGitRepo("utrepo2", gwvp_getUserId(null, "user2"), "repo1", null, 2);
52 gwvp_createGitRepo("utrepo3", gwvp_getUserId(null, "user3"), "repo1", null, 2);
53 gwvp_createGitRepo("utrepo4", gwvp_getUserId(null, "user4"), "repo1", null, 2);
54 gwvp_createGitRepo("utrepo5", gwvp_getUserId(null, "user5"), "repo1", null, 2);
55 gwvp_createGitRepo("utrepo6", gwvp_getUserId(null, "user6"), "repo1", null, 0);
56
57 // now the fun part gwvp_addRepoPermission($repoid, $permtype, $permref)
58 gwvp_addRepoPermission(gwvp_GetRepoId("utrepo1"), "write", "user:".gwvp_getUserId(null, "user3"));
59 gwvp_addRepoPermission(gwvp_GetRepoId("utrepo2"), "read", "user:".gwvp_getUserId(null, "user3"));
60 gwvp_addRepoPermission(gwvp_GetRepoId("utrepo4"), "visible", "user:".gwvp_getUserId(null, "user3"));
61
62 // lets check user 1 gwvp_resolvRepoPerms($userid, $repoid)
63 $pers = gwvp_resolvRepoPerms(gwvp_getUserId(null, "user3"), gwvp_GetRepoId("utrepo1"));
64 echo "User3 pers to repo1 = $pers - should be 3\n";
65 $pers = gwvp_resolvRepoPerms(gwvp_getUserId(null, "user3"), gwvp_GetRepoId("utrepo2"));
66 echo "User3 pers to repo2 = $pers - should be 2\n";
67 $pers = gwvp_resolvRepoPerms(gwvp_getUserId(null, "user3"), gwvp_GetRepoId("utrepo3"));
68 echo "User3 pers to repo3 = $pers - should be 3 (owner)\n";
69 $pers = gwvp_resolvRepoPerms(gwvp_getUserId(null, "user3"), gwvp_GetRepoId("utrepo4"));
70 echo "User3 pers to repo4 = $pers - should be 1\n";
71 $pers = gwvp_resolvRepoPerms(gwvp_getUserId(null, "user3"), gwvp_GetRepoId("utrepo5"));
72 echo "User3 pers to repo5 = $pers - should be 0\n";
73
74 $pers = gwvp_resolvRepoPerms(gwvp_getUserId(null, "user2"), gwvp_GetRepoId("utrepo5"));
75 echo "User2 pers to repo5 = $pers - should be 3 (admin)\n";
76
77 $pers = gwvp_resolvRepoPerms(-1, gwvp_GetRepoId("utrepo6"));
78 echo "anon pers to repo5 = $pers - should be 2\n";
79
80
81 ?>