/tests/http_bug.php (35aae2e102fc43ad53482100768f10de34c12e9c) (7006 bytes) (mode 100644) (type blob)

<?php
error_reporting(E_ALL | E_STRICT);
ini_set("track_errors", "On");

$INC = dirname(__FILE__) . "/../inc";
require_once(dirname(__FILE__) . "/config.php");
require_once($INC . "/init.inc.php");
require_once($INC . "/util.inc.php");
require_once("helpers.inc.php");
require_once("http.inc.php");

rg_log_set_file("http_bug.log");

$rg_sql = "host=localhost user=rocketgit dbname=rocketgit connect_timeout=10";
$rg_no_db = TRUE;
require_once("common.php");

$_testns = 'http_bug';
$rg_cache_enable = TRUE;

rg_test_create_user($db, $rg_ui);
rg_test_create_user($db, $rg_ui2);
rg_test_create_repo($db, $rg_ui, $repo);

$r = test_login($test_url, $rg_ui, $good_sid);
if ($r === FALSE)
	exit(1);


rg_log("Loading bug form...");
$url = "/user/" . $rg_ui['username'] . "/" . $repo['name'] . "/bug/add";
$headers = array("Cookie: sid=" . $good_sid);
$data = array();
$r = do_req($test_url . $url, $data, $headers);
if ($r === FALSE) {
	rg_log('Cannot load add bug form.');
	exit(1);
}
$token = $r['token'];
if (empty($token)) {
	rg_log_ml(print_r($r, TRUE));
	rg_log("Seems I cannot load a token. See above.");
	exit(1);
}

rg_log("Posting bug form (token=$token)...");
$labels = array('a/b', 'uu::bb', '<xss>'); sort($labels);
$data = array('doit' => 1, 'edit' => 1, 'token' => $token,
	'title' => 'Title1 space<xss>',
	'body' => 'aasasasassa<xss>',
	'state' => 1,
	'assigned_to' => $rg_ui2['username'],
	'labels' => implode(' ', $labels));
$r = do_req($test_url . $url, $data, $headers);
if ($r === FALSE) {
	rg_log('Cannot post bug request.');
	exit(1);
}
$sql = 'SELECT * FROM bugs WHERE repo_id = ' . $repo['repo_id'];
$res = rg_sql_query($db, $sql);
$row = rg_sql_fetch_array($res);
rg_sql_free_result($res);
if ($row['bug_id'] != 1) {
	rg_log("Seems the bugs do not start at 1, but " . $row['bug_id']);
	exit(1);
}
if ($row['assigned_uid'] != $rg_ui2['uid']) {
	rg_log('assigned_uid is not ' . $rg_ui2['uid']
		. ', but ' . $row['assigned_uid'] . '!');
	exit(1);
}
if ($row['state'] != 1) {
	rg_log('State is not 1 but ' . $row['state'] . '!');
	exit(1);
}
$sql = 'SELECT * FROM bug_labels WHERE repo_id = ' . $repo['repo_id']
	. ' AND bug_id = 1';
$res = rg_sql_query($db, $sql);
$g = array();
while (($row = rg_sql_fetch_array($res))) {
	$g[] = $row['label'];
}
rg_sql_free_result($res);
sort($g);
$p1 = implode(' ', $labels);
$p2 = implode(' ', $g);
if (strcmp($p1, $p2) != 0) {
	rg_log('Labels are different [' . $p1 . '] != [' . $p2 . ']!');
	exit(1);
}


rg_log("Testing adding a note");

rg_log("Loading bug/note form...");
$url = "/user/" . $rg_ui['username'] . "/" . $repo['name'] . "/bug/1";
$data = array();
$r = do_req($test_url . $url, $data, $headers);
if ($r === FALSE) {
	rg_log("Cannot load bug page.");
	exit(1);
}
$token = $r['token'];

rg_log("Posting note add form (token=$token)...");
$note = 'This is a note<xss>';
$data = array('note_add_doit' => 1, 'token' => $token,
	'note' => $note);
