1 package org.apache.archiva.remotedownload;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.archiva.admin.model.beans.RemoteRepository;
23 import org.apache.archiva.rest.api.services.RemoteRepositoriesService;
24 import org.apache.commons.io.FileUtils;
25 import org.apache.cxf.jaxrs.client.WebClient;
26 import org.eclipse.jetty.server.Handler;
27 import org.eclipse.jetty.server.Server;
28 import org.eclipse.jetty.server.handler.DefaultHandler;
29 import org.eclipse.jetty.server.handler.HandlerList;
30 import org.eclipse.jetty.server.handler.ResourceHandler;
31 import org.junit.AfterClass;
32 import org.junit.BeforeClass;
33 import org.junit.Test;
34
35 import java.io.File;
36 import java.nio.file.Files;
37
38 import static org.assertj.core.api.Assertions.assertThat;
39
40
41
42
43 public class RemoteRepositoryConnectivityCheckTest
44 extends AbstractDownloadTest
45 {
46
47 @BeforeClass
48 public static void setAppServerBase()
49 {
50 previousAppServerBase = System.getProperty( "appserver.base" );
51 System.setProperty( "appserver.base", "target/" + RemoteRepositoryConnectivityCheckTest.class.getName() );
52 }
53
54
55 @AfterClass
56 public static void resetAppServerBase()
57 {
58 System.setProperty( "appserver.base", previousAppServerBase );
59 }
60
61 @Override
62 protected String getSpringConfigLocation()
63 {
64 return "classpath*:META-INF/spring-context.xml classpath*:spring-context-test-common.xml classpath*:spring-context-artifacts-download.xml";
65 }
66
67 @Test
68 public void checkRemoteConnectivity()
69 throws Exception
70 {
71
72 Server repoServer =
73 buildStaticServer( new File( System.getProperty( "basedir" ) + "/src/test/repositories/test-repo" ) );
74 repoServer.start();
75
76 RemoteRepositoriesService service = getRemoteRepositoriesService();
77
78 WebClient.client( service ).header( "Authorization", authorizationHeader );
79
80 try
81 {
82
83 int repoServerPort = repoServer.getConnectors()[0].getLocalPort();
84
85 RemoteRepository repo = getRemoteRepository();
86
87 repo.setUrl( "http://localhost:" + repoServerPort );
88
89 service.addRemoteRepository( repo );
90
91 assertThat( service.checkRemoteConnectivity( repo.getId() ) ).isTrue();
92 }
93 finally
94 {
95 service.deleteRemoteRepository( "id-new" );
96 repoServer.stop();
97 }
98 }
99
100 @Test
101 public void checkRemoteConnectivityEmptyRemote()
102 throws Exception
103 {
104
105 File tmpDir = Files.createTempDirectory( "test" ).toFile();
106 Server repoServer = buildStaticServer( tmpDir );
107 repoServer.start();
108
109 RemoteRepositoriesService service = getRemoteRepositoriesService();
110
111 WebClient.client( service ).header( "Authorization", authorizationHeader );
112
113 try
114 {
115
116 int repoServerPort = repoServer.getConnectors()[0].getLocalPort();
117
118 RemoteRepository repo = getRemoteRepository();
119
120 repo.setUrl( "http://localhost:" + repoServerPort );
121
122 service.addRemoteRepository( repo );
123
124 assertThat( service.checkRemoteConnectivity( repo.getId() ) ).isTrue();
125 }
126 finally
127 {
128 service.deleteRemoteRepository( "id-new" );
129 FileUtils.deleteQuietly( tmpDir );
130 repoServer.stop();
131 }
132 }
133
134 @Test
135 public void checkRemoteConnectivityFail()
136 throws Exception
137 {
138
139 RemoteRepositoriesService service = getRemoteRepositoriesService();
140
141 WebClient.client( service ).header( "Authorization", authorizationHeader );
142
143 try
144 {
145
146 RemoteRepository repo = getRemoteRepository();
147
148 repo.setUrl( "http://localhost:8956" );
149
150 service.addRemoteRepository( repo );
151
152 assertThat( service.checkRemoteConnectivity( repo.getId() ) ).isFalse();
153 }
154 finally
155 {
156 service.deleteRemoteRepository( "id-new" );
157
158 }
159 }
160
161 protected Server buildStaticServer( File path )
162 {
163 Server repoServer = new Server( 0 );
164
165 ResourceHandler resourceHandler = new ResourceHandler();
166 resourceHandler.setDirectoriesListed( true );
167 resourceHandler.setWelcomeFiles( new String[]{ "index.html" } );
168 resourceHandler.setResourceBase( path.getAbsolutePath() );
169
170 HandlerList handlers = new HandlerList();
171 handlers.setHandlers( new Handler[]{ resourceHandler, new DefaultHandler() } );
172 repoServer.setHandler( handlers );
173
174 return repoServer;
175 }
176
177
178 RemoteRepository getRemoteRepository()
179 {
180 return new RemoteRepository( "id-new", "new one", "http://foo.com", "default", "foo", "foopassword", 120,
181 "cool repo" );
182 }
183
184 }