]> source.dussan.org Git - archiva.git/blob
f221ee5ee8da20477b6c6d5eef253a8d041fe4ea
[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     private class MetadataRepositoryMock
121         implements MetadataRepository
122     {
123         private Date from, to;
124
125         private String repoId;
126
127         private List<ArtifactMetadata> artifactsByDateRange;
128
129         public List<ArtifactMetadata> getArtifactsByDateRange( String repoId, Date from, Date to )
130         {
131             setRepoId( repoId );
132             setFrom( from );
133             setTo( to );
134             return artifactsByDateRange;
135         }
136
137         public void addMetadataFacet( String arg0, MetadataFacet arg1 )
138         {
139             throw new UnsupportedOperationException();
140         }
141
142         public void removeArtifact( String arg0, String arg1, String arg2, String arg3, String arg4 )
143         {
144             throw new UnsupportedOperationException();
145         }
146
147         public void removeRepository( String arg0 )
148         {
149             throw new UnsupportedOperationException();
150         }
151
152         public List<ArtifactMetadata> getArtifactsByChecksum( String arg0, String arg1 )
153         {
154             throw new UnsupportedOperationException();
155         }
156
157         public MetadataFacet getMetadataFacet( String arg0, String arg1, String arg2 )
158         {
159             throw new UnsupportedOperationException();
160         }
161
162         public List<String> getMetadataFacets( String arg0, String arg1 )
163         {
164             throw new UnsupportedOperationException();
165         }
166
167         public Collection<String> getRepositories()
168         {
169             throw new UnsupportedOperationException();
170         }
171
172         public void removeMetadataFacet( String arg0, String arg1, String arg2 )
173         {
174             throw new UnsupportedOperationException();
175         }
176
177         public void removeMetadataFacets( String arg0, String arg1 )
178         {
179             throw new UnsupportedOperationException();
180         }
181
182         public void updateArtifact( String arg0, String arg1, String arg2, String arg3, ArtifactMetadata arg4 )
183         {
184             throw new UnsupportedOperationException();
185         }
186
187         public void updateNamespace( String arg0, String arg1 )
188         {
189             throw new UnsupportedOperationException();
190         }
191
192         public void updateProject( String arg0, ProjectMetadata arg1 )
193         {
194             throw new UnsupportedOperationException();
195         }
196
197         public void updateProjectReference( String arg0, String arg1, String arg2, String arg3,
198                                             ProjectVersionReference arg4 )
199         {
200             throw new UnsupportedOperationException();
201         }
202
203         public void updateProjectVersion( String arg0, String arg1, String arg2, ProjectVersionMetadata arg3 )
204         {
205             throw new UnsupportedOperationException();
206         }
207
208         public Collection<String> getArtifactVersions( String arg0, String arg1, String arg2, String arg3 )
209         {
210             throw new UnsupportedOperationException();
211         }
212
213         public Collection<ArtifactMetadata> getArtifacts( String arg0, String arg1, String arg2, String arg3 )
214         {
215             throw new UnsupportedOperationException();
216         }
217
218         public Collection<String> getNamespaces( String arg0, String arg1 )
219         {
220             throw new UnsupportedOperationException();
221         }
222
223         public ProjectMetadata getProject( String arg0, String arg1, String arg2 )
224         {
225             throw new UnsupportedOperationException();
226         }
227
228         public Collection<ProjectVersionReference> getProjectReferences( String arg0, String arg1, String arg2,
229                                                                          String arg3 )
230         {
231             throw new UnsupportedOperationException();
232         }
233
234         public ProjectVersionMetadata getProjectVersion( String arg0, String arg1, String arg2, String arg3 )
235             throws MetadataResolutionException
236         {
237             throw new UnsupportedOperationException();
238         }
239
240         public Collection<String> getProjectVersions( String arg0, String arg1, String arg2 )
241         {
242             throw new UnsupportedOperationException();
243         }
244
245         public Collection<String> getProjects( String arg0, String arg1 )
246         {
247             throw new UnsupportedOperationException();
248         }
249
250         public Collection<String> getRootNamespaces( String arg0 )
251         {
252             throw new UnsupportedOperationException();
253         }
254
255         public void setFrom( Date from )
256         {
257             this.from = from;
258         }
259
260         public Date getFrom()
261         {
262             return from;
263         }
264
265         public void setTo( Date to )
266         {
267             this.to = to;
268         }
269
270         public Date getTo()
271         {
272             return to;
273         }
274
275         public void setRepoId( String repoId )
276         {
277             this.repoId = repoId;
278         }
279
280         public String getRepoId()
281         {
282             return repoId;
283         }
284
285         public void setArtifactsByDateRange( List<ArtifactMetadata> artifactsByDateRange )
286         {
287             this.artifactsByDateRange = artifactsByDateRange;
288         }
289
290         public List<ArtifactMetadata> getArtifacts( String repositoryId )
291         {
292             return artifactsByDateRange;
293         }
294     }
295 }