Search in sources :

Example 1 with UseSsh

use of com.google.gerrit.acceptance.UseSsh in project gerrit by GerritCodeReview.

the class AccountIT method sshKeys.

@Test
@UseSsh
public void sshKeys() throws Exception {
    AccountIndexedCounter accountIndexedCounter = new AccountIndexedCounter();
    try (Registration registration = extensionRegistry.newRegistration().add(accountIndexedCounter)) {
        // The test account should initially have exactly one ssh key
        List<SshKeyInfo> info = gApi.accounts().self().listSshKeys();
        assertThat(info).hasSize(1);
        assertSequenceNumbers(info);
        SshKeyInfo key = info.get(0);
        KeyPair keyPair = sshKeys.getKeyPair(admin);
        String initial = TestSshKeys.publicKey(keyPair, admin.email());
        assertThat(key.sshPublicKey).isEqualTo(initial);
        accountIndexedCounter.assertNoReindex();
        // Add a new key
        sender.clear();
        String newKey = TestSshKeys.publicKey(SshSessionFactory.genSshKey(), admin.email());
        gApi.accounts().self().addSshKey(newKey);
        info = gApi.accounts().self().listSshKeys();
        assertThat(info).hasSize(2);
        assertSequenceNumbers(info);
        accountIndexedCounter.assertReindexOf(admin);
        assertThat(sender.getMessages()).hasSize(1);
        assertThat(sender.getMessages().get(0).body()).contains("new SSH keys have been added");
        // Add an existing key (the request succeeds, but the key isn't added again)
        sender.clear();
        gApi.accounts().self().addSshKey(initial);
        info = gApi.accounts().self().listSshKeys();
        assertThat(info).hasSize(2);
        assertSequenceNumbers(info);
        accountIndexedCounter.assertNoReindex();
        // TODO: Issue 10769: Adding an already existing key should not result in a notification email
        assertThat(sender.getMessages()).hasSize(1);
        assertThat(sender.getMessages().get(0).body()).contains("new SSH keys have been added");
        // Add another new key
        sender.clear();
        String newKey2 = TestSshKeys.publicKey(SshSessionFactory.genSshKey(), admin.email());
        gApi.accounts().self().addSshKey(newKey2);
        info = gApi.accounts().self().listSshKeys();
        assertThat(info).hasSize(3);
        assertSequenceNumbers(info);
        accountIndexedCounter.assertReindexOf(admin);
        assertThat(sender.getMessages()).hasSize(1);
        assertThat(sender.getMessages().get(0).body()).contains("new SSH keys have been added");
        // Delete second key
        sender.clear();
        gApi.accounts().self().deleteSshKey(2);
        info = gApi.accounts().self().listSshKeys();
        assertThat(info).hasSize(2);
        assertThat(info.get(0).seq).isEqualTo(1);
        assertThat(info.get(1).seq).isEqualTo(3);
        accountIndexedCounter.assertReindexOf(admin);
        assertThat(sender.getMessages()).hasSize(1);
        assertThat(sender.getMessages().get(0).body()).contains("SSH keys have been deleted");
        // Mark first key as invalid
        assertThat(info.get(0).valid).isTrue();
        authorizedKeys.markKeyInvalid(admin.id(), 1);
        info = gApi.accounts().self().listSshKeys();
        assertThat(info).hasSize(2);
        assertThat(info.get(0).seq).isEqualTo(1);
        assertThat(info.get(0).valid).isFalse();
        assertThat(info.get(1).seq).isEqualTo(3);
        accountIndexedCounter.assertReindexOf(admin);
    }
}
Also used : AccountIndexedCounter(com.google.gerrit.acceptance.AccountIndexedCounter) KeyPair(java.security.KeyPair) SshKeyInfo(com.google.gerrit.extensions.common.SshKeyInfo) Registration(com.google.gerrit.acceptance.ExtensionRegistry.Registration) PublicKeyStore.keyToString(com.google.gerrit.gpg.PublicKeyStore.keyToString) AbstractDaemonTest(com.google.gerrit.acceptance.AbstractDaemonTest) Test(org.junit.Test) UseSsh(com.google.gerrit.acceptance.UseSsh)

Example 2 with UseSsh

use of com.google.gerrit.acceptance.UseSsh in project gerrit by GerritCodeReview.

the class AccountIT method userCannotAddSshKeyToOtherAccount.

