]> source.dussan.org Git - archiva.git/blob
c13829d580adc4c58f7e4064b632d68434f2414f
[archiva.git] /
1 package org.apache.maven.archiva.web.action;
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 net.sf.beanlib.provider.replicator.BeanReplicator;
23 import org.apache.archiva.admin.model.managed.ManagedRepository;
24 import org.apache.archiva.metadata.model.ArtifactMetadata;
25 import org.apache.archiva.metadata.repository.MetadataRepository;
26 import org.apache.archiva.metadata.repository.RepositorySession;
27 import org.apache.archiva.metadata.repository.memory.TestRepositorySessionFactory;
28 import org.apache.commons.lang.StringUtils;
29 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
30 import org.apache.maven.archiva.configuration.Configuration;
31 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
32 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
33 import org.apache.maven.archiva.repository.RepositoryContentFactory;
34 import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
35 import org.apache.struts2.StrutsSpringTestCase;
36 import org.easymock.MockControl;
37 import org.easymock.classextension.MockClassControl;
38
39 import java.io.File;
40 import java.util.ArrayList;
41
42 import static org.mockito.Mockito.mock;
43 import static org.mockito.Mockito.when;
44
45 public class DeleteArtifactActionTest
46     extends StrutsSpringTestCase
47 {
48     private DeleteArtifactAction action;
49
50     private ArchivaConfiguration configuration;
51
52     private MockControl configurationControl;
53
54     private RepositoryContentFactory repositoryFactory;
55
56     private MockControl repositoryFactoryControl;
57
58     private MetadataRepository metadataRepository;
59
60     private MockControl metadataRepositoryControl;
61
62     private static final String REPOSITORY_ID = "test-repo";
63
64     private static final String GROUP_ID = "org.apache.archiva";
65
66     private static final String ARTIFACT_ID = "npe-metadata";
67
68     private static final String VERSION = "1.0";
69
70     private static final String REPO_LOCATION = "target/test-classes/test-repo";
71
72     @Override
73     protected String[] getContextLocations()
74     {
75         return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" };
76     }
77
78     @Override
79     protected void setUp()
80         throws Exception
81     {
82         super.setUp();
83
84         //action = (DeleteArtifactAction) lookup( Action.class.getName(), "deleteArtifactAction" );
85         action = (DeleteArtifactAction) getActionProxy( "/deleteArtifact.action" ).getAction();
86         assertNotNull( action );
87
88         configurationControl = MockControl.createControl( ArchivaConfiguration.class );
89         configuration = (ArchivaConfiguration) configurationControl.getMock();
90
91         repositoryFactoryControl = MockClassControl.createControl( RepositoryContentFactory.class );
92         repositoryFactory = (RepositoryContentFactory) repositoryFactoryControl.getMock();
93
94         metadataRepositoryControl = MockControl.createControl( MetadataRepository.class );
95         metadataRepository = (MetadataRepository) metadataRepositoryControl.getMock();
96
97         RepositorySession repositorySession = mock( RepositorySession.class );
98         when( repositorySession.getRepository() ).thenReturn( metadataRepository );
99
100         TestRepositorySessionFactory repositorySessionFactory =
101             applicationContext.getBean( "repositorySessionFactory#test", TestRepositorySessionFactory.class );
102
103         repositorySessionFactory.setRepositorySession( repositorySession );
104
105         action.setConfiguration( configuration );
106         action.setRepositoryFactory( repositoryFactory );
107     }
108
109     @Override
110     protected void tearDown()
111         throws Exception
112     {
113         action = null;
114
115         super.tearDown();
116     }
117
118     public void testGetListeners()
119         throws Exception
120     {
121         assertNotNull( action.getListeners() );
122         assertFalse( action.getListeners().isEmpty() );
123     }
124
125     public void testNPEInDeleteArtifact()
126         throws Exception
127     {
128         action.setGroupId( GROUP_ID );
129         action.setArtifactId( ARTIFACT_ID );
130         action.setVersion( VERSION );
131         action.setRepositoryId( REPOSITORY_ID );
132
133         Configuration config = createConfiguration();
134
135         ManagedRepositoryContent repoContent = new ManagedDefaultRepositoryContent();
136         repoContent.setRepository(
137             new BeanReplicator().replicateBean( config.findManagedRepositoryById( REPOSITORY_ID ),
138                                                 ManagedRepository.class ) );
139
140         configurationControl.expectAndReturn( configuration.getConfiguration(), config );
141         repositoryFactoryControl.expectAndReturn( repositoryFactory.getManagedRepositoryContent( REPOSITORY_ID ),
142                                                   repoContent );
143         metadataRepositoryControl.expectAndReturn(
144             metadataRepository.getArtifacts( REPOSITORY_ID, GROUP_ID, ARTIFACT_ID, VERSION ),
145             new ArrayList<ArtifactMetadata>() );
146
147         configurationControl.replay();
148         repositoryFactoryControl.replay();
149         metadataRepositoryControl.replay();
150
151         action.doDelete();
152
153         String artifactPath = REPO_LOCATION + "/" + StringUtils.replace( GROUP_ID, ".", "/" ) + "/"
154             + StringUtils.replace( ARTIFACT_ID, ".", "/" ) + "/" + VERSION + "/" + ARTIFACT_ID + "-" + VERSION;
155
156         assertFalse( new File( artifactPath + ".jar" ).exists() );
157         assertFalse( new File( artifactPath + ".jar.sha1" ).exists() );
158         assertFalse( new File( artifactPath + ".jar.md5" ).exists() );
159
160         assertFalse( new File( artifactPath + ".pom" ).exists() );
161         assertFalse( new File( artifactPath + ".pom.sha1" ).exists() );
162         assertFalse( new File( artifactPath + ".pom.md5" ).exists() );
163     }
164
165     private Configuration createConfiguration()
166     {
167         ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration();
168         managedRepo.setId( REPOSITORY_ID );
169         managedRepo.setName( "Test Repository" );
170
171         managedRepo.setLocation( REPO_LOCATION );
172         managedRepo.setReleases( true );
173
174         Configuration config = new Configuration();
175         config.addManagedRepository( managedRepo );
176
177         return config;
178     }
179 }