This is an automated email from the ASF dual-hosted git repository.

twolf pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-sshd.git


The following commit(s) were added to refs/heads/master by this push:
     new 5c80258b5 Add a test for GH-351
5c80258b5 is described below

commit 5c80258b55581a76aa6b5b6acdc7cd81da4d2f41
Author: Thomas Wolf <tw...@apache.org>
AuthorDate: Sun Apr 9 18:41:27 2023 +0200

    Add a test for GH-351
    
    Just a somewhat redundant regression test to make sure GH-351 is fixed
    by commit c11bfcca for GH-281.
    
    Bug: https://github.com/apache/mina-sshd/issues/351
---
 .../client/config/hosts/HostConfigEntryTest.java   | 32 ++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git 
a/sshd-common/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
 
b/sshd-common/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
index 1769a2ac4..4ee7e2c47 100644
--- 
a/sshd-common/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
+++ 
b/sshd-common/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
@@ -20,6 +20,7 @@
 package org.apache.sshd.client.config.hosts;
 
 import java.io.IOException;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -165,6 +166,37 @@ public class HostConfigEntryTest extends JUnitTestSupport {
         assertEquals("xFile,dFile", 
resolved.getProperty(HostConfigEntry.IDENTITY_FILE_CONFIG_PROP));
     }
 
+    @Test // See GH-351
+    public void testProxyJump() throws Exception {
+        HostConfigEntry bastion = new HostConfigEntry();
+        bastion.setHost("bastion");
+        bastion.setHostName("1.2.3.4");
+        bastion.setUsername("username");
+        bastion.setIdentities(Collections.singleton("yFile"));
+        HostConfigEntry server = new HostConfigEntry();
+        server.setHost("server*");
+        server.setProxyJump("bastion");
+        HostConfigEntryResolver resolver = 
HostConfigEntry.toHostConfigEntryResolver(GenericUtils.asList(bastion, server));
+        HostConfigEntry resolved = resolver.resolveEffectiveHost("server1", 0, 
null, "someone", null, null);
+        expect("server1", 22, "someone", resolved);
+        Collection<String> identities = resolved.getIdentities();
+        assertTrue("Unexpected configured identities " + identities, 
identities == null || identities.isEmpty());
+        String identityProp = 
resolved.getProperty(HostConfigEntry.IDENTITY_FILE_CONFIG_PROP);
+        assertNull("Unexpected IdentityFile property", identityProp);
+        // Same handling as in SshClient.parseProxyJumps()
+        String proxy = 
resolved.getProperty(HostConfigEntry.PROXY_JUMP_CONFIG_PROP);
+        assertEquals("bastion", proxy);
+        URI uri = URI.create("ssh://" + proxy);
+        resolved = resolver.resolveEffectiveHost(uri.getHost(), uri.getPort(), 
null, uri.getUserInfo(), null, null);
+        expect("1.2.3.4", 22, "username", resolved);
+        identities = resolved.getIdentities();
+        assertNotNull("Should have identities", identities);
+        assertEquals("[yFile]", identities.toString());
+        identityProp = 
resolved.getProperty(HostConfigEntry.IDENTITY_FILE_CONFIG_PROP);
+        assertNotNull("Should have IdentityFile property", identityProp);
+        assertEquals("yFile", identityProp);
+    }
+
     @Test
     public void testNegatingPatternOverridesAll() {
         String testHost = "37.77.34.7";

Reply via email to