$r = do_req($test_url . $url, $data, $headers);
if ($r === FALSE) {
	rg_log('Cannot post bug request.');
	exit(1);
}
$sql = 'SELECT * FROM bug_notes WHERE repo_id = ' . $repo['repo_id']
	. ' AND bug_id = 1';
$res = rg_sql_query($db, $sql);
$row = rg_sql_fetch_array($res);
rg_sql_free_result($res);
if ($row['note'] != $note) {
	rg_log('Note is not ok [' . $note . '] != [' . $row['note'] . ']!');
	exit(1);
}
if ($row['uid'] != $rg_ui['uid']) {
	rg_log('uid is not ok [' . $row['uid'] . '] != [' . $rg_ui['uid'] . ']!');
	exit(1);
}


// Test closing a bug
$token = $r['token'];
rg_log("Posting close bug form...");
$data = array('token' => $token,
	'close_reopen' => 1,
	'state' => 2);
$r = do_req($test_url . $url, $data, $headers);
if ($r === FALSE) {
	rg_log('Cannot post bug request.');
	exit(1);
}
$sql = 'SELECT * FROM bugs WHERE repo_id = ' . $repo['repo_id']
	. ' AND bug_id = 1';
$res = rg_sql_query($db, $sql);
$row = rg_sql_fetch_array($res);
rg_sql_free_result($res);
if ($row['state'] != 2) {
	rg_log('Seems we could not close the bug; state= [' . $row['state']);
	exit(1);
}


// Test re-opening a bug
$token = $r['token'];
rg_log("Posting re-open bug form...");
$data = array('token' => $token,
	'close_reopen' => 1,
	'state'=> 1);
$r = do_req($test_url . $url, $data, $headers);
if ($r === FALSE) {
	rg_log('Cannot post bug request.');
	exit(1);
}
$sql = 'SELECT * FROM bugs WHERE repo_id = ' . $repo['repo_id']
	. ' AND bug_id = 1';
$res = rg_sql_query($db, $sql);
$row = rg_sql_fetch_array($res);
rg_sql_free_result($res);
if ($row['state'] != 1) {
	rg_log('Seems we could not re-open the bug;'
		. ' state= [' . $row['state'] . ']!');
	exit(1);
}


rg_log("Testing deleting a bug");
for ($i = 0; $i <= 1; $i++) {
	$token = $r['token'];
	rg_log("Posting delete bug form...");
	$data = array('token' => $token,
		'del_undel' => $i + 1);
	$r = do_req($test_url . $url, $data, $headers);
	if ($r === FALSE) {
		rg_log('Cannot post bug request.');
		exit(1);
	}
	$sql = 'SELECT * FROM bugs WHERE repo_id = ' . $repo['repo_id']
		. ' AND bug_id = 1';
	$res = rg_sql_query($db, $sql);
	$row = rg_sql_fetch_array($res);
	rg_sql_free_result($res);
	if ($i == 0)
		$test = $row['deleted'] > 0;
	else
		$test = $row['deleted'] == 0;
	if (!$test) {
		rg_log('i=' . $i . ': Seems we could not delete/undelete the bug;'
			. ' deleted= [' . $row['deleted'] . ']!');
		exit(1);
	}
	if ($row['deleted_who'] != $rg_ui['uid']) {
		rg_log('i=' . $i . ': Seems the deleted_who was not updated;'
			. ' deleted_who= [' . $row['deleted_who'] . ']!');
		exit(1);
	}
}


// Test watching a bug - we need to login as a different user
$r = test_login($test_url, $rg_ui2, $good_sid);
if ($r === FALSE)
	exit(1);
$headers = array("Cookie: sid=" . $good_sid);

