package org.apache.archiva.rss; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import junit.framework.TestCase; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import javax.inject.Inject; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; /** * @version */ @RunWith( ArchivaSpringJUnit4ClassRunner.class ) @ContextConfiguration( locations = {"classpath*:/META-INF/spring-context.xml"} ) public class RssFeedGeneratorTest extends TestCase { @Inject private RssFeedGenerator generator; @Before @Override public void setUp() throws Exception { super.setUp(); } @SuppressWarnings("unchecked") @Test public void testNewFeed() throws Exception { List<RssFeedEntry> entries = new ArrayList<>(); RssFeedEntry entry = new RssFeedEntry( "Item 1" ); Date whenGathered = new Date( System.currentTimeMillis() ); entry.setDescription( "RSS 2.0 feed item 1." ); entry.setPublishedDate( whenGathered ); entries.add( entry ); entry = new RssFeedEntry( "Item 2" ); entry.setDescription( "RSS 2.0 feed item 2." ); entry.setPublishedDate( whenGathered ); entries.add( entry ); entry = new RssFeedEntry( "Item 3" ); entry.setDescription( "RSS 2.0 feed item 3." ); entry.setPublishedDate( whenGathered ); entries.add( entry ); SyndFeed feed = generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries ); assertEquals( "Test Feed", feed.getTitle() ); assertEquals( "The test feed from Archiva.", feed.getDescription() ); assertEquals( "en-us", feed.getLanguage() ); assertEquals( entries.get( 2 ).getPublishedDate(), feed.getPublishedDate() ); List<SyndEntry> syndEntries = feed.getEntries(); assertEquals( 3, syndEntries.size() ); assertEquals( "Item 1", syndEntries.get( 0 ).getTitle() ); assertEquals( "Item 2", syndEntries.get( 1 ).getTitle() ); assertEquals( "Item 3", syndEntries.get( 2 ).getTitle() ); } @Test public void testNoDataEntries() throws Exception { List<RssFeedEntry> entries = new ArrayList<>(); SyndFeed feed = generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries ); assertNull( feed ); } /* * this test might need to be removed since * no updates are happening in the feeds anymore since everything's processed from the db. * public void testUpdateFeed() throws Exception { generator.setRssDirectory( getBasedir() + "/target/test-classes/rss-feeds/" ); List<RssFeedEntry> entries = new ArrayList<RssFeedEntry>(); RssFeedEntry entry = new RssFeedEntry( "Item 1" ); entry.setDescription( "RSS 2.0 feed item 1." ); entries.add( entry ); entry = new RssFeedEntry( "Item 2" ); entry.setDescription( "RSS 2.0 feed item 2." ); entries.add( entry ); generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries, "generated-test-update-rss2.0-feed.xml" ); File outputFile = new File( getBasedir(), "/target/test-classes/rss-feeds/generated-test-update-rss2.0-feed.xml" ); String generatedContent = FileUtils.readFileToString( outputFile ); XMLAssert.assertXpathEvaluatesTo( "Test Feed", "//channel/title", generatedContent ); XMLAssert.assertXpathEvaluatesTo( "http://localhost:8080/archiva/rss/generated-test-update-rss2.0-feed.xml", "//channel/link", generatedContent ); XMLAssert.assertXpathEvaluatesTo( "The test feed from Archiva.", "//channel/description", generatedContent ); XMLAssert.assertXpathEvaluatesTo( "en-us", "//channel/language", generatedContent ); String expectedItem1 = "<channel><item><title>Item 1</title></item><item><title>Item 2</title></item></channel>"; XMLAssert.assertXpathsEqual( "//channel/item/title", expectedItem1, "//channel/item/title", generatedContent ); //update existing rss feed entries = new ArrayList<RssFeedEntry>(); entry = new RssFeedEntry( "Item 3" ); entry.setDescription( "RSS 2.0 feed item 3." ); entries.add( entry ); entry = new RssFeedEntry( "Item 4" ); entry.setDescription( "RSS 2.0 feed item 4." ); entries.add( entry ); generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries, "generated-test-update-rss2.0-feed.xml" ); outputFile = new File( getBasedir(), "/target/test-classes/rss-feeds/generated-test-update-rss2.0-feed.xml" ); generatedContent = FileUtils.readFileToString( outputFile ); XMLAssert.assertXpathEvaluatesTo( "Test Feed", "//channel/title", generatedContent ); XMLAssert.assertXpathEvaluatesTo( "http://localhost:8080/archiva/rss/generated-test-update-rss2.0-feed.xml", "//channel/link", generatedContent ); XMLAssert.assertXpathEvaluatesTo( "The test feed from Archiva.", "//channel/description", generatedContent ); XMLAssert.assertXpathEvaluatesTo( "en-us", "//channel/language", generatedContent ); expectedItem1 = "<channel><item><title>Item 1</title></item><item><title>Item 2</title></item>" + "<item><title>Item 3</title></item><item><title>Item 4</title></item></channel>"; XMLAssert.assertXpathsEqual( "//channel/item/title", expectedItem1, "//channel/item/title", generatedContent ); outputFile.deleteOnExit(); } */ }