xaizek / rocketgit (License: AGPLv3+) (since 2018-12-09)
Light and fast Git hosting solution suitable to serve both as a hub or as a personal code storage with its tickets, pull requests, API and much more.
<root> / tests / admin_set_git.php (7b7a2910984fd361261e3b12cb79d4ee7dca2e83) (1,665B) (mode 100644) [raw]
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('track_errors', 'On');

$rg_cache_debug = TRUE;
$test_normal = TRUE;

$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('admin_set_git.log');

require_once('common.php');

$_testns = 'admin_set_git';

prepare_http();

$rg_ui = array('is_admin' => 1);
rg_test_create_user($db, $rg_ui);
$r = test_login($test_url, $rg_ui);
if ($r === FALSE) {
	rg_log("Cannot login!");
	exit(1);
}


rg_log('');
rg_log_enter('Loading Admin -> Settings -> Git...');
$data = array();
$headers = array();
$r = do_req($test_url . '/op/admin/settings/git', $data, $headers);
if ($r === FALSE) {
	rg_log("Cannot load page!");
	exit(1);
}
if (!isset($r['tokens']['admin_settings_git'])) {
	rg_log_ml('r:' . print_r($r, TRUE));
	rg_log("No 'admin_settings_git' token?!");
	exit(1);
}
$token = $r['tokens']['admin_settings_git'];

rg_log('Posting the form...');
$data = array(
	'doit' => 1,
	'token' => $token
);
$list = array(
	'git_patch_limit' => rand(5000, 7000)
);
foreach ($list as $var => $def) {
	$v = rg_state_get($db, $var);
	if ($v === FALSE) {
		rg_log('Cannot load state!');
		exit(1);
	}
	if (empty($v))
		$data[$var] = $def;
	else
		$data[$var] = $v;
}
$r = do_req($test_url . '/op/admin/settings/git', $data, $headers);
if (!strstr($r['body'], 'Configuration has been successfully saved.')) {
	rg_log_ml('r: ' . print_r($r, TRUE));
	rg_log("Cannot post form (expected answer missing)!");
	exit(1);
}
rg_log_exit();


rg_log('OK!');
?>
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://code.reversed.top/user/xaizek/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit

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