diff --git a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/input/record/reader/RSSRecordReaderTest.java b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/input/record/reader/RSSRecordReaderTest.java
index ca94a3f..5033b55 100644
--- a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/input/record/reader/RSSRecordReaderTest.java
+++ b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/input/record/reader/RSSRecordReaderTest.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.external.input.record.reader;
 
+import com.rometools.rome.feed.synd.SyndEntry;
+import org.apache.asterix.external.api.IRawRecord;
 import org.apache.asterix.external.input.record.reader.rss.RSSRecordReader;
 import org.junit.Assert;
 import org.junit.Test;
@@ -39,4 +41,25 @@
         Assert.assertNotNull(expectedException);
         Assert.assertTrue(expectedException.getMessage().contains("UnknownHostException"));
     }
+
+    private static final int NO_RECORDS = 10;
+
+    @Test
+    public void fetchFromLoremWebsite() throws MalformedURLException {
+        String dummyRssFeedURL = "http://lorem-rss.herokuapp.com/feed";
+        RSSRecordReader rssRecordReader = new RSSRecordReader(dummyRssFeedURL);
+        Exception expectedException = null;
+        int cnt = 0;
+        try {
+            while (rssRecordReader.hasNext() && cnt < NO_RECORDS) {
+                IRawRecord<SyndEntry> rec = rssRecordReader.next();
+                ++cnt;
+                Assert.assertTrue(rec.get().getTitle().startsWith("Lorem ipsum"));
+            }
+        } catch (Exception e) {
+            expectedException = e;
+        }
+        Assert.assertEquals(cnt, NO_RECORDS);
+        Assert.assertNull(expectedException);
+    }
 }