// We are already in the watch list because the asignee is automatically added
for ($i = 0; $i <= 1; $i++) {
	rg_log("Loading bug form (i=$i)...");
	$data = array();
	$r = do_req($test_url . $url, $data, $headers);
	if ($r === FALSE) {
		rg_log('Cannot load bug form.');
		exit(1);
	}
	$token = $r['token'];

	rg_log("Posting (un)watch bug form...");
	$data = array('token' => $token, 'watch' => $i, 'unwatch' => 1 - $i);
	$r = do_req($test_url . $url, $data, $headers);
	if ($r === FALSE) {
		rg_log('Cannot post watch bug request.');
		exit(1);
	}
	$sql = 'SELECT uid FROM watch_bug WHERE repo_id = ' . $repo['repo_id']
		. ' AND bug_id = 1';
	$res = rg_sql_query($db, $sql);
	$rows = rg_sql_num_rows($res);
	$row = array();
	while (($r = rg_sql_fetch_array($res)))
		$row[] = $r;
	rg_sql_free_result($res);

	if ($i == 0) { // unwatch - only rg_ui[uid] should be present
		if (($rows != 1) || ($row[0]['uid'] != $rg_ui['uid'])) {
			rg_log_ml('Seems we could not watch the bug; row:'
				. print_r($row, TRUE));
			exit(1);
		}
	} else {
		$_l = array($rg_ui['uid'], $rg_ui2['uid']);
		for ($j = 0; $j <= 1; $j++) {
			if (!in_array($row[$j]['uid'], $_l)) {
				rg_log('Seems I cannot unwatch a bug'
					. ' (' . $row[$j]['uid']
					. ' is not in the expected list)!');
				exit(1);
			}
		}
	}
}


rg_prof_log();
rg_log("OK!");
?>


Mode Type Size Ref File
100644 blob 9 f3c7a7c5da68804a1bdf391127ba34aed33c3cca .exclude
100644 blob 102 eaeb7d777062c60a55cdd4b5734902cdf6e1790c .gitignore
100644 blob 179 df01c6306393e7a8b180470b4beb8831e6c421e0 AUTHORS
100644 blob 1132 dd65951315f3de6d52d52a82fca59889d1d95187 Certs.txt
100644 blob 683 c61d848b6ba5c293c8a6d87e79849febd8f39e6c Compare.txt
100644 blob 202 76ae4b68b254d7b2fcc199dec13830136927826a History.txt
100644 blob 35147 94a9ed024d3859793618152ea559a168bbcbb5e2 LICENSE
100644 blob 2193 7528f3903e2d8dfcb629e1dc04ab71dd518834d9 Makefile.in
100644 blob 3785 ceed2aac739967b1c911c5e406da0092c4086121 README
100644 blob 684 59d8bb08b8440f1cb2d2600583dc90ab5ce3f57d README.vm
100644 blob 54362 579e2d2ab043eeef7f490da09d3f9c05f780b043 TODO
100644 blob 1294 f22911eb777f0695fcf81ad686eac133eb11fcc4 TODO-plans
040000 tree - 21928e906ad2907a55c2e81c2a8b0502b586b8a0 artwork
100755 blob 30 92c4bc48245c00408cd7e1fd89bc1a03058f4ce4 configure
040000 tree - f67d3605efbd6422a8acdd953578991139266391 docs
100755 blob 13704 87c4881d7f32f8179d29d86ee17ddbe0f6254c57 duilder
100644 blob 291 60cd1886a3692d86a922d0d476058ccdccd22700 duilder.conf
040000 tree - d7ba62d78c4c4aa191a64ab04e9a28ce2685a893 hooks
040000 tree - 449d73c9ad993c6a6520f5487d667f4becfd6ba3 inc
100644 blob 3227 cbd7d4581a1e6e83cdafe1be9945032008be86b6 rocketgit.spec.in
040000 tree - c615422fe38ffa45d550a4f4d9f952568dc0c16a root
040000 tree - 4469409184be9459f37193721a3b232beabcb0c8 samples
040000 tree - bb0e3470c7f77845c550c591ecbf287f4ffc7ead scripts
040000 tree - bb78a8874242bc026658477a7427ca8c79bdcf80 selinux
100755 blob 204 55b754e1e2e5a70c65e2612fdb8cdec2f78e4e60 spell_check.sh
040000 tree - a4486e3a060cff59eb970cf8dc753aff569388fe tests
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/catalinux/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/catalinux/rocketgit

Clone this repository using git:
git clone git://git.rocketgit.com/user/catalinux/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main