You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RssFeedGeneratorTest.java 6.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package org.apache.archiva.rss;
  2. /*
  3. * Licensed to the Apache Software Foundation (ASF) under one
  4. * or more contributor license agreements. See the NOTICE file
  5. * distributed with this work for additional information
  6. * regarding copyright ownership. The ASF licenses this file
  7. * to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance
  9. * with the License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing,
  14. * software distributed under the License is distributed on an
  15. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  16. * KIND, either express or implied. See the License for the
  17. * specific language governing permissions and limitations
  18. * under the License.
  19. */
  20. import com.sun.syndication.feed.synd.SyndEntry;
  21. import com.sun.syndication.feed.synd.SyndFeed;
  22. import junit.framework.TestCase;
  23. import org.junit.Before;
  24. import org.junit.Test;
  25. import org.junit.runner.RunWith;
  26. import org.springframework.test.context.ContextConfiguration;
  27. import javax.inject.Inject;
  28. import java.util.ArrayList;
  29. import java.util.Date;
  30. import java.util.List;
  31. import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
  32. /**
  33. * @version
  34. */
  35. @RunWith( ArchivaSpringJUnit4ClassRunner.class )
  36. @ContextConfiguration( locations = {"classpath*:/META-INF/spring-context.xml"} )
  37. public class RssFeedGeneratorTest
  38. extends TestCase
  39. {
  40. @Inject
  41. private RssFeedGenerator generator;
  42. @Before
  43. public void setUp()
  44. throws Exception
  45. {
  46. super.setUp();
  47. }
  48. @SuppressWarnings("unchecked")
  49. @Test
  50. public void testNewFeed()
  51. throws Exception
  52. {
  53. List<RssFeedEntry> entries = new ArrayList<>();
  54. RssFeedEntry entry = new RssFeedEntry( "Item 1" );
  55. Date whenGathered = new Date( System.currentTimeMillis() );
  56. entry.setDescription( "RSS 2.0 feed item 1." );
  57. entry.setPublishedDate( whenGathered );
  58. entries.add( entry );
  59. entry = new RssFeedEntry( "Item 2" );
  60. entry.setDescription( "RSS 2.0 feed item 2." );
  61. entry.setPublishedDate( whenGathered );
  62. entries.add( entry );
  63. entry = new RssFeedEntry( "Item 3" );
  64. entry.setDescription( "RSS 2.0 feed item 3." );
  65. entry.setPublishedDate( whenGathered );
  66. entries.add( entry );
  67. SyndFeed feed =
  68. generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries );
  69. assertEquals( "Test Feed", feed.getTitle() );
  70. assertEquals( "The test feed from Archiva.", feed.getDescription() );
  71. assertEquals( "en-us", feed.getLanguage() );
  72. assertEquals( entries.get( 2 ).getPublishedDate(), feed.getPublishedDate() );
  73. List<SyndEntry> syndEntries = feed.getEntries();
  74. assertEquals( 3, syndEntries.size() );
  75. assertEquals( "Item 1", syndEntries.get( 0 ).getTitle() );
  76. assertEquals( "Item 2", syndEntries.get( 1 ).getTitle() );
  77. assertEquals( "Item 3", syndEntries.get( 2 ).getTitle() );
  78. }
  79. @Test
  80. public void testNoDataEntries()
  81. throws Exception
  82. {
  83. List<RssFeedEntry> entries = new ArrayList<>();
  84. SyndFeed feed =
  85. generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries );
  86. assertNull( feed );
  87. }
  88. /*
  89. * this test might need to be removed since
  90. * no updates are happening in the feeds anymore since everything's processed from the db.
  91. *
  92. public void testUpdateFeed()
  93. throws Exception
  94. {
  95. generator.setRssDirectory( getBasedir() + "/target/test-classes/rss-feeds/" );
  96. List<RssFeedEntry> entries = new ArrayList<RssFeedEntry>();
  97. RssFeedEntry entry = new RssFeedEntry( "Item 1" );
  98. entry.setDescription( "RSS 2.0 feed item 1." );
  99. entries.add( entry );
  100. entry = new RssFeedEntry( "Item 2" );
  101. entry.setDescription( "RSS 2.0 feed item 2." );
  102. entries.add( entry );
  103. generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries,
  104. "generated-test-update-rss2.0-feed.xml" );
  105. File outputFile = new File( getBasedir(), "/target/test-classes/rss-feeds/generated-test-update-rss2.0-feed.xml" );
  106. String generatedContent = FileUtils.readFileToString( outputFile );
  107. XMLAssert.assertXpathEvaluatesTo( "Test Feed", "//channel/title", generatedContent );
  108. XMLAssert.assertXpathEvaluatesTo( "http://localhost:8080/archiva/rss/generated-test-update-rss2.0-feed.xml", "//channel/link", generatedContent );
  109. XMLAssert.assertXpathEvaluatesTo( "The test feed from Archiva.", "//channel/description", generatedContent );
  110. XMLAssert.assertXpathEvaluatesTo( "en-us", "//channel/language", generatedContent );
  111. String expectedItem1 =
  112. "<channel><item><title>Item 1</title></item><item><title>Item 2</title></item></channel>";
  113. XMLAssert.assertXpathsEqual( "//channel/item/title", expectedItem1, "//channel/item/title", generatedContent );
  114. //update existing rss feed
  115. entries = new ArrayList<RssFeedEntry>();
  116. entry = new RssFeedEntry( "Item 3" );
  117. entry.setDescription( "RSS 2.0 feed item 3." );
  118. entries.add( entry );
  119. entry = new RssFeedEntry( "Item 4" );
  120. entry.setDescription( "RSS 2.0 feed item 4." );
  121. entries.add( entry );
  122. generator.generateFeed( "Test Feed", "The test feed from Archiva.", entries,
  123. "generated-test-update-rss2.0-feed.xml" );
  124. outputFile = new File( getBasedir(), "/target/test-classes/rss-feeds/generated-test-update-rss2.0-feed.xml" );
  125. generatedContent = FileUtils.readFileToString( outputFile );
  126. XMLAssert.assertXpathEvaluatesTo( "Test Feed", "//channel/title", generatedContent );
  127. XMLAssert.assertXpathEvaluatesTo( "http://localhost:8080/archiva/rss/generated-test-update-rss2.0-feed.xml", "//channel/link", generatedContent );
  128. XMLAssert.assertXpathEvaluatesTo( "The test feed from Archiva.", "//channel/description", generatedContent );
  129. XMLAssert.assertXpathEvaluatesTo( "en-us", "//channel/language", generatedContent );
  130. expectedItem1 =
  131. "<channel><item><title>Item 1</title></item><item><title>Item 2</title></item>"
  132. + "<item><title>Item 3</title></item><item><title>Item 4</title></item></channel>";
  133. XMLAssert.assertXpathsEqual( "//channel/item/title", expectedItem1, "//channel/item/title", generatedContent );
  134. outputFile.deleteOnExit();
  135. }
  136. */
  137. }