@Test
@UseSsh
public void userCannotAddSshKeyToOtherAccount() throws Exception {
    String newKey = TestSshKeys.publicKey(SshSessionFactory.genSshKey(), admin.email());
    requestScopeOperations.setApiUser(user.id());
    assertThrows(AuthException.class, () -> gApi.accounts().id(admin.username()).addSshKey(newKey));
}
Also used : PublicKeyStore.keyToString(com.google.gerrit.gpg.PublicKeyStore.keyToString) AbstractDaemonTest(com.google.gerrit.acceptance.AbstractDaemonTest) Test(org.junit.Test) UseSsh(com.google.gerrit.acceptance.UseSsh)

Example 3 with UseSsh

use of com.google.gerrit.acceptance.UseSsh in project gerrit by GerritCodeReview.

the class AccountIT method adminCanAddOrRemoveSshKeyOnOtherAccount.

@Test
@UseSsh
public void adminCanAddOrRemoveSshKeyOnOtherAccount() throws Exception {
    AccountIndexedCounter accountIndexedCounter = new AccountIndexedCounter();
    try (Registration registration = extensionRegistry.newRegistration().add(accountIndexedCounter)) {
        // The test account should initially have exactly one ssh key
        List<SshKeyInfo> info = gApi.accounts().self().listSshKeys();
        assertThat(info).hasSize(1);
        assertSequenceNumbers(info);
        SshKeyInfo key = info.get(0);
        KeyPair keyPair = sshKeys.getKeyPair(admin);
        String initial = TestSshKeys.publicKey(keyPair, admin.email());
        assertThat(key.sshPublicKey).isEqualTo(initial);
        accountIndexedCounter.assertNoReindex();
        // Add a new key
        sender.clear();
        String newKey = TestSshKeys.publicKey(SshSessionFactory.genSshKey(), user.email());
        gApi.accounts().id(user.username()).addSshKey(newKey);
        info = gApi.accounts().id(user.username()).listSshKeys();
        assertThat(info).hasSize(2);
        assertSequenceNumbers(info);
        accountIndexedCounter.assertReindexOf(user);
        assertThat(sender.getMessages()).hasSize(1);
        Message message = sender.getMessages().get(0);
        assertThat(message.rcpt()).containsExactly(user.getNameEmail());
        assertThat(message.body()).contains("new SSH keys have been added");
        // Delete key
        sender.clear();
        gApi.accounts().id(user.username()).deleteSshKey(1);
        info = gApi.accounts().id(user.username()).listSshKeys();
        assertThat(info).hasSize(1);
        accountIndexedCounter.assertReindexOf(user);
        assertThat(sender.getMessages()).hasSize(1);
        message = sender.getMessages().get(0);
        assertThat(message.rcpt()).containsExactly(user.getNameEmail());
        assertThat(message.body()).contains("SSH keys have been deleted");
    }
}
Also used : AccountIndexedCounter(com.google.gerrit.acceptance.AccountIndexedCounter) KeyPair(java.security.KeyPair) Truth.assertWithMessage(com.google.common.truth.Truth.assertWithMessage) Message(com.google.gerrit.testing.FakeEmailSender.Message) SshKeyInfo(com.google.gerrit.extensions.common.SshKeyInfo) Registration(com.google.gerrit.acceptance.ExtensionRegistry.Registration) PublicKeyStore.keyToString(com.google.gerrit.gpg.PublicKeyStore.keyToString) AbstractDaemonTest(com.google.gerrit.acceptance.AbstractDaemonTest) Test(org.junit.Test) UseSsh(com.google.gerrit.acceptance.UseSsh)

Aggregations

AbstractDaemonTest (com.google.gerrit.acceptance.AbstractDaemonTest)3 UseSsh (com.google.gerrit.acceptance.UseSsh)3 PublicKeyStore.keyToString (com.google.gerrit.gpg.PublicKeyStore.keyToString)3 Test (org.junit.Test)3 AccountIndexedCounter (com.google.gerrit.acceptance.AccountIndexedCounter)2 Registration (com.google.gerrit.acceptance.ExtensionRegistry.Registration)2 SshKeyInfo (com.google.gerrit.extensions.common.SshKeyInfo)2 KeyPair (java.security.KeyPair)2 Truth.assertWithMessage (com.google.common.truth.Truth.assertWithMessage)1 Message (com.google.gerrit.testing.FakeEmailSender.Message)1