Skip to content

Commit 6c1b82a

Browse files
authored
Test the known hosts verifier log message (jenkinsci#1721)
* Test the known hosts verifier log message * Use same conditional in new test as in existing tests
1 parent d2ebfda commit 6c1b82a

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed

src/main/java/org/jenkinsci/plugins/gitclient/verifier/KnownHostsFileVerifier.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,6 @@ private void logHint(TaskListener listener) {
7272
'Manage Jenkins' -> 'Security' -> 'Git Host Key Verification Configuration' \
7373
and configure host key verification.\
7474
"""));
75-
LOGGER.log(
76-
Level.FINEST,
77-
"Known hosts file {0} not found, but verifying host keys with known hosts file",
78-
new Object[] {SshHostKeyVerificationStrategy.KNOWN_HOSTS_DEFAULT});
75+
LOGGER.finest("Verifying host keys with known hosts file, but known hosts file was not found");
7976
}
8077
}

src/test/java/org/jenkinsci/plugins/gitclient/verifier/KnownHostsFileVerifierTest.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.jenkinsci.plugins.gitclient.verifier;
22

33
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.hasItem;
45
import static org.hamcrest.Matchers.is;
56
import static org.jenkinsci.plugins.gitclient.verifier.KnownHostsTestUtil.nonGitHubHost;
67
import static org.jenkinsci.plugins.gitclient.verifier.KnownHostsTestUtil.runKnownHostsTests;
@@ -12,6 +13,12 @@
1213
import hudson.model.TaskListener;
1314
import java.io.File;
1415
import java.time.Duration;
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
import java.util.logging.Handler;
19+
import java.util.logging.Level;
20+
import java.util.logging.LogRecord;
21+
import java.util.logging.Logger;
1522
import org.awaitility.Awaitility;
1623
import org.junit.jupiter.api.BeforeEach;
1724
import org.junit.jupiter.api.Test;
@@ -39,6 +46,38 @@ void assignVerifiers() throws Exception {
3946
fakeKnownHosts = knownHostsTestUtil.createFakeKnownHosts(FILE_CONTENT);
4047
}
4148

49+
@Test
50+
void missingKnownHostsShouldLogWarning() throws Exception {
51+
assumeTrue(runKnownHostsTests());
52+
File folder = new File(testFolder, "folder");
53+
File missingKnownHosts = new File(folder, "non_existent_known_hosts");
54+
KnownHostsFileVerifier knownHostsFileVerifier = spy(new KnownHostsFileVerifier());
55+
when(knownHostsFileVerifier.getKnownHostsFile()).thenReturn(missingKnownHosts);
56+
57+
Logger logger = Logger.getLogger(KnownHostsFileVerifier.class.getName());
58+
LogHandler handler = new LogHandler();
59+
handler.setLevel(Level.ALL);
60+
logger.setUseParentHandlers(false);
61+
logger.addHandler(handler);
62+
logger.setLevel(Level.ALL);
63+
KnownHostsTestUtil.connectToHost(
64+
nonGitHubHost(),
65+
22,
66+
missingKnownHosts,
67+
knownHostsFileVerifier.forJGit(StreamBuildListener.fromStdout()),
68+
"ssh-ed25519",
69+
s -> {
70+
assertThat(s.isOpen(), is(true));
71+
Awaitility.await().atMost(Duration.ofSeconds(37)).until(() -> s.getServerKey() != null);
72+
assertThat(KnownHostsTestUtil.checkKeys(s), is(false));
73+
return true;
74+
})
75+
.close();
76+
assertThat(
77+
handler.getMessages(),
78+
hasItem("Verifying host keys with known hosts file, but known hosts file was not found"));
79+
}
80+
4281
@Test
4382
void connectWhenHostKeyNotInKnownHostsFileForOtherHostNameThenShouldFail() throws Exception {
4483
assumeTrue(runKnownHostsTests());
@@ -114,4 +153,26 @@ void testVerifyHostKeyOptionWithDefaultFile() throws Exception {
114153
assertThat(
115154
verifier.forCliGit(TaskListener.NULL).getVerifyHostKeyOption(null), is("-o StrictHostKeyChecking=yes"));
116155
}
156+
157+
private static class LogHandler extends Handler {
158+
159+
private List<String> messages = new ArrayList<>();
160+
161+
@Override
162+
public void publish(LogRecord lr) {
163+
messages.add(lr.getMessage());
164+
}
165+
166+
@Override
167+
public void flush() {}
168+
169+
@Override
170+
public void close() throws SecurityException {
171+
messages = new ArrayList<>();
172+
}
173+
174+
List<String> getMessages() {
175+
return messages;
176+
}
177+
}
117178
}

0 commit comments

Comments
 (0)