http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolverTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolverTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolverTest.java deleted file mode 100644 index 78994cc..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolverTest.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.client.config.hosts; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.sshd.common.util.io.IoUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.NoIoTestCase; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@Category({ NoIoTestCase.class }) -public class ConfigFileHostEntryResolverTest extends BaseTestSupport { - public ConfigFileHostEntryResolverTest() { - super(); - } - - @Test - public void testConfigFileReload() throws IOException { - Path dir = getTempTargetRelativeFile(getClass().getSimpleName()); - AtomicInteger reloadCount = new AtomicInteger(); - ConfigFileHostEntryResolver resolver = new ConfigFileHostEntryResolver(assertHierarchyTargetFolderExists(dir).resolve(getCurrentTestName() + ".config.txt")) { - @Override - protected List<HostConfigEntry> reloadHostConfigEntries(Path path, String host, int port, String username) - throws IOException { - reloadCount.incrementAndGet(); - return super.reloadHostConfigEntries(path, host, port, username); - } - }; - Path path = resolver.getPath(); - - HostConfigEntry expected = new HostConfigEntry(getCurrentTestName(), getCurrentTestName(), 7365, getCurrentTestName()); - testConfigFileReload("Non-existing", path, reloadCount, null, resolver, expected, null); - testConfigFileReload("Empty", path, reloadCount, Collections.emptyList(), resolver, expected, null); - testConfigFileReload("Global", path, reloadCount, - Collections.singletonList(new HostConfigEntry(HostPatternsHolder.ALL_HOSTS_PATTERN, expected.getHost(), expected.getPort(), expected.getUsername())), - resolver, expected, expected); - testConfigFileReload("Wildcard", path, reloadCount, - Arrays.asList( - new HostConfigEntry( - HostPatternsHolder.ALL_HOSTS_PATTERN, - getClass().getSimpleName(), - 1234, - getClass().getSimpleName()), - new HostConfigEntry( - expected.getHost() + Character.toString(HostPatternsHolder.WILDCARD_PATTERN), - expected.getHost(), - expected.getPort(), - expected.getUsername())), - resolver, expected, expected); - testConfigFileReload("Specific", path, reloadCount, - Arrays.asList( - new HostConfigEntry( - HostPatternsHolder.ALL_HOSTS_PATTERN, - getClass().getSimpleName(), - 1234, - getClass().getSimpleName()), - new HostConfigEntry( - getClass().getSimpleName() + Character.toString(HostPatternsHolder.WILDCARD_PATTERN), - getClass().getSimpleName(), - 1234, - getClass().getSimpleName()), - expected), - resolver, expected, expected); - } - - private static void testConfigFileReload( - String phase, Path path, AtomicInteger reloadCount, - Collection<? extends HostConfigEntry> entries, - HostConfigEntryResolver resolver, - HostConfigEntry query, - HostConfigEntry expected) - throws IOException { - if (entries == null) { - if (Files.exists(path)) { - Files.delete(path); - } - } else { - HostConfigEntry.writeHostConfigEntries(path, entries, IoUtils.EMPTY_OPEN_OPTIONS); - } - - reloadCount.set(0); - - for (int index = 1; index < Byte.SIZE; index++) { - HostConfigEntry actual = - resolver.resolveEffectiveHost(query.getHostName(), query.getPort(), query.getUsername()); - - if (entries == null) { - assertEquals(phase + "[" + index + "]: mismatched reload count", 0, reloadCount.get()); - } else { - assertEquals(phase + "[" + index + "]: mismatched reload count", 1, reloadCount.get()); - } - - if (expected == null) { - assertNull(phase + "[" + index + "]: Unexpected success for " + query, actual); - } else { - assertNotNull(phase + "[" + index + "]: No result for " + query, actual); - assertNotSame(phase + "[" + index + "]: No cloned result for " + query, expected, actual); - assertEquals(phase + "[" + index + "]: Mismatched host for " + query, - expected.getHostName(), actual.getHostName()); - assertEquals(phase + "[" + index + "]: Mismatched port for " + query, - expected.getPort(), actual.getPort()); - assertEquals(phase + "[" + index + "]: Mismatched user for " + query, - expected.getUsername(), actual.getUsername()); - } - } - } -}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java index ab3c591..0679fa3 100644 --- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java @@ -48,7 +48,7 @@ import org.apache.sshd.common.util.net.SshdSocketAddress; import org.apache.sshd.server.SshServer; import org.apache.sshd.server.auth.password.RejectAllPasswordAuthenticator; import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.Utils; +import org.apache.sshd.util.test.CommonTestSupportUtils; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -132,7 +132,7 @@ public class HostConfigEntryResolverTest extends BaseTestSupport { @Test public void testPreloadedIdentities() throws Exception { - KeyPair identity = Utils.getFirstKeyPair(sshd); + KeyPair identity = CommonTestSupportUtils.getFirstKeyPair(sshd); String user = getCurrentTestName(); // make sure authentication is achieved only via the identity public key sshd.setPublickeyAuthenticator((username, key, session) -> { @@ -182,10 +182,9 @@ public class HostConfigEntryResolverTest extends BaseTestSupport { public void testUseIdentitiesOnly() throws Exception { Path clientIdFile = assertHierarchyTargetFolderExists(getTempTargetRelativeFile(getClass().getSimpleName())); KeyPairProvider clientIdProvider = - Utils.createTestHostKeyProvider(clientIdFile.resolve(getCurrentTestName() + ".pem")); - - KeyPair specificIdentity = Utils.getFirstKeyPair(sshd); - KeyPair defaultIdentity = Utils.getFirstKeyPair(clientIdProvider); + CommonTestSupportUtils.createTestHostKeyProvider(clientIdFile.resolve(getCurrentTestName() + ".pem")); + KeyPair specificIdentity = CommonTestSupportUtils.getFirstKeyPair(sshd); + KeyPair defaultIdentity = CommonTestSupportUtils.getFirstKeyPair(clientIdProvider); ValidateUtils.checkTrue(!KeyUtils.compareKeyPairs(specificIdentity, defaultIdentity), "client identity not different then entry one"); client.setKeyPairProvider(clientIdProvider); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java deleted file mode 100644 index c306800..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java +++ /dev/null @@ -1,325 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.client.config.hosts; - -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.regex.Pattern; - -import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.NoIoTestCase; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@Category({ NoIoTestCase.class }) -public class HostConfigEntryTest extends BaseTestSupport { - public HostConfigEntryTest() { - super(); - } - - @Test - public void testNegatingPatternOverridesAll() { - String testHost = "37.77.34.7"; - String[] elements = GenericUtils.split(testHost, '.'); - StringBuilder sb = new StringBuilder(testHost.length() + Byte.SIZE); - List<HostPatternValue> patterns = new ArrayList<>(elements.length + 1); - // all wildcard patterns are not negated - only the actual host - patterns.add(HostPatternsHolder.toPattern(Character.toString(HostPatternsHolder.NEGATION_CHAR_PATTERN) + testHost)); - - for (int i = 0; i < elements.length; i++) { - sb.setLength(0); - - for (int j = 0; j < elements.length; j++) { - if (j > 0) { - sb.append('.'); - } - if (i == j) { - sb.append(HostPatternsHolder.WILDCARD_PATTERN); - } else { - sb.append(elements[j]); - } - } - - patterns.add(HostPatternsHolder.toPattern(sb)); - } - - for (int index = 0; index < patterns.size(); index++) { - assertFalse("Unexpected match for " + patterns, HostPatternsHolder.isHostMatch(testHost, 0, patterns)); - Collections.shuffle(patterns); - } - } - - @Test - public void testHostWildcardPatternMatching() { - String pkgName = getClass().getPackage().getName(); - String[] elements = GenericUtils.split(pkgName, '.'); - StringBuilder sb = new StringBuilder(pkgName.length() + Long.SIZE + 1).append(HostPatternsHolder.WILDCARD_PATTERN); - for (int index = elements.length - 1; index >= 0; index--) { - sb.append('.').append(elements[index]); - } - - String value = sb.toString(); - HostPatternValue pp = HostPatternsHolder.toPattern(value); - Pattern pattern = pp.getPattern(); - String domain = value.substring(1); // chomp the wildcard prefix - for (String host : new String[] { - getClass().getSimpleName(), - getCurrentTestName(), - getClass().getSimpleName() + "-" + getCurrentTestName(), - getClass().getSimpleName() + "." + getCurrentTestName(), - }) { - sb.setLength(0); // start from scratch - sb.append(host).append(domain); - - testCaseInsensitivePatternMatching(sb.toString(), pattern, true); - } - } - - @Test - public void testIPAddressWildcardPatternMatching() { - StringBuilder sb = new StringBuilder().append("10.0.0."); - int sbLen = sb.length(); - - Pattern pattern = HostPatternsHolder.toPattern(sb.append(HostPatternsHolder.WILDCARD_PATTERN)).getPattern(); - for (int v = 0; v <= 255; v++) { - sb.setLength(sbLen); // start from scratch - sb.append(v); - - String address = sb.toString(); - assertTrue("No match for " + address, HostPatternsHolder.isHostMatch(address, pattern)); - } - } - - @Test - public void testHostSingleCharPatternMatching() { - String value = getCurrentTestName(); - StringBuilder sb = new StringBuilder(value); - for (boolean restoreOriginal : new boolean[] {true, false}) { - for (int index = 0; index < value.length(); index++) { - sb.setCharAt(index, HostPatternsHolder.SINGLE_CHAR_PATTERN); - testCaseInsensitivePatternMatching(value, HostPatternsHolder.toPattern(sb.toString()).getPattern(), true); - if (restoreOriginal) { - sb.setCharAt(index, value.charAt(index)); - } - } - } - } - - @Test - public void testIPAddressSingleCharPatternMatching() { - StringBuilder sb = new StringBuilder().append("10.0.0."); - int sbLen = sb.length(); - - for (int v = 0; v <= 255; v++) { - sb.setLength(sbLen); // start from scratch - sb.append(v); - - String address = sb.toString(); - // replace the added digits with single char pattern - for (int index = sbLen; index < sb.length(); index++) { - sb.setCharAt(index, HostPatternsHolder.SINGLE_CHAR_PATTERN); - } - - String pattern = sb.toString(); - HostPatternValue pp = HostPatternsHolder.toPattern(pattern); - assertTrue("No match for " + address + " on pattern=" + pattern, HostPatternsHolder.isHostMatch(address, 0, Collections.singletonList(pp))); - } - } - - @Test - public void testIsValidPatternChar() { - for (char ch = '\0'; ch <= ' '; ch++) { - assertFalse("Unexpected valid character (0x" + Integer.toHexString(ch & 0xFF) + ")", HostPatternsHolder.isValidPatternChar(ch)); - } - - for (char ch = 'a'; ch <= 'z'; ch++) { - assertTrue("Valid character not recognized: " + Character.toString(ch), HostPatternsHolder.isValidPatternChar(ch)); - } - - for (char ch = 'A'; ch <= 'Z'; ch++) { - assertTrue("Valid character not recognized: " + Character.toString(ch), HostPatternsHolder.isValidPatternChar(ch)); - } - - for (char ch = '0'; ch <= '9'; ch++) { - assertTrue("Valid character not recognized: " + Character.toString(ch), HostPatternsHolder.isValidPatternChar(ch)); - } - - for (char ch : new char[] {'-', '_', '.', HostPatternsHolder.SINGLE_CHAR_PATTERN, HostPatternsHolder.WILDCARD_PATTERN}) { - assertTrue("Valid character not recognized: " + Character.toString(ch), HostPatternsHolder.isValidPatternChar(ch)); - } - - for (char ch : new char[] { - '(', ')', '{', '}', '[', ']', '@', - '#', '$', '^', '&', '%', '~', '<', '>', - ',', '/', '\\', '\'', '"', ':', ';' - }) { - assertFalse("Unexpected valid character: " + Character.toString(ch), HostPatternsHolder.isValidPatternChar(ch)); - } - - for (char ch = 0x7E; ch <= 0xFF; ch++) { - assertFalse("Unexpected valid character (0x" + Integer.toHexString(ch & 0xFF) + ")", HostPatternsHolder.isValidPatternChar(ch)); - } - } - - @Test - public void testResolvePort() { - final int originalPort = Short.MAX_VALUE; - final int preferredPort = 7365; - assertEquals("Mismatched entry port preference", - preferredPort, HostConfigEntry.resolvePort(originalPort, preferredPort)); - - for (int entryPort : new int[] {-1, 0}) { - assertEquals("Non-preferred original port for entry port=" + entryPort, - originalPort, HostConfigEntry.resolvePort(originalPort, entryPort)); - } - } - - @Test - public void testResolveUsername() { - final String originalUser = getCurrentTestName(); - final String preferredUser = getClass().getSimpleName(); - assertSame("Mismatched entry user preference", - preferredUser, HostConfigEntry.resolveUsername(originalUser, preferredUser)); - - for (String entryUser : new String[] {null, ""}) { - assertSame("Non-preferred original user for entry user='" + entryUser + "'", - originalUser, HostConfigEntry.resolveUsername(originalUser, entryUser)); - } - } - - @Test - public void testReadSimpleHostsConfigEntries() throws IOException { - validateHostConfigEntries(readHostConfigEntries()); - } - - @Test - public void testReadGlobalHostsConfigEntries() throws IOException { - List<HostConfigEntry> entries = validateHostConfigEntries(readHostConfigEntries()); - assertTrue("Not enough entries read", GenericUtils.size(entries) > 1); - - // global entry MUST be 1st one - HostConfigEntry globalEntry = entries.get(0); - assertEquals("Mismatched global entry pattern", HostPatternsHolder.ALL_HOSTS_PATTERN, globalEntry.getHost()); - - for (int index = 1; index < entries.size(); index++) { - HostConfigEntry entry = entries.get(index); - assertFalse("No target host for " + entry, GenericUtils.isEmpty(entry.getHostName())); - assertTrue("No target port for " + entry, entry.getPort() > 0); - assertFalse("No username for " + entry, GenericUtils.isEmpty(entry.getUsername())); - assertFalse("No identities for " + entry, GenericUtils.isEmpty(entry.getIdentities())); - assertFalse("No properties for " + entry, GenericUtils.isEmpty(entry.getProperties())); - } - } - - @Test - public void testReadMultipleHostPatterns() throws IOException { - List<HostConfigEntry> entries = validateHostConfigEntries(readHostConfigEntries()); - assertEquals("Mismatched number of entries", 1, GenericUtils.size(entries)); - assertEquals("Mismatched number of patterns", 3, GenericUtils.size(entries.get(0).getPatterns())); - } - - @Test - public void testResolveIdentityFilePath() throws Exception { - final String hostValue = getClass().getSimpleName(); - final int portValue = 7365; - final String userValue = getCurrentTestName(); - - Exception err = null; - for (String pattern : new String[] { - "~/.ssh/%h.key", - "%d/.ssh/%h.key", - "/home/%u/.ssh/id_rsa_%p", - "/home/%u/.ssh/id_%r_rsa", - "/home/%u/.ssh/%h/%l.key" - }) { - try { - String result = HostConfigEntry.resolveIdentityFilePath(pattern, hostValue, portValue, userValue); - System.out.append('\t').append(pattern).append(" => ").println(result); - } catch (Exception e) { - System.err.append("Failed (").append(e.getClass().getSimpleName()) - .append(") to process pattern=").append(pattern) - .append(": ").println(e.getMessage()); - err = e; - } - } - - if (err != null) { - throw err; - } - } - - @Test - public void testFindBestMatch() { - final String hostValue = getCurrentTestName(); - HostConfigEntry expected = new HostConfigEntry(hostValue, hostValue, 7365, hostValue); - List<HostConfigEntry> matches = new ArrayList<>(); - matches.add(new HostConfigEntry(HostPatternsHolder.ALL_HOSTS_PATTERN, - getClass().getSimpleName(), Short.MAX_VALUE, getClass().getSimpleName())); - matches.add(new HostConfigEntry(hostValue + Character.toString(HostPatternsHolder.WILDCARD_PATTERN), - getClass().getSimpleName(), Byte.MAX_VALUE, getClass().getSimpleName())); - matches.add(expected); - - for (int index = 0; index < matches.size(); index++) { - HostConfigEntry actual = HostConfigEntry.findBestMatch(matches); - assertSame("Mismatched best match for " + matches, expected, actual); - Collections.shuffle(matches); - } - } - - private static <C extends Collection<HostConfigEntry>> C validateHostConfigEntries(C entries) { - assertFalse("No entries", GenericUtils.isEmpty(entries)); - - for (HostConfigEntry entry : entries) { - assertFalse("No pattern for " + entry, GenericUtils.isEmpty(entry.getHost())); - assertFalse("No extra properties for " + entry, GenericUtils.isEmpty(entry.getProperties())); - } - - return entries; - } - - private List<HostConfigEntry> readHostConfigEntries() throws IOException { - return readHostConfigEntries(getCurrentTestName() + ".config.txt"); - } - - private List<HostConfigEntry> readHostConfigEntries(String resourceName) throws IOException { - URL url = getClass().getResource(resourceName); - assertNotNull("Missing resource " + resourceName, url); - return HostConfigEntry.readHostConfigEntries(url); - } - - private static void testCaseInsensitivePatternMatching(String value, Pattern pattern, boolean expected) { - for (int index = 0; index < value.length(); index++) { - boolean actual = HostPatternsHolder.isHostMatch(value, pattern); - assertEquals("Mismatched match result for " + value + " on pattern=" + pattern.pattern(), expected, actual); - value = shuffleCase(value); - } - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java deleted file mode 100644 index efbf885..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.client.config.hosts; - -import java.util.Arrays; -import java.util.Collection; - -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory; -import org.apache.sshd.util.test.NoIoTestCase; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.MethodSorters; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; -import org.junit.runners.Parameterized.UseParametersRunnerFactory; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests -@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class) -@Category({ NoIoTestCase.class }) -public class KnownHostHashValueTest extends BaseTestSupport { - private final String hostName; - private final String hashValue; - private final KnownHostHashValue hash; - - public KnownHostHashValueTest(String hostName, String hashValue) { - this.hostName = hostName; - this.hashValue = hashValue; - this.hash = KnownHostHashValue.parse(hashValue); - } - - @Parameters(name = "host={0}, hash={1}") - public static Collection<Object[]> parameters() { - return Arrays.<Object[]>asList( - (Object[]) new String[]{"192.168.1.61", "|1|F1E1KeoE/eEWhi10WpGv4OdiO6Y=|3988QV0VE8wmZL7suNrYQLITLCg="}); - } - - @Test - public void testDecodeEncode() { - assertSame("Mismatched digester", KnownHostHashValue.DEFAULT_DIGEST, hash.getDigester()); - assertEquals("Mismatched encoded form", hashValue, hash.toString()); - } - - @Test - public void testHostMatch() { - assertTrue("Specified host does not match", hash.isHostMatch(hostName)); - assertFalse("Unexpected host match", hash.isHostMatch(getCurrentTestName())); - } - - @Test - public void testCalculateHashValue() throws Exception { - byte[] expected = hash.getDigestValue(); - byte[] actual = KnownHostHashValue.calculateHashValue(hostName, hash.getDigester(), hash.getSaltValue()); - assertArrayEquals("Mismatched hash value", expected, actual); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java deleted file mode 100644 index af720b8..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.client.config.keys; - -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.OpenOption; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.security.GeneralSecurityException; -import java.security.KeyPair; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.EnumMap; -import java.util.Map; -import java.util.Objects; - -import org.apache.sshd.common.config.keys.BuiltinIdentities; -import org.apache.sshd.common.config.keys.FilePasswordProvider; -import org.apache.sshd.common.config.keys.KeyUtils; -import org.apache.sshd.common.keyprovider.KeyIdentityProvider; -import org.apache.sshd.common.keyprovider.KeyPairProvider; -import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.common.util.ValidateUtils; -import org.apache.sshd.common.util.io.IoUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.NoIoTestCase; -import org.apache.sshd.util.test.Utils; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@Category({ NoIoTestCase.class }) -public class BuiltinClientIdentitiesWatcherTest extends BaseTestSupport { - public BuiltinClientIdentitiesWatcherTest() { - super(); - } - - @Test - public void testMultipleFilesWatch() throws Exception { - KeyPair identity = Utils.getFirstKeyPair(createTestHostKeyProvider()); - String keyType = ValidateUtils.checkNotNullAndNotEmpty(KeyUtils.getKeyType(identity), "Cannot determine identity key type"); - - Path dir = assertHierarchyTargetFolderExists(getTempTargetRelativeFile(getClass().getSimpleName())); - Map<BuiltinIdentities, Path> locationsMap = new EnumMap<>(BuiltinIdentities.class); - Map<BuiltinIdentities, KeyPair> idsMap = new EnumMap<>(BuiltinIdentities.class); - for (BuiltinIdentities id : BuiltinIdentities.VALUES) { - Path idFile = dir.resolve(ClientIdentity.getIdentityFileName(id)); - Files.deleteIfExists(idFile); - assertNull("Multiple file mappings for " + id, locationsMap.put(id, idFile)); - assertNull("Multiple identity mappings for " + id, idsMap.put(id, KeyUtils.cloneKeyPair(keyType, identity))); - } - - ClientIdentityLoader loader = new ClientIdentityLoader() { - @Override - public KeyPair loadClientIdentity(String location, FilePasswordProvider provider) throws IOException, GeneralSecurityException { - BuiltinIdentities id = findIdentity(location); - assertNotNull("Invalid location: " + location, id); - return idsMap.get(id); - } - - @Override - public boolean isValidLocation(String location) throws IOException { - return findIdentity(location) != null; - } - - private BuiltinIdentities findIdentity(String location) { - if (GenericUtils.isEmpty(location)) { - return null; - } - - for (Map.Entry<BuiltinIdentities, Path> le : locationsMap.entrySet()) { - Path path = le.getValue(); - if (String.CASE_INSENSITIVE_ORDER.compare(location, path.toString()) == 0) { - return le.getKey(); - } - } - - return null; - } - }; - - Map<BuiltinIdentities, KeyPair> existing = new EnumMap<>(BuiltinIdentities.class); - KeyPairProvider watcher = new BuiltinClientIdentitiesWatcher(dir, false, loader, FilePasswordProvider.EMPTY, false); - testMultipleFilesWatch("No files", watcher, existing.values()); - - for (BuiltinIdentities id : BuiltinIdentities.VALUES) { - String phase = id + " + " + Objects.toString(existing.keySet()); - touchIdentityFile(locationsMap.get(id)); - existing.put(id, idsMap.get(id)); - - for (int index = 0; index < Byte.SIZE; index++) { - testMultipleFilesWatch(phase + "[" + index + "]", watcher, existing.values()); - } - } - - testMultipleFilesWatch("All files", watcher, existing.values()); - - for (BuiltinIdentities id : BuiltinIdentities.VALUES) { - existing.remove(id); - Files.deleteIfExists(locationsMap.get(id)); - String phase = Objects.toString(existing.keySet()) + " - " + id; - - for (int index = 0; index < Byte.SIZE; index++) { - testMultipleFilesWatch(phase + "[" + index + "]", watcher, existing.values()); - } - } - } - - private static void touchIdentityFile(Path idFile) throws IOException { - OpenOption[] options = IoUtils.EMPTY_OPEN_OPTIONS; - if (Files.exists(idFile, IoUtils.EMPTY_LINK_OPTIONS)) { - options = new OpenOption[]{StandardOpenOption.WRITE, StandardOpenOption.APPEND}; - } - - try (OutputStream out = Files.newOutputStream(idFile, options)) { - out.write(new Date(System.currentTimeMillis()).toString().getBytes(StandardCharsets.UTF_8)); - out.write('\n'); - } - } - - private static void testMultipleFilesWatch(String phase, KeyIdentityProvider watcher, Collection<? extends KeyPair> expected) { - Iterable<KeyPair> keys = watcher.loadKeys(); - Collection<KeyPair> actual = new ArrayList<>(); - for (KeyPair kp : keys) { - actual.add(kp); - } - assertEquals(phase + ": mismatched sizes", GenericUtils.size(expected), GenericUtils.size(actual)); - - if (!GenericUtils.isEmpty(expected)) { - for (KeyPair kp : expected) { - assertTrue(phase + ": missing key", actual.contains(kp)); - } - } - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java deleted file mode 100644 index 60ded0a..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.client.config.keys; - -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.OpenOption; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.security.GeneralSecurityException; -import java.security.KeyPair; -import java.util.Date; -import java.util.Objects; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.sshd.common.config.keys.FilePasswordProvider; -import org.apache.sshd.common.util.io.IoUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.NoIoTestCase; -import org.apache.sshd.util.test.Utils; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@Category({ NoIoTestCase.class }) -public class ClientIdentityFileWatcherTest extends BaseTestSupport { - public ClientIdentityFileWatcherTest() { - super(); - } - - @Test - public void testIdentityReload() throws Exception { - Path dir = assertHierarchyTargetFolderExists(getTempTargetRelativeFile(getClass().getSimpleName())); - Path idFile = dir.resolve(getCurrentTestName() + ".pem"); - KeyPair identity = Utils.getFirstKeyPair(createTestHostKeyProvider()); - ClientIdentityLoader loader = new ClientIdentityLoader() { - @Override - public KeyPair loadClientIdentity(String location, FilePasswordProvider provider) throws IOException, GeneralSecurityException { - assertTrue("Invalid location: " + location, isValidLocation(location)); - return identity; - } - - @Override - public boolean isValidLocation(String location) throws IOException { - return Objects.equals(location, toString()); - } - - @Override - public String toString() { - return Objects.toString(idFile); - } - }; - - AtomicInteger reloadCount = new AtomicInteger(0); - ClientIdentityProvider idProvider = new ClientIdentityFileWatcher(idFile, loader, FilePasswordProvider.EMPTY, false) { - @Override - protected KeyPair reloadClientIdentity(Path path) throws IOException, GeneralSecurityException { - assertEquals("Mismatched client identity path", idFile, path); - reloadCount.incrementAndGet(); - return super.reloadClientIdentity(path); - } - }; - Files.deleteIfExists(idFile); - - testIdentityReload("Non-existing", reloadCount, idProvider, null, 0); - - touchIdentityFile(idFile); - for (int index = 1; index < Byte.SIZE; index++) { - testIdentityReload("Created iteration " + 1, reloadCount, idProvider, identity, 1); - } - - touchIdentityFile(idFile); - for (int index = 1; index < Byte.SIZE; index++) { - testIdentityReload("Modified iteration " + 1, reloadCount, idProvider, identity, 2); - } - } - - private static void touchIdentityFile(Path idFile) throws IOException { - OpenOption[] options = IoUtils.EMPTY_OPEN_OPTIONS; - if (Files.exists(idFile, IoUtils.EMPTY_LINK_OPTIONS)) { - options = new OpenOption[]{StandardOpenOption.WRITE, StandardOpenOption.APPEND}; - } - - try (OutputStream out = Files.newOutputStream(idFile, options)) { - out.write(new Date(System.currentTimeMillis()).toString().getBytes(StandardCharsets.UTF_8)); - out.write('\n'); - } - } - - private static void testIdentityReload( - String phase, Number reloadCount, ClientIdentityProvider provider, KeyPair expectedIdentity, int expectedCount) - throws Exception { - KeyPair actualIdentity = provider.getClientIdentity(); - assertSame(phase + ": mismatched identity", expectedIdentity, actualIdentity); - assertEquals(phase + ": mismatched re-load count", expectedCount, reloadCount.intValue()); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java deleted file mode 100644 index 6861299..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.client.config.keys; - -import java.nio.file.Files; -import java.nio.file.LinkOption; -import java.nio.file.Path; -import java.security.KeyPair; -import java.util.ArrayList; -import java.util.Collection; -import java.util.EnumSet; -import java.util.Map; - -import org.apache.sshd.common.config.keys.BuiltinIdentities; -import org.apache.sshd.common.config.keys.IdentityUtils; -import org.apache.sshd.common.keyprovider.KeyIdentityProvider; -import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.common.util.io.IoUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.NoIoTestCase; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@Category({ NoIoTestCase.class }) -public class ClientIdentityTest extends BaseTestSupport { - public ClientIdentityTest() { - super(); - } - - @Test - public void testLoadClientIdentities() throws Exception { - Path resFolder = getTestResourcesFolder(); - LinkOption[] options = IoUtils.getLinkOptions(true); - Collection<BuiltinIdentities> expected = EnumSet.noneOf(BuiltinIdentities.class); - for (BuiltinIdentities type : BuiltinIdentities.VALUES) { - String fileName = ClientIdentity.getIdentityFileName(type); - Path file = resFolder.resolve(fileName); - if (!Files.exists(file, options)) { - System.out.println("Skip non-existing identity file " + file); - continue; - } - - if (!type.isSupported()) { - System.out.println("Skip unsupported identity file " + file); - continue; - } - - expected.add(type); - } - - Map<String, KeyPair> ids = ClientIdentity.loadDefaultIdentities( - resFolder, - false, // don't be strict - null, // none of the files is password protected - options); - assertEquals("Mismatched loaded ids count", GenericUtils.size(expected), GenericUtils.size(ids)); - - Collection<KeyPair> pairs = new ArrayList<>(ids.size()); - for (BuiltinIdentities type : BuiltinIdentities.VALUES) { - if (expected.contains(type)) { - KeyPair kp = ids.get(type.getName()); - assertNotNull("No key pair loaded for " + type, kp); - pairs.add(kp); - } - } - - KeyIdentityProvider provider = IdentityUtils.createKeyPairProvider(ids, true /* supported only */); - assertNotNull("No provider generated", provider); - - Iterable<KeyPair> keys = provider.loadKeys(); - for (KeyPair kp : keys) { - assertTrue("Unexpected loaded key: " + kp, pairs.remove(kp)); - } - - assertEquals("Not all pairs listed", 0, pairs.size()); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java b/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java index 6ad17b2..678521f 100644 --- a/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java @@ -41,9 +41,9 @@ import org.apache.sshd.common.kex.KeyExchange; import org.apache.sshd.common.util.security.SecurityUtils; import org.apache.sshd.server.SshServer; import org.apache.sshd.util.test.BaseTestSupport; +import org.apache.sshd.util.test.CoreTestSupportUtils; import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory; import org.apache.sshd.util.test.TeeOutputStream; -import org.apache.sshd.util.test.Utils; import org.junit.AfterClass; import org.junit.Assume; import org.junit.BeforeClass; @@ -81,11 +81,11 @@ public class KexTest extends BaseTestSupport { @BeforeClass public static void setupClientAndServer() throws Exception { - sshd = Utils.setupTestServer(KexTest.class); + sshd = CoreTestSupportUtils.setupTestServer(KexTest.class); sshd.start(); port = sshd.getPort(); - client = Utils.setupTestClient(KexTest.class); + client = CoreTestSupportUtils.setupTestClient(KexTest.class); client.start(); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java b/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java index c556553..9151af2 100644 --- a/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java @@ -51,8 +51,8 @@ import org.apache.sshd.common.util.GenericUtils; import org.apache.sshd.common.util.ValidateUtils; import org.apache.sshd.common.util.net.SshdSocketAddress; import org.apache.sshd.util.test.BaseTestSupport; +import org.apache.sshd.util.test.CommonTestSupportUtils; import org.apache.sshd.util.test.NoIoTestCase; -import org.apache.sshd.util.test.Utils; import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; @@ -230,7 +230,7 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport { @Test public void testRejectModifiedServerKey() throws Exception { - KeyPair kp = Utils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); + KeyPair kp = CommonTestSupportUtils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); final PublicKey modifiedKey = kp.getPublic(); final AtomicInteger acceptCount = new AtomicInteger(0); ServerKeyVerifier verifier = new KnownHostsServerKeyVerifier(AcceptAllServerKeyVerifier.INSTANCE, createKnownHostsCopy()) { @@ -258,7 +258,7 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport { @Test public void testAcceptModifiedServerKeyUpdatesFile() throws Exception { - KeyPair kp = Utils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); + KeyPair kp = CommonTestSupportUtils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); final PublicKey modifiedKey = kp.getPublic(); Path path = createKnownHostsCopy(); ServerKeyVerifier verifier = new KnownHostsServerKeyVerifier(AcceptAllServerKeyVerifier.INSTANCE, path) { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java b/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java index 87dc5ff..12c416d 100644 --- a/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java @@ -29,7 +29,7 @@ import org.apache.sshd.client.SshClient; import org.apache.sshd.server.SshServer; import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommandExecutionHelper; -import org.apache.sshd.util.test.Utils; +import org.apache.sshd.util.test.CoreTestSupportUtils; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.FixMethodOrder; @@ -51,11 +51,11 @@ public class ClientSessionTest extends BaseTestSupport { @BeforeClass public static void setupClientAndServer() throws Exception { - sshd = Utils.setupTestServer(ClientSessionTest.class); + sshd = CoreTestSupportUtils.setupTestServer(ClientSessionTest.class); sshd.start(); port = sshd.getPort(); - client = Utils.setupTestClient(ClientSessionTest.class); + client = CoreTestSupportUtils.setupTestClient(ClientSessionTest.class); client.start(); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/client/simple/SimpleSessionClientTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/simple/SimpleSessionClientTest.java b/sshd-core/src/test/java/org/apache/sshd/client/simple/SimpleSessionClientTest.java index ba3ee68..a095f81 100644 --- a/sshd-core/src/test/java/org/apache/sshd/client/simple/SimpleSessionClientTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/client/simple/SimpleSessionClientTest.java @@ -32,7 +32,7 @@ import org.apache.sshd.common.session.SessionListener; import org.apache.sshd.server.auth.password.PasswordAuthenticator; import org.apache.sshd.server.auth.password.RejectAllPasswordAuthenticator; import org.apache.sshd.server.auth.pubkey.RejectAllPublickeyAuthenticator; -import org.apache.sshd.util.test.Utils; +import org.apache.sshd.util.test.CommonTestSupportUtils; import org.apache.sshd.util.test.client.simple.BaseSimpleClientTestSupport; import org.junit.FixMethodOrder; import org.junit.Test; @@ -60,8 +60,8 @@ public class SimpleSessionClientTest extends BaseSimpleClientTestSupport { @Test public void testLoginSessionWithIdentity() throws Exception { - final KeyPair identity = Utils.getFirstKeyPair(createTestHostKeyProvider()); - final AtomicBoolean identityQueried = new AtomicBoolean(false); + KeyPair identity = CommonTestSupportUtils.getFirstKeyPair(createTestHostKeyProvider()); + AtomicBoolean identityQueried = new AtomicBoolean(false); sshd.setPublickeyAuthenticator((username, key, session) -> { if (username.equals(getCurrentTestName())) { identityQueried.set(true); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/AttributeStoreTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/AttributeStoreTest.java b/sshd-core/src/test/java/org/apache/sshd/common/AttributeStoreTest.java index c0f1a73..a8137f0 100644 --- a/sshd-core/src/test/java/org/apache/sshd/common/AttributeStoreTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/common/AttributeStoreTest.java @@ -44,38 +44,38 @@ public class AttributeStoreTest extends BaseTestSupport { @Test public void testResolveFactoryManagerAttribute() { - assertNull("Unexpected null factory value", AttributeStore.resolveAttribute((FactoryManager) null, KEY)); + assertNull("Unexpected null factory value", FactoryManager.resolveAttribute((FactoryManager) null, KEY)); FactoryManager manager = Mockito.mock(FactoryManager.class); String expected = setAttributeValue(manager, getCurrentTestName()); - assertSame("Mismatched resolved value", expected, AttributeStore.resolveAttribute(manager, KEY)); + assertSame("Mismatched resolved value", expected, FactoryManager.resolveAttribute(manager, KEY)); } @Test public void testResolveSessionAttribute() { - assertNull("Unexpected null session value", AttributeStore.resolveAttribute((Session) null, KEY)); + assertNull("Unexpected null session value", Session.resolveAttribute((Session) null, KEY)); Session session = Mockito.mock(Session.class); - final AtomicInteger managerCount = new AtomicInteger(0); + AtomicInteger managerCount = new AtomicInteger(0); Mockito.when(session.getFactoryManager()).then(invocation -> { managerCount.incrementAndGet(); return null; }); setAttributeValue(session, null); - assertNull("Unexpected success for empty attribute", AttributeStore.resolveAttribute(session, KEY)); + assertNull("Unexpected success for empty attribute", Session.resolveAttribute(session, KEY)); assertEquals("Factory manager not requested", 1, managerCount.getAndSet(0)); String expected = setAttributeValue(session, getCurrentTestName()); - assertSame("Mismatched attribute value", expected, AttributeStore.resolveAttribute(session, KEY)); + assertSame("Mismatched attribute value", expected, Session.resolveAttribute(session, KEY)); assertEquals("Unexpected manager request", 0, managerCount.get()); } @Test public void testResolveChannelAttribute() { - assertNull("Unexpected null channek value", AttributeStore.resolveAttribute((Channel) null, KEY)); + assertNull("Unexpected null channek value", Channel.resolveAttribute((Channel) null, KEY)); - final Session session = Mockito.mock(Session.class); - final AtomicInteger managerCount = new AtomicInteger(0); + Session session = Mockito.mock(Session.class); + AtomicInteger managerCount = new AtomicInteger(0); Mockito.when(session.getFactoryManager()).thenAnswer(invocation -> { managerCount.incrementAndGet(); return null; @@ -83,19 +83,19 @@ public class AttributeStoreTest extends BaseTestSupport { setAttributeValue(session, null); Channel channel = Mockito.mock(Channel.class); - final AtomicInteger sessionCount = new AtomicInteger(0); + AtomicInteger sessionCount = new AtomicInteger(0); Mockito.when(channel.getSession()).thenAnswer(invocation -> { sessionCount.incrementAndGet(); return session; }); setAttributeValue(channel, null); - assertNull("Unexpected success for empty attribute", AttributeStore.resolveAttribute(channel, KEY)); + assertNull("Unexpected success for empty attribute", Channel.resolveAttribute(channel, KEY)); assertEquals("Session not requested", 1, sessionCount.getAndSet(0)); assertEquals("Factory manager not requested", 1, managerCount.getAndSet(0)); String expected = setAttributeValue(channel, getCurrentTestName()); - assertSame("Mismatched attribute value", expected, AttributeStore.resolveAttribute(channel, KEY)); + assertSame("Mismatched attribute value", expected, Channel.resolveAttribute(channel, KEY)); assertEquals("Unexpected session request", 0, sessionCount.get()); assertEquals("Unexpected manager request", 0, managerCount.get()); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/PropertyResolverUtilsTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/PropertyResolverUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/PropertyResolverUtilsTest.java index 12319c0..69b6fe8 100644 --- a/sshd-core/src/test/java/org/apache/sshd/common/PropertyResolverUtilsTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/common/PropertyResolverUtilsTest.java @@ -30,7 +30,7 @@ import java.util.concurrent.TimeUnit; import org.apache.sshd.common.session.Session; import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.util.test.BaseTestSupport; +import org.apache.sshd.util.test.JUnitTestSupport; import org.apache.sshd.util.test.NoIoTestCase; import org.junit.FixMethodOrder; import org.junit.Test; @@ -43,21 +43,21 @@ import org.mockito.Mockito; */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) @Category({ NoIoTestCase.class }) -public class PropertyResolverUtilsTest extends BaseTestSupport { +public class PropertyResolverUtilsTest extends JUnitTestSupport { public PropertyResolverUtilsTest() { super(); } @Test public void testResolveAndUpdateClosestPropertyValue() { - final String propName = getCurrentTestName(); - final String rootValue = getClass().getPackage().getName(); + String propName = getCurrentTestName(); + String rootValue = getClass().getPackage().getName(); Session resolver = createMockSession(); FactoryManager root = Objects.requireNonNull(resolver.getFactoryManager(), "No manager"); assertNull("Unexpected root previous value", PropertyResolverUtils.updateProperty(root, propName, rootValue)); assertSame("Mismatched root value", rootValue, PropertyResolverUtils.getString(resolver, propName)); - final String nodeValue = getClass().getSimpleName(); + String nodeValue = getClass().getSimpleName(); assertNull("Unexpected node previous value", PropertyResolverUtils.updateProperty(resolver, propName, nodeValue)); assertSame("Mismatched node value", nodeValue, PropertyResolverUtils.getString(resolver, propName)); } @@ -90,7 +90,7 @@ public class PropertyResolverUtilsTest extends BaseTestSupport { System.clearProperty(propKey); } - for (final boolean expected : new boolean[]{false, true}) { + for (boolean expected : new boolean[]{false, true}) { try { System.setProperty(propKey, Boolean.toString(expected)); testBooleanProperty(resolver, propName, expected); @@ -102,8 +102,8 @@ public class PropertyResolverUtilsTest extends BaseTestSupport { @Test public void testLongProperty() { - final long expected = System.currentTimeMillis(); - final String name = getCurrentTestName(); + long expected = System.currentTimeMillis(); + String name = getCurrentTestName(); Session session = createMockSession(); assertEquals("Mismatched empty props value", expected, PropertyResolverUtils.getLongProperty(session, name, expected)); @@ -137,8 +137,8 @@ public class PropertyResolverUtilsTest extends BaseTestSupport { @Test public void testIntegerProperty() { - final int expected = 3777347; - final String name = getCurrentTestName(); + int expected = 3777347; + String name = getCurrentTestName(); Session session = createMockSession(); assertEquals("Mismatched empty props value", expected, PropertyResolverUtils.getIntProperty(session, name, expected)); @@ -176,8 +176,8 @@ public class PropertyResolverUtilsTest extends BaseTestSupport { @Test public void testBooleanProperty() { - for (final boolean expected : new boolean[]{false, true}) { - final String name = getCurrentTestName(); + for (boolean expected : new boolean[]{false, true}) { + String name = getCurrentTestName(); Session session = createMockSession(); assertEquals("Mismatched empty props value", expected, PropertyResolverUtils.getBooleanProperty(session, name, expected)); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/SshConstantsTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/SshConstantsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/SshConstantsTest.java deleted file mode 100644 index a15ca6b..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/common/SshConstantsTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.common; - -import java.util.Collection; - -import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.NoIoTestCase; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@Category({ NoIoTestCase.class }) -public class SshConstantsTest extends BaseTestSupport { - public SshConstantsTest() { - super(); - } - - @Test - public void testGetDisconnectReason() { - for (int reason = SshConstants.SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT; reason <= SshConstants.SSH2_DISCONNECT_ILLEGAL_USER_NAME; reason++) { - String name = SshConstants.getDisconnectReasonName(reason); - assertTrue("Mismatched name for reason=" + reason + ": " + name, name.startsWith("SSH2_DISCONNECT_")); - } - } - - @Test - public void testGetOpenErrorName() { - for (int code = SshConstants.SSH_OPEN_ADMINISTRATIVELY_PROHIBITED; code <= SshConstants.SSH_OPEN_RESOURCE_SHORTAGE; code++) { - String name = SshConstants.getOpenErrorCodeName(code); - assertTrue("Mismatched name for code=" + code + ": " + name, name.startsWith("SSH_OPEN_")); - } - } - - @Test - public void testAmbiguousOpcodes() throws Exception { - int[] knownAmbiguities = {30, 31, 60}; - Collection<Integer> opcodes = SshConstants.getAmbiguousOpcodes(); - assertTrue("Not enough ambiguities found", GenericUtils.size(opcodes) >= knownAmbiguities.length); - - for (int cmd : knownAmbiguities) { - assertEquals("Mismatched mnemonic for known ambiguity=" + cmd, Integer.toString(cmd), SshConstants.getCommandMessageName(cmd)); - assertTrue("Known ambiguity not reported as such: " + cmd, SshConstants.isAmbiguousOpcode(cmd)); - assertTrue("Known ambiguity=" + cmd + " not listed: " + opcodes, opcodes.contains(cmd)); - } - - for (Integer cmd : opcodes) { - assertEquals("Mismatched mnemonic for " + cmd, cmd.toString(), SshConstants.getCommandMessageName(cmd)); - assertTrue("Opcode not detected as ambiguous: " + cmd, SshConstants.isAmbiguousOpcode(cmd)); - } - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/VersionPropertiesTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/VersionPropertiesTest.java b/sshd-core/src/test/java/org/apache/sshd/common/VersionPropertiesTest.java deleted file mode 100644 index 06cfffc..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/common/VersionPropertiesTest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.common; - -import java.util.Map; - -import org.apache.sshd.common.config.VersionProperties; -import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class VersionPropertiesTest extends BaseTestSupport { - public VersionPropertiesTest() { - super(); - } - - @Test - public void testNonEmptyProperties() { - Map<?, ?> props = VersionProperties.getVersionProperties(); - assertTrue(GenericUtils.isNotEmpty(props)); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java b/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java index 322f55c..d7df493 100644 --- a/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java @@ -74,7 +74,7 @@ import org.apache.sshd.server.session.ServerSession; import org.apache.sshd.server.session.ServerSessionImpl; import org.apache.sshd.server.session.SessionFactory; import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.Utils; +import org.apache.sshd.util.test.CommonTestSupportUtils; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -587,14 +587,14 @@ public class AuthenticationTest extends BaseTestSupport { @Test // see SSHD-618 public void testPublicKeyAuthDifferentThanKex() throws Exception { KeyPairProvider serverKeys = KeyPairProvider.wrap( - Utils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024), - Utils.generateKeyPair(KeyUtils.DSS_ALGORITHM, 512), - Utils.generateKeyPair(KeyUtils.EC_ALGORITHM, 256)); + CommonTestSupportUtils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024), + CommonTestSupportUtils.generateKeyPair(KeyUtils.DSS_ALGORITHM, 512), + CommonTestSupportUtils.generateKeyPair(KeyUtils.EC_ALGORITHM, 256)); sshd.setKeyPairProvider(serverKeys); sshd.setKeyboardInteractiveAuthenticator(KeyboardInteractiveAuthenticator.NONE); sshd.setPasswordAuthenticator(RejectAllPasswordAuthenticator.INSTANCE); - final KeyPair clientIdentity = Utils.generateKeyPair(KeyUtils.EC_ALGORITHM, 256); + final KeyPair clientIdentity = CommonTestSupportUtils.generateKeyPair(KeyUtils.EC_ALGORITHM, 256); sshd.setPublickeyAuthenticator((username, key, session) -> { String keyType = KeyUtils.getKeyType(key); String expType = KeyUtils.getKeyType(clientIdentity); @@ -650,7 +650,7 @@ public class AuthenticationTest extends BaseTestSupport { super.sendPublicKeyResponse(session, username, KeyPairProvider.SSH_DSS, key, keyBlob, offset, blobLen, buffer); } else if (count == 2) { // send another key - KeyPair otherPair = org.apache.sshd.util.test.Utils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); + KeyPair otherPair = org.apache.sshd.util.test.CommonTestSupportUtils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); PublicKey otherKey = otherPair.getPublic(); Buffer buf = session.createBuffer(SshConstants.SSH_MSG_USERAUTH_PK_OK, blobLen + alg.length() + Long.SIZE); buf.putString(alg); @@ -666,7 +666,7 @@ public class AuthenticationTest extends BaseTestSupport { })); try (SshClient client = setupTestClient()) { - KeyPair clientIdentity = Utils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); + KeyPair clientIdentity = CommonTestSupportUtils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); client.start(); try { @@ -693,7 +693,7 @@ public class AuthenticationTest extends BaseTestSupport { public void testHostBasedAuthentication() throws Exception { String hostClienUser = getClass().getSimpleName(); String hostClientName = SshdSocketAddress.toAddressString(SshdSocketAddress.getFirstExternalNetwork4Address()); - KeyPair hostClientKey = Utils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); + KeyPair hostClientKey = CommonTestSupportUtils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); AtomicInteger invocationCount = new AtomicInteger(0); sshd.setHostBasedAuthenticator((session, username, clientHostKey, clientHostName, clientUsername, certificates) -> { invocationCount.incrementAndGet(); @@ -751,7 +751,7 @@ public class AuthenticationTest extends BaseTestSupport { sshd.setKeyboardInteractiveAuthenticator(KeyboardInteractiveAuthenticator.NONE); try (SshClient client = setupTestClient()) { - KeyPair kp = Utils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); + KeyPair kp = CommonTestSupportUtils.generateKeyPair(KeyUtils.RSA_ALGORITHM, 1024); client.start(); try { for (int index = 1; index < 3; index++) { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES192CTRTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES192CTRTest.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES192CTRTest.java deleted file mode 100644 index 6611702..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES192CTRTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.common.cipher; - -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class AES192CTRTest extends BaseCipherTest { - public AES192CTRTest() { - super(); - } - - @Test - public void testEncryptDecrypt() throws Exception { - // for AES 256 bits we need the JCE unlimited strength policy - ensureKeySizeSupported(16, 24, "AES", "AES/CTR/NoPadding"); - testEncryptDecrypt(BuiltinCiphers.aes192ctr); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES256CBCTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES256CBCTest.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES256CBCTest.java deleted file mode 100644 index dd39fd4..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/AES256CBCTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.common.cipher; - -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class AES256CBCTest extends BaseCipherTest { - public AES256CBCTest() { - super(); - } - - @Test - public void testEncryptDecrypt() throws Exception { - // for AES 256 bits we need the JCE unlimited strength policy - ensureKeySizeSupported(16, 32, "AES", "AES/CBC/NoPadding"); - testEncryptDecrypt(BuiltinCiphers.aes256cbc); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR128Test.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR128Test.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR128Test.java deleted file mode 100644 index 1c37449..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR128Test.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.common.cipher; - -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class ARCFOUR128Test extends BaseCipherTest { - public ARCFOUR128Test() { - super(); - } - - @Test - public void testEncryptDecrypt() throws Exception { - testEncryptDecrypt(BuiltinCiphers.arcfour128); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR256Test.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR256Test.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR256Test.java deleted file mode 100644 index 5511e0f..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/ARCFOUR256Test.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.common.cipher; - -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class ARCFOUR256Test extends BaseCipherTest { - public ARCFOUR256Test() { - super(); - } - - @Test - public void testEncryptDecrypt() throws Exception { - // for RC4 256 bits we need the JCE unlimited strength policy - ensureKeySizeSupported(32, "ARCFOUR", "RC4"); - testEncryptDecrypt(BuiltinCiphers.arcfour256); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/cipher/BaseCipherTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/BaseCipherTest.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/BaseCipherTest.java deleted file mode 100644 index fd30e18..0000000 --- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/BaseCipherTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.sshd.common.cipher; - -import java.nio.charset.StandardCharsets; -import java.security.GeneralSecurityException; -import java.security.InvalidKeyException; - -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.apache.sshd.common.NamedFactory; -import org.apache.sshd.common.cipher.Cipher.Mode; -import org.apache.sshd.common.util.security.SecurityUtils; -import org.apache.sshd.util.test.BaseTestSupport; -import org.apache.sshd.util.test.NoIoTestCase; -import org.junit.Assume; -import org.junit.experimental.categories.Category; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -@Category({ NoIoTestCase.class }) -public abstract class BaseCipherTest extends BaseTestSupport { - protected BaseCipherTest() { - super(); - } - - protected void ensureKeySizeSupported(int bsize, String algorithm, String transformation) throws GeneralSecurityException { - try { - javax.crypto.Cipher cipher = SecurityUtils.getCipher(transformation); - byte[] key = new byte[bsize]; - cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, new SecretKeySpec(key, algorithm)); - } catch (GeneralSecurityException e) { - if (e instanceof InvalidKeyException) { // NOTE: assumption violations are NOT test failures... - Assume.assumeTrue(algorithm + "/" + transformation + "[" + bsize + "] N/A", false); - } - - throw e; - } - } - - protected void ensureKeySizeSupported(int ivsize, int bsize, String algorithm, String transformation) throws GeneralSecurityException { - try { - javax.crypto.Cipher cipher = SecurityUtils.getCipher(transformation); - byte[] key = new byte[bsize]; - byte[] iv = new byte[ivsize]; - cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, new SecretKeySpec(key, algorithm), new IvParameterSpec(iv)); - } catch (GeneralSecurityException e) { - if (e instanceof InvalidKeyException) { - Assume.assumeTrue(algorithm + "/" + transformation + "[" + bsize + "/" + ivsize + "]", false /* force exception */); - } - - throw e; - } - } - - protected void testEncryptDecrypt(NamedFactory<Cipher> factory) throws Exception { - String facName = factory.getName(); - Cipher enc = factory.create(); - int keySize = enc.getBlockSize(); - int ivSize = enc.getIVSize(); - byte[] key = new byte[keySize]; - byte[] iv = new byte[ivSize]; - enc.init(Mode.Encrypt, key, iv); - - byte[] expected = facName.getBytes(StandardCharsets.UTF_8); - byte[] workBuf = expected.clone(); // need to clone since the cipher works in-line - enc.update(workBuf, 0, workBuf.length); - - Cipher dec = factory.create(); - dec.init(Mode.Decrypt, key, iv); - byte[] actual = workBuf.clone(); - dec.update(actual, 0, actual.length); - - assertArrayEquals(facName, expected, actual); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java index 4a02074..0089782 100644 --- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java @@ -35,10 +35,11 @@ import org.apache.sshd.common.random.Random; import org.apache.sshd.common.util.buffer.BufferUtils; import org.apache.sshd.server.SshServer; import org.apache.sshd.util.test.BaseTestSupport; +import org.apache.sshd.util.test.CommonTestSupportUtils; +import org.apache.sshd.util.test.CoreTestSupportUtils; import org.apache.sshd.util.test.JSchLogger; import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory; import org.apache.sshd.util.test.SimpleUserInfo; -import org.apache.sshd.util.test.Utils; import org.junit.AfterClass; import org.junit.Assume; import org.junit.BeforeClass; @@ -67,15 +68,15 @@ public class CipherTest extends BaseTestSupport { * NOTE !!! order is important since we build from it the C2S/S2C ciphers proposal */ private static final List<Object[]> PARAMETERS = - Collections.unmodifiableList(Arrays.asList( - new Object[]{BuiltinCiphers.aes128cbc, com.jcraft.jsch.jce.AES128CBC.class, NUM_LOADTEST_ROUNDS}, - new Object[]{BuiltinCiphers.tripledescbc, com.jcraft.jsch.jce.TripleDESCBC.class, NUM_LOADTEST_ROUNDS}, - new Object[]{BuiltinCiphers.blowfishcbc, com.jcraft.jsch.jce.BlowfishCBC.class, NUM_LOADTEST_ROUNDS}, - new Object[]{BuiltinCiphers.aes192cbc, com.jcraft.jsch.jce.AES192CBC.class, NUM_LOADTEST_ROUNDS}, - new Object[]{BuiltinCiphers.aes256cbc, com.jcraft.jsch.jce.AES256CBC.class, NUM_LOADTEST_ROUNDS}, - new Object[]{BuiltinCiphers.arcfour128, com.jcraft.jsch.jce.ARCFOUR128.class, NUM_LOADTEST_ROUNDS}, - new Object[]{BuiltinCiphers.arcfour256, com.jcraft.jsch.jce.ARCFOUR256.class, NUM_LOADTEST_ROUNDS} - )); + Collections.unmodifiableList(Arrays.asList( + new Object[]{BuiltinCiphers.aes128cbc, com.jcraft.jsch.jce.AES128CBC.class, NUM_LOADTEST_ROUNDS}, + new Object[]{BuiltinCiphers.tripledescbc, com.jcraft.jsch.jce.TripleDESCBC.class, NUM_LOADTEST_ROUNDS}, + new Object[]{BuiltinCiphers.blowfishcbc, com.jcraft.jsch.jce.BlowfishCBC.class, NUM_LOADTEST_ROUNDS}, + new Object[]{BuiltinCiphers.aes192cbc, com.jcraft.jsch.jce.AES192CBC.class, NUM_LOADTEST_ROUNDS}, + new Object[]{BuiltinCiphers.aes256cbc, com.jcraft.jsch.jce.AES256CBC.class, NUM_LOADTEST_ROUNDS}, + new Object[]{BuiltinCiphers.arcfour128, com.jcraft.jsch.jce.ARCFOUR128.class, NUM_LOADTEST_ROUNDS}, + new Object[]{BuiltinCiphers.arcfour256, com.jcraft.jsch.jce.ARCFOUR256.class, NUM_LOADTEST_ROUNDS} + )); private static final List<NamedResource> TEST_CIPHERS = Collections.unmodifiableList( @@ -86,7 +87,7 @@ public class CipherTest extends BaseTestSupport { private static SshServer sshd; private static int port; - private final Random random = Utils.getRandomizerInstance(); + private final Random random = CommonTestSupportUtils.getRandomizerInstance(); private final BuiltinCiphers builtInCipher; private final Class<? extends com.jcraft.jsch.Cipher> jschCipher; private final int loadTestRounds; @@ -105,7 +106,7 @@ public class CipherTest extends BaseTestSupport { @BeforeClass public static void setupClientAndServer() throws Exception { JSchLogger.init(); - sshd = Utils.setupTestServer(CipherTest.class); + sshd = CoreTestSupportUtils.setupTestServer(CipherTest.class); sshd.start(); port = sshd.getPort(); }
