1 package org.apache.archiva.rss; 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 junit.framework.TestCase; 25 import org.junit.Before; 26 import org.junit.Test; 27 import org.junit.runner.RunWith; 28 import org.springframework.test.context.ContextConfiguration; 29 30 import javax.inject.Inject; 31 import java.util.ArrayList; 32 import java.util.Date; 33 import java.util.List; 34 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; 35 36 /** 37 * @version 38 */ 39 @RunWith( ArchivaSpringJUnit4ClassRunner.class ) 40 @ContextConfiguration( locations = {"classpath*:/META-INF/spring-context.xml"} ) 41 public class RssFeedGeneratorTest 42 extends TestCase 43 { 44 @Inject 45 private RssFeedGenerator generator; 46 47 @Before 48 @Override 49 public void setUp() 50 throws Exception 51 { 52 super.setUp(); 53 54 } 55 56 @SuppressWarnings("unchecked") 57 @Test 58 public void testNewFeed() 59 throws Exception 60 { 61 List<RssFeedEntry> entries = new ArrayList<>(); 62 RssFeedEntry entry = new RssFeedEntry( "Item 1" ); 63 64 Date whenGathered = new Date( System.currentTimeMillis() ); 65 66 entry.setDescription( "RSS 2.0 feed item 1." ); 67 entry.setPublishedDate( whenGathered ); 68 entries.add( entry ); 69 70 entry = new RssFeedEntry( "Item 2" ); 71 entry.setDescription( "RSS 2.0 feed item 2." ); 72 entry.setPublishedDate( whenGathered ); 73 entries.add( entry ); 74 75 entry = new RssFeedEntry( "Item 3" ); 76 entry.setDescription( "RSS 2.0 feed item 3." ); 77 entry.setPublishedDate( whenGathered ); 78 entries.add( entry ); 79 80 SyndFeed feed = 81 generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries ); 82 83 assertEquals( "Test Feed", feed.getTitle() ); 84 assertEquals( "The test feed from Archiva.", feed.getDescription() ); 85 assertEquals( "en-us", feed.getLanguage() ); 86 assertEquals( entries.get( 2 ).getPublishedDate(), feed.getPublishedDate() ); 87 88 List<SyndEntry> syndEntries = feed.getEntries(); 89 assertEquals( 3, syndEntries.size() ); 90 assertEquals( "Item 1", syndEntries.get( 0 ).getTitle() ); 91 assertEquals( "Item 2", syndEntries.get( 1 ).getTitle() ); 92 assertEquals( "Item 3", syndEntries.get( 2 ).getTitle() ); 93 } 94 95 @Test 96 public void testNoDataEntries() 97 throws Exception 98 { 99 List<RssFeedEntry> entries = new ArrayList<>(); 100 SyndFeed feed = 101 generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries ); 102 103 assertNull( feed ); 104 } 105 106 /* 107 * this test might need to be removed since 108 * no updates are happening in the feeds anymore since everything's processed from the db. 109 * 110 public void testUpdateFeed() 111 throws Exception 112 { 113 generator.setRssDirectory( getBasedir() + "/target/test-classes/rss-feeds/" ); 114 115 List<RssFeedEntry> entries = new ArrayList<RssFeedEntry>(); 116 RssFeedEntry entry = new RssFeedEntry( "Item 1" ); 117 118 entry.setDescription( "RSS 2.0 feed item 1." ); 119 entries.add( entry ); 120 121 entry = new RssFeedEntry( "Item 2" ); 122 entry.setDescription( "RSS 2.0 feed item 2." ); 123 entries.add( entry ); 124 125 generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries, 126 "generated-test-update-rss2.0-feed.xml" ); 127 128 File outputFile = new File( getBasedir(), "/target/test-classes/rss-feeds/generated-test-update-rss2.0-feed.xml" ); 129 String generatedContent = FileUtils.readFileToString( outputFile ); 130 131 XMLAssert.assertXpathEvaluatesTo( "Test Feed", "//channel/title", generatedContent ); 132 XMLAssert.assertXpathEvaluatesTo( "http://localhost:8080/archiva/rss/generated-test-update-rss2.0-feed.xml", "//channel/link", generatedContent ); 133 XMLAssert.assertXpathEvaluatesTo( "The test feed from Archiva.", "//channel/description", generatedContent ); 134 XMLAssert.assertXpathEvaluatesTo( "en-us", "//channel/language", generatedContent ); 135 136 String expectedItem1 = 137 "<channel><item><title>Item 1</title></item><item><title>Item 2</title></item></channel>"; 138 139 XMLAssert.assertXpathsEqual( "//channel/item/title", expectedItem1, "//channel/item/title", generatedContent ); 140 141 //update existing rss feed 142 entries = new ArrayList<RssFeedEntry>(); 143 entry = new RssFeedEntry( "Item 3" ); 144 145 entry.setDescription( "RSS 2.0 feed item 3." ); 146 entries.add( entry ); 147 148 entry = new RssFeedEntry( "Item 4" ); 149 entry.setDescription( "RSS 2.0 feed item 4." ); 150 entries.add( entry ); 151 152 generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries, 153 "generated-test-update-rss2.0-feed.xml" ); 154 155 outputFile = new File( getBasedir(), "/target/test-classes/rss-feeds/generated-test-update-rss2.0-feed.xml" ); 156 generatedContent = FileUtils.readFileToString( outputFile ); 157 158 XMLAssert.assertXpathEvaluatesTo( "Test Feed", "//channel/title", generatedContent ); 159 XMLAssert.assertXpathEvaluatesTo( "http://localhost:8080/archiva/rss/generated-test-update-rss2.0-feed.xml", "//channel/link", generatedContent ); 160 XMLAssert.assertXpathEvaluatesTo( "The test feed from Archiva.", "//channel/description", generatedContent ); 161 XMLAssert.assertXpathEvaluatesTo( "en-us", "//channel/language", generatedContent ); 162 163 expectedItem1 = 164 "<channel><item><title>Item 1</title></item><item><title>Item 2</title></item>" 165 + "<item><title>Item 3</title></item><item><title>Item 4</title></item></channel>"; 166 XMLAssert.assertXpathsEqual( "//channel/item/title", expectedItem1, "//channel/item/title", generatedContent ); 167 168 outputFile.deleteOnExit(); 169 } 170 */ 171 172 }