mirror of
https://we.phorge.it/source/phorge.git
synced 2025-04-09 19:08:40 +02:00
Add test coverage for SSH key revocation
Summary: Depends on D18928. Ref T13043. Add some automated test coverage for SSH revocation rules. Test Plan: Ran tests, got a clean bill of health. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13043 Differential Revision: https://secure.phabricator.com/D18929
This commit is contained in:
parent
deb754dfe1
commit
5529458e14
2 changed files with 80 additions and 0 deletions
|
@ -2133,6 +2133,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorAuthSSHKeyRevokeController' => 'applications/auth/controller/PhabricatorAuthSSHKeyRevokeController.php',
|
'PhabricatorAuthSSHKeyRevokeController' => 'applications/auth/controller/PhabricatorAuthSSHKeyRevokeController.php',
|
||||||
'PhabricatorAuthSSHKeySearchEngine' => 'applications/auth/query/PhabricatorAuthSSHKeySearchEngine.php',
|
'PhabricatorAuthSSHKeySearchEngine' => 'applications/auth/query/PhabricatorAuthSSHKeySearchEngine.php',
|
||||||
'PhabricatorAuthSSHKeyTableView' => 'applications/auth/view/PhabricatorAuthSSHKeyTableView.php',
|
'PhabricatorAuthSSHKeyTableView' => 'applications/auth/view/PhabricatorAuthSSHKeyTableView.php',
|
||||||
|
'PhabricatorAuthSSHKeyTestCase' => 'applications/auth/__tests__/PhabricatorAuthSSHKeyTestCase.php',
|
||||||
'PhabricatorAuthSSHKeyTransaction' => 'applications/auth/storage/PhabricatorAuthSSHKeyTransaction.php',
|
'PhabricatorAuthSSHKeyTransaction' => 'applications/auth/storage/PhabricatorAuthSSHKeyTransaction.php',
|
||||||
'PhabricatorAuthSSHKeyTransactionQuery' => 'applications/auth/query/PhabricatorAuthSSHKeyTransactionQuery.php',
|
'PhabricatorAuthSSHKeyTransactionQuery' => 'applications/auth/query/PhabricatorAuthSSHKeyTransactionQuery.php',
|
||||||
'PhabricatorAuthSSHKeyViewController' => 'applications/auth/controller/PhabricatorAuthSSHKeyViewController.php',
|
'PhabricatorAuthSSHKeyViewController' => 'applications/auth/controller/PhabricatorAuthSSHKeyViewController.php',
|
||||||
|
@ -7441,6 +7442,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorAuthSSHKeyRevokeController' => 'PhabricatorAuthSSHKeyController',
|
'PhabricatorAuthSSHKeyRevokeController' => 'PhabricatorAuthSSHKeyController',
|
||||||
'PhabricatorAuthSSHKeySearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'PhabricatorAuthSSHKeySearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'PhabricatorAuthSSHKeyTableView' => 'AphrontView',
|
'PhabricatorAuthSSHKeyTableView' => 'AphrontView',
|
||||||
|
'PhabricatorAuthSSHKeyTestCase' => 'PhabricatorTestCase',
|
||||||
'PhabricatorAuthSSHKeyTransaction' => 'PhabricatorApplicationTransaction',
|
'PhabricatorAuthSSHKeyTransaction' => 'PhabricatorApplicationTransaction',
|
||||||
'PhabricatorAuthSSHKeyTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorAuthSSHKeyTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorAuthSSHKeyViewController' => 'PhabricatorAuthSSHKeyController',
|
'PhabricatorAuthSSHKeyViewController' => 'PhabricatorAuthSSHKeyController',
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorAuthSSHKeyTestCase extends PhabricatorTestCase {
|
||||||
|
|
||||||
|
protected function getPhabricatorTestCaseConfiguration() {
|
||||||
|
return array(
|
||||||
|
self::PHABRICATOR_TESTCONFIG_BUILD_STORAGE_FIXTURES => true,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRevokeSSHKey() {
|
||||||
|
$user = $this->generateNewTestUser();
|
||||||
|
$raw_key = 'ssh-rsa hunter2';
|
||||||
|
|
||||||
|
$ssh_key = PhabricatorAuthSSHKey::initializeNewSSHKey($user, $user);
|
||||||
|
|
||||||
|
// Add the key to the user's account.
|
||||||
|
$xactions = array();
|
||||||
|
$xactions[] = $ssh_key->getApplicationTransactionTemplate()
|
||||||
|
->setTransactionType(PhabricatorAuthSSHKeyTransaction::TYPE_NAME)
|
||||||
|
->setNewValue('key1');
|
||||||
|
$xactions[] = $ssh_key->getApplicationTransactionTemplate()
|
||||||
|
->setTransactionType(PhabricatorAuthSSHKeyTransaction::TYPE_KEY)
|
||||||
|
->setNewValue($raw_key);
|
||||||
|
$this->applyTransactions($user, $ssh_key, $xactions);
|
||||||
|
|
||||||
|
$ssh_key->reload();
|
||||||
|
$this->assertTrue((bool)$ssh_key->getIsActive());
|
||||||
|
|
||||||
|
// Revoke it.
|
||||||
|
$xactions = array();
|
||||||
|
$xactions[] = $ssh_key->getApplicationTransactionTemplate()
|
||||||
|
->setTransactionType(PhabricatorAuthSSHKeyTransaction::TYPE_DEACTIVATE)
|
||||||
|
->setNewValue(true);
|
||||||
|
$this->applyTransactions($user, $ssh_key, $xactions);
|
||||||
|
|
||||||
|
$ssh_key->reload();
|
||||||
|
$this->assertFalse((bool)$ssh_key->getIsActive());
|
||||||
|
|
||||||
|
// Try to add the revoked key back. This should fail with a validation
|
||||||
|
// error because the key was previously revoked by the user.
|
||||||
|
$revoked_key = PhabricatorAuthSSHKey::initializeNewSSHKey($user, $user);
|
||||||
|
$xactions = array();
|
||||||
|
$xactions[] = $ssh_key->getApplicationTransactionTemplate()
|
||||||
|
->setTransactionType(PhabricatorAuthSSHKeyTransaction::TYPE_NAME)
|
||||||
|
->setNewValue('key2');
|
||||||
|
$xactions[] = $ssh_key->getApplicationTransactionTemplate()
|
||||||
|
->setTransactionType(PhabricatorAuthSSHKeyTransaction::TYPE_KEY)
|
||||||
|
->setNewValue($raw_key);
|
||||||
|
|
||||||
|
$caught = null;
|
||||||
|
try {
|
||||||
|
$this->applyTransactions($user, $ssh_key, $xactions);
|
||||||
|
} catch (PhabricatorApplicationTransactionValidationException $ex) {
|
||||||
|
$errors = $ex->getErrors();
|
||||||
|
$this->assertEqual(1, count($errors));
|
||||||
|
$caught = head($errors)->getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->assertEqual(PhabricatorAuthSSHKeyTransaction::TYPE_KEY, $caught);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function applyTransactions(
|
||||||
|
PhabricatorUser $actor,
|
||||||
|
PhabricatorAuthSSHKey $key,
|
||||||
|
array $xactions) {
|
||||||
|
|
||||||
|
$content_source = $this->newContentSource();
|
||||||
|
|
||||||
|
$editor = $key->getApplicationTransactionEditor()
|
||||||
|
->setActor($actor)
|
||||||
|
->setContinueOnNoEffect(true)
|
||||||
|
->setContinueOnMissingFields(true)
|
||||||
|
->setContentSource($content_source)
|
||||||
|
->applyTransactions($key, $xactions);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue