<?php
error_reporting(E_ALL | E_STRICT);
$INC = "../inc";
require_once($INC . "/repo.inc.php");
require_once($INC . "/db/struct.inc.php");
rg_log_set_file("repo.log");
$rg_sql_debug = 1;
// defaults
$rg_repo_max_len = 100;
$rg_base_repo = "/u";
rg_log("name2base1");
$e = "/u/a/a/";
$c = rg_repo_name2base("aa");
if (strcmp($c, $e) != 0) {
echo "name2base1 is not working correctly: c=$c e=$e.\n";
exit(1);
}
rg_log("name2base2");
$e = "/u/a/_/";
$c = rg_repo_name2base("a");
if (strcmp($c, $e) != 0) {
echo "name2base2 is not working correctly: c=$c e=$e.\n";
exit(1);
}
rg_log("test if repo_allow works correctly (0)");
$rg_repo_allow = '/^[A-Za-z0-9]*$/';
$v = "xx";
$c = rg_repo_ok($v);
if ($c !== TRUE) {
echo "repo_allow problem for valid repo [$v] (c=$c).\n";
exit(1);
}
rg_log("test if repo_allow works correctly (1)");
$rg_repo_allow = '/^[A-Za-z0-9]*$/';
$v = "eyhtmcmet_";
$c = rg_repo_ok($v);
if ($c !== FALSE) {
echo "repo_allow problem for '_' in [$v] (c=$c).\n";
exit(1);
}
rg_log("test if repo_allow works correctly (2)");
$rg_repo_allow = '/^[A-Za-z0-9_.-]*$/';
$v = ".e&y.h-tmcmet&_.-";
$c = rg_repo_ok($v);
if ($c !== FALSE) {
echo "repo_allow problem for '&'.\n";
exit(1);
}
rg_log("check if we allow '..'");
$rg_repo_allow = '/^[A-Za-z0-9_.-]*$/';
$v = "a..b";
$c = rg_repo_ok($v);
if ($c !== FALSE) {
echo "repo_allow problem for '..'.\n";
exit(1);
}
rg_log("check len test");
$v = "0123456789A";
$rg_repo_allow = '/^[A-Za-z0-9]*$/';
$rg_repo_max_len = 10;
$c = rg_repo_ok($v);
if ($c !== FALSE) {
echo "repo_ok: max length is not enforced!\n";
exit(1);
}
$db = rg_sql_open("dbname=trg");
if ($db === FALSE) {
echo "Cannot create a database (" . rg_sql_error() . ")!\n";
exit(1);
}
$r = rg_db_struct_run($db, FALSE, 1);
if ($r === FALSE) {
echo "Cannot create struct!\n";
exit(1);
}
$sql = "INSERT INTO repos (repo_id, name, uid, itime"
. ", disk_quota_mb, max_commit_size"
. ", master, description, git_dir_done, default_rights)"
. " VALUES (1, 'repo1', 1, 0, 0, 0, 0, 'bla bla desc', 1, 'F')";
$res = rg_sql_query($db, $sql);
if ($res === FALSE) {
echo "Cannot insert a user (" . rg_sql_error() . ")!\n";
exit(1);
}
echo "test giving rights\n";
$repo_id = 1;
$ri = rg_repo_info($db, $repo_id, "");
$uid = 10;
$v = rg_repo_rights_set($db, $ri, $uid, "P");
if ($v === FALSE) {
echo "Cannot give rights (1)!\n";
exit(1);
}
echo "owner gets all rights.\n";
$uid = 1;
$e = rg_rights_all("repo");
$r = rg_repo_rights_get($db, $ri, $uid, 0);
$c = $r['rights'];
if (strcmp($c, $e) != 0) {
echo "Owner did not get all rights: c=$c e=$e.\n";
exit(1);
}
echo "non-owner gets correct rights: F gets from default rights.\n";
$uid = 12;
$r = rg_repo_rights_set($db, $ri, $uid, "P");
if ($r !== TRUE) {
echo "Cannot set rights (" . rg_repo_error() . ")!\n";
exit(1);
}
$e = "FP";
$r = rg_repo_rights_get($db, $ri, $uid, 0);
$c = $r['rights'];
if (strcmp($c, $e) != 0) {
echo "Non-owner did not get correct rights: c=$c e=$e.\n";
exit(1);
}
echo "owner can set separate rights for him\n";
$uid = 1;
$v = rg_repo_rights_set($db, $ri, $uid, "A");
if ($v === FALSE) {
echo "Owner cannot set separate rights for him!\n";
exit(1);
}
rg_log("list1");
$r = rg_repo_rights_list($db, $ri, "/prj1");
if ($r === FALSE) {
echo "Cannot list rights (" . rg_repo_error() . ")\n";
exit(1);
}
rg_sql_close($db);
echo "OK\n";
?>