Class SshTestHarness

Direct Known Subclasses:
SshBasicTestBase

public abstract class SshTestHarness extends RepositoryTestCase
Root class for ssh tests. Sets up the ssh test server. A set of pre-computed keys for testing is provided in the bundle and can be used in test cases via copyTestResource(String, File). These test key files names have four components, separated by a single underscore: "id", the algorithm, the bits (if variable), and the password if the private key is encrypted. For instance "id_ecdsa_384_testpass" is an encrypted ECDSA-384 key. The passphrase to decrypt is "testpass". The key "id_ecdsa_384" is the same but unencrypted. All keys were generated and encrypted via ssh-keygen. Note that DSA and ec25519 have no "bits" component. Available keys are listed in SshTestBase.KEY_RESOURCES.
  • Field Details

    • TEST_USER

      protected static final String TEST_USER
      See Also:
    • sshDir

      protected File sshDir
    • privateKey1

      protected File privateKey1
    • privateKey2

      protected File privateKey2
    • publicKey1

      protected File publicKey1
    • publicKey2

      protected File publicKey2
    • server

      protected SshTestGitServer server
    • factory

      private SshSessionFactory factory
    • testPort

      protected int testPort
    • knownHosts

      protected File knownHosts
    • homeDir

      private File homeDir
  • Constructor Details

    • SshTestHarness

      public SshTestHarness()
  • Method Details

    • setUp

      public void setUp() throws Exception
      Description copied from class: RepositoryTestCase
      Setup test
      Overrides:
      setUp in class RepositoryTestCase
      Throws:
      Exception
    • createKeyPair

      private static File createKeyPair(KeyPair newKey, File privateKeyFile) throws Exception
      Throws:
      Exception
    • write

      private static void write(BufferedWriter out, byte[] bytes, int lineLength) throws IOException
      Throws:
      IOException
    • createKnownHostsFile

      protected static String createKnownHostsFile(File file, String host, int port, File publicKey) throws IOException
      Creates a new known_hosts file with one entry for the given host and port taken from the given public key file.
      Parameters:
      file - to write the known_hosts file to
      host - for the entry
      port - for the entry
      publicKey - to use
      Returns:
      the public-key part of the line
      Throws:
      IOException
    • hasHostKey

      protected boolean hasHostKey(String host, int port, String keyPart, List<String> lines)
      Checks whether there is a line for the given host and port that also matches the given key part in the list of lines.
      Parameters:
      host - to look for
      port - to look for
      keyPart - to look for
      lines - to look in
      Returns:
      true if found, false otherwise
    • shutdownServer

      public void shutdownServer() throws Exception
      Throws:
      Exception
    • createSessionFactory

      protected abstract SshSessionFactory createSessionFactory()
    • getSessionFactory

      protected SshSessionFactory getSessionFactory()
    • installConfig

      protected abstract void installConfig(String... config)
    • copyTestResource

      protected void copyTestResource(String resourceName, File to) throws IOException
      Copies a test data file contained in the test bundle to the given file. Equivalent to copyTestResource(Class, String, File) with SshTestHarness.class as first parameter.
      Parameters:
      resourceName - of the test resource to copy
      to - file to copy the resource to
      Throws:
      IOException - if the resource cannot be copied
    • copyTestResource

      protected void copyTestResource(Class<?> loader, String resourceName, File to) throws IOException
      Copies a test data file contained in the test bundle to the given file, using Class.getResourceAsStream(String) to get the test resource.
      Parameters:
      loader - Class to use to load the resource
      resourceName - of the test resource to copy
      to - file to copy the resource to
      Throws:
      IOException - if the resource cannot be copied
    • cloneWith

      protected File cloneWith(String uri, File to, CredentialsProvider provider, String... config) throws Exception
      Throws:
      Exception
    • pushTo

      protected void pushTo(File localClone) throws Exception
      Throws:
      Exception
    • pushTo

      protected void pushTo(CredentialsProvider provider, File localClone) throws Exception
      Throws:
      Exception