]> source.dussan.org Git - archiva.git/blob
dd38b68e6fec9b8600a698521e436b952425ac1b
[archiva.git] /
1 package org.apache.maven.archiva.web.action.admin.repositories;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import com.opensymphony.xwork.Action;
23
24 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
25 import org.apache.maven.archiva.configuration.Configuration;
26 import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
27 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
28 import org.codehaus.plexus.PlexusTestCase;
29 import org.codehaus.plexus.registry.RegistryException;
30 import org.easymock.MockControl;
31
32 import java.util.Collections;
33
34 /**
35  * DeleteRemoteRepositoryActionTest 
36  *
37  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
38  * @version $Id$
39  */
40 public class DeleteRemoteRepositoryActionTest
41     extends PlexusTestCase
42 {
43     private static final String REPO_ID = "remote-repo-ident";
44
45     private DeleteRemoteRepositoryAction action;
46
47     private MockControl archivaConfigurationControl;
48
49     private ArchivaConfiguration archivaConfiguration;
50
51     protected void setUp()
52         throws Exception
53     {
54         super.setUp();
55
56         action = (DeleteRemoteRepositoryAction) lookup( Action.class.getName(), "deleteRemoteRepositoryAction" );
57
58         archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
59         archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
60         action.setArchivaConfiguration( archivaConfiguration );
61     }
62
63     public void testDeleteRemoteRepositoryConfirmation()
64         throws Exception
65     {
66         RemoteRepositoryConfiguration originalRepository = createRepository();
67         Configuration configuration = createConfigurationForEditing( originalRepository );
68
69         archivaConfiguration.getConfiguration();
70         archivaConfigurationControl.setReturnValue( configuration );
71         archivaConfigurationControl.replay();
72
73         action.setRepoid( REPO_ID );
74
75         action.prepare();
76         assertEquals( REPO_ID, action.getRepoid() );
77         RemoteRepositoryConfiguration repository = action.getRepository();
78         assertNotNull( repository );
79         assertRepositoryEquals( repository, createRepository() );
80
81         String status = action.confirmDelete();
82         assertEquals( Action.INPUT, status );
83         repository = action.getRepository();
84         assertRepositoryEquals( repository, createRepository() );
85         assertEquals( Collections.singletonList( originalRepository ), configuration.getRemoteRepositories() );
86     }
87
88     public void testDeleteRemoteRepository()
89         throws RegistryException, IndeterminateConfigurationException
90     {
91         Configuration configuration = createConfigurationForEditing( createRepository() );
92         
93         archivaConfiguration.getConfiguration();
94         archivaConfigurationControl.setReturnValue( configuration );
95         archivaConfiguration.getConfiguration();
96         archivaConfigurationControl.setReturnValue( configuration );
97         
98         archivaConfiguration.save( configuration );
99         archivaConfigurationControl.replay();
100         
101         action.setRepoid( REPO_ID );
102         
103         action.prepare();
104         assertEquals( REPO_ID, action.getRepoid() );
105         RemoteRepositoryConfiguration repository = action.getRepository();
106         assertNotNull( repository );
107         assertRepositoryEquals( repository, createRepository() );
108         
109         String status = action.delete();
110         assertEquals( Action.SUCCESS, status );
111
112         assertTrue( configuration.getRemoteRepositories().isEmpty() );
113     }
114
115     public void testDeleteRemoteRepositoryCancelled()
116         throws Exception
117     {
118         RemoteRepositoryConfiguration originalRepository = createRepository();
119         Configuration configuration = createConfigurationForEditing( originalRepository );
120
121         archivaConfiguration.getConfiguration();
122         archivaConfigurationControl.setReturnValue( configuration );
123         archivaConfiguration.getConfiguration();
124         archivaConfigurationControl.setReturnValue( configuration );
125
126         archivaConfiguration.save( configuration );
127         archivaConfigurationControl.replay();
128
129         action.setRepoid( REPO_ID );
130
131         action.prepare();
132         assertEquals( REPO_ID, action.getRepoid() );
133         RemoteRepositoryConfiguration repositoryConfiguration = action.getRepository();
134         assertNotNull( repositoryConfiguration );
135         assertRepositoryEquals( repositoryConfiguration, createRepository() );
136
137         String status = action.execute();
138         assertEquals( Action.SUCCESS, status );
139
140         RemoteRepositoryConfiguration repository = action.getRepository();
141         assertRepositoryEquals( repository, createRepository() );
142         assertEquals( Collections.singletonList( originalRepository ), configuration.getRemoteRepositories() );
143     }
144
145     private Configuration createConfigurationForEditing( RemoteRepositoryConfiguration repositoryConfiguration )
146     {
147         Configuration configuration = new Configuration();
148         configuration.addRemoteRepository( repositoryConfiguration );
149         return configuration;
150     }
151     
152     private RemoteRepositoryConfiguration createRepository()
153     {
154         RemoteRepositoryConfiguration r = new RemoteRepositoryConfiguration();
155         r.setId( REPO_ID );
156         populateRepository( r );
157         return r;
158     }
159     
160     private void assertRepositoryEquals( RemoteRepositoryConfiguration expectedRepository,
161                                          RemoteRepositoryConfiguration actualRepository )
162     {
163         assertEquals( expectedRepository.getId(), actualRepository.getId() );
164         assertEquals( expectedRepository.getLayout(), actualRepository.getLayout() );
165         assertEquals( expectedRepository.getUrl(), actualRepository.getUrl() );
166         assertEquals( expectedRepository.getName(), actualRepository.getName() );
167     }
168
169     private void populateRepository( RemoteRepositoryConfiguration repository )
170     {
171         repository.setId( REPO_ID );
172         repository.setName( "repo name" );
173         repository.setUrl( "url" );
174         repository.setLayout( "default" );
175     }
176     
177     // TODO: what if there are proxy connectors attached to a deleted repository?
178     // TODO: what about removing proxied content if a proxy is removed?
179 }