PageRenderTime 911ms CodeModel.GetById 27ms RepoModel.GetById 5ms app.codeStats 0ms

/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java

https://gitlab.com/matticala/apache-camel
Java | 254 lines | 200 code | 34 blank | 20 comment | 0 complexity | 302c66fdb1735fd4c8fb65766b12bc9f MD5 | raw file
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.apache.camel.component.file.remote;
  18. import org.apache.camel.Exchange;
  19. import org.apache.camel.Processor;
  20. import org.apache.camel.test.junit4.CamelTestSupport;
  21. import org.junit.Test;
  22. /**
  23. * @version
  24. */
  25. public class UriConfigurationTest extends CamelTestSupport {
  26. @Test
  27. public void testFtpConfigurationDefaults() {
  28. FtpEndpoint<?> endpoint = context.getEndpoint("ftp://hostname", FtpEndpoint.class);
  29. RemoteFileConfiguration config = endpoint.getConfiguration();
  30. assertEquals("ftp", config.getProtocol());
  31. assertEquals("hostname", config.getHost());
  32. assertEquals(21, config.getPort());
  33. assertNull(config.getUsername());
  34. assertNull(config.getPassword());
  35. assertEquals(false, config.isBinary());
  36. assertEquals(RemoteFileConfiguration.PathSeparator.UNIX, config.getSeparator());
  37. }
  38. @Test
  39. public void testSftpConfigurationDefaults() {
  40. SftpEndpoint endpoint = context.getEndpoint("sftp://hostname", SftpEndpoint.class);
  41. RemoteFileConfiguration config = endpoint.getConfiguration();
  42. assertEquals("sftp", config.getProtocol());
  43. assertEquals("hostname", config.getHost());
  44. assertEquals(22, config.getPort());
  45. assertNull(config.getUsername());
  46. assertNull(config.getPassword());
  47. assertEquals(false, config.isBinary());
  48. assertEquals(RemoteFileConfiguration.PathSeparator.UNIX, config.getSeparator());
  49. }
  50. @Test
  51. public void testFtpsConfigurationDefaults() {
  52. FtpsEndpoint endpoint = context.getEndpoint("ftps://hostname", FtpsEndpoint.class);
  53. FtpsConfiguration config = endpoint.getFtpsConfiguration();
  54. assertEquals("ftps", config.getProtocol());
  55. assertEquals("hostname", config.getHost());
  56. assertEquals(21, config.getPort());
  57. assertNull(config.getUsername());
  58. assertNull(config.getPassword());
  59. assertEquals(false, config.isBinary());
  60. assertEquals(false, config.isImplicit());
  61. assertEquals("TLS", config.getSecurityProtocol());
  62. assertEquals(RemoteFileConfiguration.PathSeparator.UNIX, config.getSeparator());
  63. }
  64. @Test
  65. public void testFtpsExplicitConfigurationDefaults() {
  66. FtpsEndpoint endpoint = context.getEndpoint("ftps://hostname:990?isImplicit=true", FtpsEndpoint.class);
  67. FtpsConfiguration config = endpoint.getFtpsConfiguration();
  68. assertEquals("ftps", config.getProtocol());
  69. assertEquals("hostname", config.getHost());
  70. assertEquals(990, config.getPort());
  71. assertNull(config.getUsername());
  72. assertNull(config.getPassword());
  73. assertEquals(false, config.isBinary());
  74. assertEquals(true, config.isImplicit());
  75. assertEquals("TLS", config.getSecurityProtocol());
  76. }
  77. @Test
  78. public void testFtpExplicitConfiguration() {
  79. FtpEndpoint<?> endpoint = context.getEndpoint("ftp://user@hostname:1021/some/file?password=secret&binary=true", FtpEndpoint.class);
  80. RemoteFileConfiguration config = endpoint.getConfiguration();
  81. assertEquals("ftp", config.getProtocol());
  82. assertEquals("hostname", config.getHost());
  83. assertEquals(1021, config.getPort());
  84. assertEquals("user", config.getUsername());
  85. assertEquals("secret", config.getPassword());
  86. assertEquals(true, config.isBinary());
  87. }
  88. @Test
  89. public void testSftpExplicitConfiguration() {
  90. SftpEndpoint endpoint = context.getEndpoint("sftp://user@hostname:1021/some/file?password=secret&binary=true", SftpEndpoint.class);
  91. RemoteFileConfiguration config = endpoint.getConfiguration();
  92. assertEquals("sftp", config.getProtocol());
  93. assertEquals("hostname", config.getHost());
  94. assertEquals(1021, config.getPort());
  95. assertEquals("user", config.getUsername());
  96. assertEquals("secret", config.getPassword());
  97. assertEquals(true, config.isBinary());
  98. }
  99. @Test
  100. public void testFtpsExplicitConfiguration() {
  101. FtpsEndpoint endpoint = context.getEndpoint("ftps://user@hostname:1021/some/file?password=secret&binary=true&securityProtocol=SSL&isImplicit=true", FtpsEndpoint.class);
  102. FtpsConfiguration config = endpoint.getFtpsConfiguration();
  103. assertEquals("ftps", config.getProtocol());
  104. assertEquals("hostname", config.getHost());
  105. assertEquals(1021, config.getPort());
  106. assertEquals("user", config.getUsername());
  107. assertEquals("secret", config.getPassword());
  108. assertEquals(true, config.isBinary());
  109. assertEquals(true, config.isImplicit());
  110. assertEquals("SSL", config.getSecurityProtocol());
  111. }
  112. @Test
  113. public void testRemoteFileEndpointFiles() {
  114. assertRemoteFileEndpointFile("ftp://hostname/foo/bar", "foo/bar");
  115. assertRemoteFileEndpointFile("ftp://hostname/foo/bar/", "foo/bar/");
  116. assertRemoteFileEndpointFile("ftp://hostname/foo/", "foo/");
  117. assertRemoteFileEndpointFile("ftp://hostname/foo", "foo");
  118. assertRemoteFileEndpointFile("ftp://hostname/", "");
  119. assertRemoteFileEndpointFile("ftp://hostname", "");
  120. assertRemoteFileEndpointFile("ftp://hostname//", "");
  121. assertRemoteFileEndpointFile("ftp://hostname//foo/bar", "foo/bar");
  122. assertRemoteFileEndpointFile("ftp://hostname//foo/bar/", "foo/bar/");
  123. assertRemoteFileEndpointFile("sftp://user@hostname:123//foo/bar?password=secret", "foo/bar");
  124. assertRemoteFileEndpointFile("sftp://user@hostname:123?password=secret", "");
  125. assertRemoteFileEndpointFile("sftp://hostname/foo/bar", "foo/bar");
  126. assertRemoteFileEndpointFile("sftp://hostname/foo/bar/", "foo/bar/");
  127. assertRemoteFileEndpointFile("sftp://hostname/foo/", "foo/");
  128. assertRemoteFileEndpointFile("sftp://hostname/foo", "foo");
  129. assertRemoteFileEndpointFile("sftp://hostname/", "");
  130. assertRemoteFileEndpointFile("sftp://hostname", "");
  131. assertRemoteFileEndpointFile("sftp://hostname//", "");
  132. assertRemoteFileEndpointFile("sftp://hostname//foo/bar", "foo/bar");
  133. assertRemoteFileEndpointFile("sftp://hostname//foo/bar/", "foo/bar/");
  134. assertRemoteFileEndpointFile("ftps://user@hostname:123//foo/bar?password=secret", "foo/bar");
  135. assertRemoteFileEndpointFile("ftps://user@hostname:123?password=secret", "");
  136. assertRemoteFileEndpointFile("ftps://hostname/foo/bar", "foo/bar");
  137. assertRemoteFileEndpointFile("ftps://hostname/foo/bar/", "foo/bar/");
  138. assertRemoteFileEndpointFile("ftps://hostname/foo/", "foo/");
  139. assertRemoteFileEndpointFile("ftps://hostname/foo", "foo");
  140. assertRemoteFileEndpointFile("ftps://hostname/", "");
  141. assertRemoteFileEndpointFile("ftps://hostname", "");
  142. assertRemoteFileEndpointFile("ftps://hostname//", "");
  143. assertRemoteFileEndpointFile("ftps://hostname//foo/bar", "foo/bar");
  144. assertRemoteFileEndpointFile("ftps://hostname//foo/bar/", "foo/bar/");
  145. assertRemoteFileEndpointFile("ftps://hostname//////foo/bar/", "foo/bar/");
  146. }
  147. private void assertRemoteFileEndpointFile(String endpointUri, String expectedFile) {
  148. RemoteFileEndpoint<?> endpoint = resolveMandatoryEndpoint(context, endpointUri, RemoteFileEndpoint.class);
  149. assertNotNull("Could not find endpoint: " + endpointUri, endpoint);
  150. String file = endpoint.getConfiguration().getDirectory();
  151. assertEquals("For uri: " + endpointUri + " the file is not equal", expectedFile, file);
  152. }
  153. @Test
  154. public void testSftpKnownHostsFileConfiguration() {
  155. SftpEndpoint endpoint = context.getEndpoint("sftp://user@hostname:1021/some/file?password=secret&binary=true&knownHostsFile=/home/janstey/.ssh/known_hosts", SftpEndpoint.class);
  156. SftpConfiguration config = endpoint.getConfiguration();
  157. assertEquals("sftp", config.getProtocol());
  158. assertEquals("hostname", config.getHost());
  159. assertEquals(1021, config.getPort());
  160. assertEquals("user", config.getUsername());
  161. assertEquals("secret", config.getPassword());
  162. assertEquals(true, config.isBinary());
  163. assertEquals("/home/janstey/.ssh/known_hosts", config.getKnownHostsFile());
  164. }
  165. @Test
  166. public void testPasswordInContextPathConfiguration() {
  167. FtpEndpoint<?> endpoint = context.getEndpoint("ftp://user:secret@hostname:1021/some/file", FtpEndpoint.class);
  168. RemoteFileConfiguration config = endpoint.getConfiguration();
  169. assertEquals("ftp", config.getProtocol());
  170. assertEquals("hostname", config.getHost());
  171. assertEquals(1021, config.getPort());
  172. assertEquals("user", config.getUsername());
  173. assertEquals("secret", config.getPassword());
  174. }
  175. @Test
  176. public void testStartingDirectoryWithDot() throws Exception {
  177. FtpEndpoint<?> endpoint = context.getEndpoint("ftp://user@hostname?password=secret", FtpEndpoint.class);
  178. FtpConfiguration config = endpoint.getConfiguration();
  179. config.setHost("somewhere");
  180. config.setDirectory("temp.dir");
  181. endpoint.createConsumer(new Processor() {
  182. public void process(Exchange exchange) throws Exception {
  183. // do nothing
  184. }
  185. });
  186. }
  187. @Test
  188. public void testPathSeparatorAuto() {
  189. FtpEndpoint<?> endpoint = context.getEndpoint("ftp://hostname/foo/bar?separator=Auto", FtpEndpoint.class);
  190. RemoteFileConfiguration config = endpoint.getConfiguration();
  191. assertEquals("ftp", config.getProtocol());
  192. assertEquals("hostname", config.getHost());
  193. assertEquals("foo/bar", config.getDirectory());
  194. assertEquals(RemoteFileConfiguration.PathSeparator.Auto, config.getSeparator());
  195. assertEquals("foo/bar/hello.txt", config.normalizePath("foo/bar/hello.txt"));
  196. assertEquals("foo\\bar\\hello.txt", config.normalizePath("foo\\bar\\hello.txt"));
  197. }
  198. @Test
  199. public void testPathSeparatorUnix() {
  200. FtpEndpoint<?> endpoint = context.getEndpoint("ftp://hostname/foo/bar?separator=UNIX", FtpEndpoint.class);
  201. RemoteFileConfiguration config = endpoint.getConfiguration();
  202. assertEquals("ftp", config.getProtocol());
  203. assertEquals("hostname", config.getHost());
  204. assertEquals("foo/bar", config.getDirectory());
  205. assertEquals(RemoteFileConfiguration.PathSeparator.UNIX, config.getSeparator());
  206. assertEquals("foo/bar/hello.txt", config.normalizePath("foo/bar/hello.txt"));
  207. assertEquals("foo/bar/hello.txt", config.normalizePath("foo\\bar\\hello.txt"));
  208. }
  209. @Test
  210. public void testPathSeparatorWindows() {
  211. FtpEndpoint<?> endpoint = context.getEndpoint("ftp://hostname/foo/bar?separator=Windows", FtpEndpoint.class);
  212. RemoteFileConfiguration config = endpoint.getConfiguration();
  213. assertEquals("ftp", config.getProtocol());
  214. assertEquals("hostname", config.getHost());
  215. assertEquals("foo/bar", config.getDirectory());
  216. assertEquals(RemoteFileConfiguration.PathSeparator.Windows, config.getSeparator());
  217. assertEquals("foo\\bar\\hello.txt", config.normalizePath("foo/bar/hello.txt"));
  218. assertEquals("foo\\bar\\hello.txt", config.normalizePath("foo\\bar\\hello.txt"));
  219. }
  220. }