]> source.dussan.org Git - archiva.git/blob
796f32dabdb86c45296e368dd5faa47040a6930a
[archiva.git] /
1 package org.apache.archiva.rss.processor;
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.sun.syndication.feed.synd.SyndEntry;
23 import com.sun.syndication.feed.synd.SyndFeed;
24 import org.apache.archiva.metadata.model.ArtifactMetadata;
25 import org.apache.archiva.metadata.model.MetadataFacet;
26 import org.apache.archiva.metadata.model.ProjectMetadata;
27 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
28 import org.apache.archiva.metadata.model.ProjectVersionReference;
29 import org.apache.archiva.metadata.repository.MetadataRepository;
30 import org.apache.archiva.metadata.repository.MetadataResolutionException;
31 import org.apache.archiva.rss.RssFeedGenerator;
32 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
33
34 import java.util.ArrayList;
35 import java.util.Calendar;
36 import java.util.Collection;
37 import java.util.Date;
38 import java.util.HashMap;
39 import java.util.List;
40 import java.util.Map;
41 import java.util.TimeZone;
42
43 public class NewArtifactsRssFeedProcessorTest
44     extends PlexusInSpringTestCase
45 {
46     private static final String TEST_REPO = "test-repo";
47
48     private NewArtifactsRssFeedProcessor newArtifactsProcessor;
49
50     private MetadataRepositoryMock metadataRepository;
51
52     @Override
53     public void setUp()
54         throws Exception
55     {
56         super.setUp();
57
58         newArtifactsProcessor = new NewArtifactsRssFeedProcessor();
59         newArtifactsProcessor.setGenerator( new RssFeedGenerator() );
60
61         metadataRepository = new MetadataRepositoryMock();
62     }
63
64     @SuppressWarnings( "unchecked" )
65     public void testProcess()
66         throws Exception
67     {
68         List<ArtifactMetadata> newArtifacts = new ArrayList<ArtifactMetadata>();
69         Date whenGathered = Calendar.getInstance().getTime();
70
71         newArtifacts.add( createArtifact( "artifact-one", "1.0", whenGathered ) );
72         newArtifacts.add( createArtifact( "artifact-one", "1.1", whenGathered ) );
73         newArtifacts.add( createArtifact( "artifact-one", "2.0", whenGathered ) );
74         newArtifacts.add( createArtifact( "artifact-two", "1.0.1", whenGathered ) );
75         newArtifacts.add( createArtifact( "artifact-two", "1.0.2", whenGathered ) );
76         newArtifacts.add( createArtifact( "artifact-two", "1.0.3-SNAPSHOT", whenGathered ) );
77         newArtifacts.add( createArtifact( "artifact-three", "2.0-SNAPSHOT", whenGathered ) );
78         newArtifacts.add( createArtifact( "artifact-four", "1.1-beta-2", whenGathered ) );
79
80         metadataRepository.setArtifactsByDateRange( newArtifacts );
81
82         Map<String, String> reqParams = new HashMap<String, String>();
83         reqParams.put( RssFeedProcessor.KEY_REPO_ID, TEST_REPO );
84
85         SyndFeed feed = newArtifactsProcessor.process( reqParams, metadataRepository );
86
87         // check that the date used in the call is close to the one passed (5 seconds difference at most)
88         Calendar cal = Calendar.getInstance( TimeZone.getTimeZone( "GMT" ) );
89         cal.add( Calendar.DATE, -30 );
90         assertTrue( ( metadataRepository.getFrom().getTime() - cal.getTimeInMillis() ) < 1000 * 5 );
91         assertEquals( null, metadataRepository.getTo() );
92         assertEquals( TEST_REPO, metadataRepository.getRepoId() );
93
94         assertTrue( feed.getTitle().equals( "New Artifacts in Repository 'test-repo'" ) );
95         assertTrue( feed.getDescription().equals(
96             "New artifacts found in repository 'test-repo' during repository scan." ) );
97         assertTrue( feed.getLanguage().equals( "en-us" ) );
98         assertTrue( feed.getPublishedDate().equals( whenGathered ) );
99
100         List<SyndEntry> entries = feed.getEntries();
101         assertEquals( entries.size(), 1 );
102         assertTrue( entries.get( 0 ).getTitle().equals(
103             "New Artifacts in Repository 'test-repo' as of " + whenGathered ) );
104         assertTrue( entries.get( 0 ).getPublishedDate().equals( whenGathered ) );
105     }
106
107     private ArtifactMetadata createArtifact( String artifactId, String version, Date whenGathered )
108     {
109         ArtifactMetadata artifact = new ArtifactMetadata();
110         artifact.setNamespace( "org.apache.archiva" );
111         artifact.setId( artifactId + "-" + version + ".jar" );
112         artifact.setRepositoryId( TEST_REPO );
113         artifact.setWhenGathered( whenGathered );
114         artifact.setProject( artifactId );
115         artifact.setProjectVersion( version );
116         artifact.setVersion( version );
117         return artifact;
118     }
119
120     // TODO: replace with mockito
121     private class MetadataRepositoryMock
122         implements MetadataRepository
123     {
124         private Date from, to;
125
126         private String repoId;
127
128         private List<ArtifactMetadata> artifactsByDateRange;
129
130         public List<ArtifactMetadata> getArtifactsByDateRange( String repoId, Date from, Date to )
131         {
132             setRepoId( repoId );
133             setFrom( from );
134             setTo( to );
135             return artifactsByDateRange;
136         }
137
138         public void addMetadataFacet( String arg0, MetadataFacet arg1 )
139         {
140             throw new UnsupportedOperationException();
141         }
142
143         public void removeArtifact( String arg0, String arg1, String arg2, String arg3, String arg4 )
144         {
145             throw new UnsupportedOperationException();
146         }
147
148         public void removeRepository( String arg0 )
149         {
150             throw new UnsupportedOperationException();
151         }
152
153         public List<ArtifactMetadata> getArtifactsByChecksum( String arg0, String arg1 )
154         {
155             throw new UnsupportedOperationException();
156         }
157
158         public MetadataFacet getMetadataFacet( String arg0, String arg1, String arg2 )
159         {
160             throw new UnsupportedOperationException();
161         }
162
163         public List<String> getMetadataFacets( String arg0, String arg1 )
164         {
165             throw new UnsupportedOperationException();
166         }
167
168         public Collection<String> getRepositories()
169         {
170             throw new UnsupportedOperationException();
171         }
172
173         public void removeMetadataFacet( String arg0, String arg1, String arg2 )
174         {
175             throw new UnsupportedOperationException();
176         }
177
178         public void removeMetadataFacets( String arg0, String arg1 )
179         {
180             throw new UnsupportedOperationException();
181         }
182
183         public void updateArtifact( String arg0, String arg1, String arg2, String arg3, ArtifactMetadata arg4 )
184         {
185             throw new UnsupportedOperationException();
186         }
187
188         public void updateNamespace( String arg0, String arg1 )
189         {
190             throw new UnsupportedOperationException();
191         }
192
193         public void updateProject( String arg0, ProjectMetadata arg1 )
194         {
195             throw new UnsupportedOperationException();
196         }
197
198         public void updateProjectReference( String arg0, String arg1, String arg2, String arg3,
199                                             ProjectVersionReference arg4 )
200         {
201             throw new UnsupportedOperationException();
202         }
203
204         public void updateProjectVersion( String arg0, String arg1, String arg2, ProjectVersionMetadata arg3 )
205         {
206             throw new UnsupportedOperationException();
207         }
208
209         public Collection<String> getArtifactVersions( String arg0, String arg1, String arg2, String arg3 )
210         {
211             throw new UnsupportedOperationException();
212         }
213
214         public Collection<ArtifactMetadata> getArtifacts( String arg0, String arg1, String arg2, String arg3 )
215         {
216             throw new UnsupportedOperationException();
217         }
218
219         public void save()
220         {
221             throw new UnsupportedOperationException();
222         }
223
224         public void close()
225         {
226             throw new UnsupportedOperationException();
227         }
228
229         public void revert()
230         {
231             throw new UnsupportedOperationException();
232         }
233
234         public boolean canObtainAccess( Class<?> aClass )
235         {
236             return false;
237         }
238
239         public Object obtainAccess( Class<?> aClass )
240         {
241             throw new UnsupportedOperationException();
242         }
243
244         public Collection<String> getNamespaces( String arg0, String arg1 )
245         {
246             throw new UnsupportedOperationException();
247         }
248
249         public ProjectMetadata getProject( String arg0, String arg1, String arg2 )
250         {
251             throw new UnsupportedOperationException();
252         }
253
254         public Collection<ProjectVersionReference> getProjectReferences( String arg0, String arg1, String arg2,
255                                                                          String arg3 )
256         {
257             throw new UnsupportedOperationException();
258         }
259
260         public ProjectVersionMetadata getProjectVersion( String arg0, String arg1, String arg2, String arg3 )
261             throws MetadataResolutionException
262         {
263             throw new UnsupportedOperationException();
264         }
265
266         public Collection<String> getProjectVersions( String arg0, String arg1, String arg2 )
267         {
268             throw new UnsupportedOperationException();
269         }
270
271         public Collection<String> getProjects( String arg0, String arg1 )
272         {
273             throw new UnsupportedOperationException();
274         }
275
276         public Collection<String> getRootNamespaces( String arg0 )
277         {
278             throw new UnsupportedOperationException();
279         }
280
281         public void setFrom( Date from )
282         {
283             this.from = from;
284         }
285
286         public Date getFrom()
287         {
288             return from;
289         }
290
291         public void setTo( Date to )
292         {
293             this.to = to;
294         }
295
296         public Date getTo()
297         {
298             return to;
299         }
300
301         public void setRepoId( String repoId )
302         {
303             this.repoId = repoId;
304         }
305
306         public String getRepoId()
307         {
308             return repoId;
309         }
310
311         public void setArtifactsByDateRange( List<ArtifactMetadata> artifactsByDateRange )
312         {
313             this.artifactsByDateRange = artifactsByDateRange;
314         }
315
316         public List<ArtifactMetadata> getArtifacts( String repositoryId )
317         {
318             return artifactsByDateRange;
319         }
320     }
321 }