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 / http_keys.php (8db9c899c282dc442fa08588bbed2c30b0ab9a49) (1,766B) (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('http_keys.log');

require_once('common.php');

$_testns = 'http_keys';


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 -> SSH...');
$data = array();
$headers = array();
$r = do_req($test_url . '/op/admin/settings/ssh', $data, $headers);
if ($r === FALSE) {
	rg_log("Cannot load page!");
	exit(1);
}
if (!isset($r['tokens']['admin_settings_ssh'])) {
	rg_log_ml('r:' . print_r($r, TRUE));
	rg_log("No 'admin_settings_ssh' token?!");
	exit(1);
}
$token = $r['tokens']['admin_settings_ssh'];

rg_log('Posting the form...');
$data = array(
	'doit' => 1,
	'token' => $token
);
$list = array(
	'max_ssh_keys' => 10,
	'ssh_key_min_bits_rsa' => 2048,
	'ssh_key_allow_dsa' => 0,
	'ssh_key_min_bits_ecdsa' => 256,
	'AuthorizedKeysCommand' => 1
);
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/ssh', $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