/* ********************************************************************** **
** Copyright notice **
** **
** (c) 2005-2009 RSSOwl Development Team **
** http://www.rssowl.org/ **
** **
** All rights reserved **
** **
** This program and the accompanying materials are made available under **
** the terms of the Eclipse Public License v1.0 which accompanies this **
** distribution, and is available at: **
** http://www.rssowl.org/legal/epl-v10.html **
** **
** A copy is found in the file epl-v10.html and important notices to the **
** license from the team is found in the textfile LICENSE.txt distributed **
** in this package. **
** **
** This copyright notice MUST APPEAR in all copies of the file! **
** **
** Contributors: **
** RSSOwl Development Team - initial API and implementation **
** **
** ********************************************************************** */
package org.rssowl.core.tests.connection;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.fail;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.rssowl.core.Owl;
import org.rssowl.core.connection.AuthenticationRequiredException;
import org.rssowl.core.connection.HttpConnectionInputStream;
import org.rssowl.core.connection.IConditionalGetCompatible;
import org.rssowl.core.connection.IConnectionPropertyConstants;
import org.rssowl.core.connection.IConnectionService;
import org.rssowl.core.connection.ICredentials;
import org.rssowl.core.connection.ICredentialsProvider;
import org.rssowl.core.connection.IProtocolHandler;
import org.rssowl.core.connection.IProxyCredentials;
import org.rssowl.core.connection.NotModifiedException;
import org.rssowl.core.connection.PlatformCredentialsProvider;
import org.rssowl.core.internal.connection.DefaultProtocolHandler;
import org.rssowl.core.internal.persist.Feed;
import org.rssowl.core.internal.persist.service.PersistenceServiceImpl;
import org.rssowl.core.interpreter.EncodingException;
import org.rssowl.core.persist.IConditionalGet;
import org.rssowl.core.persist.IEntity;
import org.rssowl.core.persist.IFeed;
import org.rssowl.core.persist.dao.DynamicDAO;
import org.rssowl.core.persist.reference.FeedLinkReference;
import org.rssowl.core.util.RegExUtils;
import org.rssowl.core.util.StringUtils;
import org.rssowl.core.util.SyncUtils;
import org.rssowl.core.util.Triple;
import org.rssowl.core.util.URIUtils;
import org.rssowl.ui.internal.Controller;
import org.rssowl.ui.internal.LinkTransformer;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* This TestCase covers use-cases for the Connection Plugin.
*
* @author bpasero
*/
public class ConnectionTests {
/**
* @throws Exception
*/
@Before
public void setUp() throws Exception {
((PersistenceServiceImpl) Owl.getPersistenceService()).recreateSchemaForTests();
}
/**
* Test contribution of Credentials Provider.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testProxyCredentialProvider() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/authrequired/feed_rdf.xml");
IFeed feed = new Feed(feedUrl);
IProxyCredentials proxyCredentials = conManager.getProxyCredentials(feed.getLink());
assertEquals("", proxyCredentials.getDomain());
assertEquals("bpasero", proxyCredentials.getUsername());
assertEquals("admin", proxyCredentials.getPassword());
assertEquals("127.0.0.1", proxyCredentials.getHost());
assertEquals(0, proxyCredentials.getPort());
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testGetLabel() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.rssowl.org/node/feed");
String label = conManager.getLabel(feedUrl, new NullProgressMonitor());
assertEquals("RSSOwl News", label);
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testGetFavicon() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.rssowl.org/node/feed");
byte[] feedIcon = conManager.getFeedIcon(feedUrl, new NullProgressMonitor());
assertNotNull(feedIcon);
assertTrue(feedIcon.length != 0);
}
/**
* @throws Exception
*/
@Test
public void testHttpConnectionInputStream() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI url = new URI("http://www.rssowl.org/favicon.ico");
IProtocolHandler handler = conManager.getHandler(url);
InputStream stream = handler.openStream(url, null, null);
if (stream instanceof HttpConnectionInputStream) {
HttpConnectionInputStream inS = (HttpConnectionInputStream) stream;
assertTrue(inS.getContentLength() > 0);
assertNotNull(inS.getIfModifiedSince());
assertNotNull(inS.getIfNoneMatch());
}
}
/**
* Test a protected Feed.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testProtectedFeed() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl1 = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/authrequired/feed_rss.xml");
URI feedUrl2 = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/authrequired/feed_rss_copy.xml");
ICredentialsProvider credProvider = conManager.getCredentialsProvider(feedUrl1);
IFeed feed1 = new Feed(feedUrl1);
IFeed feed2 = new Feed(feedUrl2);
AuthenticationRequiredException e = null;
DynamicDAO.save(feed1);
DynamicDAO.save(feed2);
try {
Owl.getConnectionService().getHandler(feed1.getLink()).openStream(feed1.getLink(), null, null);
} catch (AuthenticationRequiredException e1) {
e = e1;
}
assertNotNull(e);
e = null;
ICredentials credentials = new ICredentials() {
public String getDomain() {
return null;
}
public String getPassword() {
return "admin";
}
public String getUsername() {
return "bpasero";
}
};
credProvider.setAuthCredentials(credentials, feedUrl1, null);
InputStream inS = Owl.getConnectionService().getHandler(feed1.getLink()).openStream(feed1.getLink(), null, null);
assertNotNull(inS);
Owl.getInterpreter().interpret(inS, feed1, null);
assertEquals("RSS 2.0", feed1.getFormat());
/* Test authentication by other realm is not working */
credProvider.setAuthCredentials(credentials, URIUtils.normalizeUri(feedUrl2, true), "Other Directory");
try {
Owl.getConnectionService().getHandler(feed2.getLink()).openStream(feed2.getLink(), null, null);
} catch (AuthenticationRequiredException e1) {
e = e1;
}
assertNotNull(e);
/* Test authentication by realm is working */
credProvider.setAuthCredentials(credentials, URIUtils.normalizeUri(feedUrl2, true), "Restricted Directory");
inS = Owl.getConnectionService().getHandler(feed2.getLink()).openStream(feed2.getLink(), null, null);
assertNotNull(inS);
Owl.getInterpreter().interpret(inS, feed2, null);
assertEquals("RSS 2.0", feed2.getFormat());
DynamicDAO.delete(feed1);
DynamicDAO.delete(feed2);
assertNull(conManager.getAuthCredentials(feed1.getLink(), null));
assertNull(conManager.getAuthCredentials(feed2.getLink(), null));
((PlatformCredentialsProvider) conManager.getCredentialsProvider(feedUrl2)).clear();
}
/**
* Test a protected Feed.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testProtectedFeedInMemory() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl1 = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/authrequired/feed_rss.xml");
URI feedUrl2 = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/authrequired/feed_rss_copy.xml");
ICredentialsProvider credProvider = conManager.getCredentialsProvider(feedUrl1);
IFeed feed1 = new Feed(feedUrl1);
IFeed feed2 = new Feed(feedUrl2);
AuthenticationRequiredException e = null;
DynamicDAO.save(feed1);
DynamicDAO.save(feed2);
try {
Owl.getConnectionService().getHandler(feed1.getLink()).openStream(feed1.getLink(), null, null);
} catch (AuthenticationRequiredException e1) {
e = e1;
}
assertNotNull(e);
e = null;
ICredentials credentials = new ICredentials() {
public String getDomain() {
return null;
}
public String getPassword() {
return "admin";
}
public String getUsername() {
return "bpasero";
}
};
credProvider.setInMemoryAuthCredentials(credentials, feedUrl1, null);
InputStream inS = Owl.getConnectionService().getHandler(feed1.getLink()).openStream(feed1.getLink(), null, null);
assertNotNull(inS);
Owl.getInterpreter().interpret(inS, feed1, null);
assertEquals("RSS 2.0", feed1.getFormat());
/* Test authentication by other realm is not working */
credProvider.setInMemoryAuthCredentials(credentials, URIUtils.normalizeUri(feedUrl2, true), "Other Directory");
try {
Owl.getConnectionService().getHandler(feed2.getLink()).openStream(feed2.getLink(), null, null);
} catch (AuthenticationRequiredException e1) {
e = e1;
}
assertNotNull(e);
/* Test authentication by realm is working */
credProvider.setInMemoryAuthCredentials(credentials, URIUtils.normalizeUri(feedUrl2, true), "Restricted Directory");
inS = Owl.getConnectionService().getHandler(feed2.getLink()).openStream(feed2.getLink(), null, null);
assertNotNull(inS);
Owl.getInterpreter().interpret(inS, feed2, null);
assertEquals("RSS 2.0", feed2.getFormat());
assertNull(conManager.getCredentialsProvider(feed1.getLink()).getPersistedAuthCredentials(feed1.getLink(), null));
assertNull(conManager.getCredentialsProvider(feed2.getLink()).getPersistedAuthCredentials(feed2.getLink(), null));
DynamicDAO.delete(feed1);
DynamicDAO.delete(feed2);
assertNull(conManager.getAuthCredentials(feed1.getLink(), null));
assertNull(conManager.getAuthCredentials(feed2.getLink(), null));
((PlatformCredentialsProvider) conManager.getCredentialsProvider(feedUrl2)).clear();
}
/**
* Test a normal Feed via HTTP Protocol.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testHTTPFeed() throws Exception {
URI feedUrl = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/rss_2_0.xml");
IFeed feed = new Feed(feedUrl);
InputStream inS = Owl.getConnectionService().getHandler(feed.getLink()).openStream(feed.getLink(), null, null);
assertNotNull(inS);
Owl.getInterpreter().interpret(inS, feed, null);
assertEquals("RSS 2.0", feed.getFormat());
}
/**
* Test a normal Feed via FEED Protocol.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testFEEDFeed() throws Exception {
URI feedUrl = new URI("feed://www.rssowl.org/rssowl2dg/tests/connection/rss_2_0.xml");
IFeed feed = new Feed(feedUrl);
InputStream inS = Owl.getConnectionService().getHandler(feed.getLink()).openStream(feed.getLink(), null, null);
assertNotNull(inS);
Owl.getInterpreter().interpret(inS, feed, null);
assertEquals("RSS 2.0", feed.getFormat());
}
/**
* Test a normal Feed via HTTP Protocol.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testHTTPSFeed() throws Exception {
URI feedUrl = new URI("https://sourceforge.net/export/rss2_projnews.php?group_id=141424&rss_fulltext=1");
IFeed feed = new Feed(feedUrl);
InputStream inS = Owl.getConnectionService().getHandler(feed.getLink()).openStream(feed.getLink(), null, null);
assertNotNull(inS);
Owl.getInterpreter().interpret(inS, feed, null);
assertEquals("RSS 2.0", feed.getFormat());
}
/**
* Test a normal Feed via FILE Protocol.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testFILEFeed() throws Exception {
URL pluginLocation = FileLocator.toFileURL(Platform.getBundle("org.rssowl.core.tests").getEntry("/"));
IConnectionService conManager = Owl.getConnectionService();
URL feedUrl = pluginLocation.toURI().resolve("data/interpreter/feed_rss.xml").toURL();
IFeed feed = new Feed(feedUrl.toURI());
Triple<IFeed, IConditionalGet, URI> result = conManager.reload(feed.getLink(), null, null);
assertEquals("RSS 2.0", result.getFirst().getFormat());
}
/**
* Test Conditional GET with a compatible Feed.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testConditionalGet() throws Exception {
URI feedUrl = new URI("http://rss.slashdot.org/Slashdot/slashdot/to");
IFeed feed = new Feed(feedUrl);
NotModifiedException e = null;
InputStream inS = Owl.getConnectionService().getHandler(feed.getLink()).openStream(feed.getLink(), null, null);
assertNotNull(inS);
String ifModifiedSince = null;
String ifNoneMatch = null;
if (inS instanceof IConditionalGetCompatible) {
ifModifiedSince = ((IConditionalGetCompatible) inS).getIfModifiedSince();
ifNoneMatch = ((IConditionalGetCompatible) inS).getIfNoneMatch();
}
IConditionalGet conditionalGet = Owl.getModelFactory().createConditionalGet(ifModifiedSince, feedUrl, ifNoneMatch);
Map<Object, Object> conProperties = new HashMap<Object, Object>();
ifModifiedSince = conditionalGet.getIfModifiedSince();
if (ifModifiedSince != null)
conProperties.put(IConnectionPropertyConstants.IF_MODIFIED_SINCE, ifModifiedSince);
ifNoneMatch = conditionalGet.getIfNoneMatch();
if (ifNoneMatch != null)
conProperties.put(IConnectionPropertyConstants.IF_NONE_MATCH, ifNoneMatch);
try {
Owl.getConnectionService().getHandler(feed.getLink()).openStream(feed.getLink(), null, conProperties);
} catch (NotModifiedException e1) {
e = e1;
}
assertNotNull(e);
}
/**
* @throws Exception
*/
@Test
public void testStoredCredentialsDeleted() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/authrequired/feed_rdf.xml");
IFeed feed = new Feed(feedUrl);
DynamicDAO.save(feed);
ICredentials authCreds = new ICredentials() {
public String getDomain() {
return null;
}
public String getPassword() {
return "admin";
}
public String getUsername() {
return "bpasero";
}
};
conManager.getCredentialsProvider(feedUrl).setAuthCredentials(authCreds, feedUrl, null);
assertNotNull(conManager.getAuthCredentials(feedUrl, null));
DynamicDAO.delete(new FeedLinkReference(feedUrl).resolve());
assertNull(conManager.getAuthCredentials(feedUrl, null));
assertNull(conManager.getCredentialsProvider(feedUrl).getPersistedAuthCredentials(feedUrl, null));
((PlatformCredentialsProvider) conManager.getCredentialsProvider(feedUrl)).clear();
}
/**
* @throws Exception
*/
@Test
public void testInMemoryCredentialsDeleted() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/authrequired/feed_rdf.xml");
IFeed feed = new Feed(feedUrl);
DynamicDAO.save(feed);
ICredentials authCreds = new ICredentials() {
public String getDomain() {
return null;
}
public String getPassword() {
return "admin";
}
public String getUsername() {
return "bpasero";
}
};
conManager.getCredentialsProvider(feedUrl).setInMemoryAuthCredentials(authCreds, feedUrl, null);
assertNotNull(conManager.getAuthCredentials(feedUrl, null));
assertNull(conManager.getCredentialsProvider(feedUrl).getPersistedAuthCredentials(feedUrl, null));
DynamicDAO.delete(new FeedLinkReference(feedUrl).resolve());
assertNull(conManager.getAuthCredentials(feedUrl, null));
assertNull(conManager.getCredentialsProvider(feedUrl).getPersistedAuthCredentials(feedUrl, null));
((PlatformCredentialsProvider) conManager.getCredentialsProvider(feedUrl)).clear();
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testLoadFeedFromWebsiteWithRedirect() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.planeteclipse.org");
assertEquals("http://www.planeteclipse.org/planet/rss20.xml", conManager.getFeed(feedUrl, new NullProgressMonitor()).toString());
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testLoadFeedFromWebsiteWithoutRedirect() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.heise.de");
assertEquals("http://www.heise.de/newsticker/heise-atom.xml", conManager.getFeed(feedUrl, new NullProgressMonitor()).toString());
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testLoadEntityEncodedFeedFromWebsite() throws Exception {
IConnectionService conManager = Owl.getConnectionService();
URI feedUrl = new URI("http://www.rssowl.org/rssowl2dg/tests/connection/homepage.html");
assertEquals("http://www.rssowl.org/node/feed&help=true", conManager.getFeed(feedUrl, new NullProgressMonitor()).toString());
}
/**
* @throws Exception
*/
@Test
public void testKeywordFeeds() throws Exception {
String keywords = "blog feed";
String URL_INPUT_TOKEN = "[:]";
String KEYWORD_FEED_EXTENSION_POINT = "org.rssowl.ui.KeywordFeed";
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement elements[] = reg.getConfigurationElementsFor(KEYWORD_FEED_EXTENSION_POINT);
/* For each contributed property keyword feed */
for (IConfigurationElement element : elements) {
String id = element.getAttribute("id");
if ("org.rssowl.ui.DiggKeywordFeed".equals(id))
continue;
String url = element.getAttribute("url");
String feedUrlStr = StringUtils.replaceAll(url, URL_INPUT_TOKEN, URIUtils.urlEncode(keywords));
URI feedUrl = new URI(feedUrlStr);
IFeed feed = new Feed(feedUrl);
try {
InputStream inS = Owl.getConnectionService().getHandler(feed.getLink()).openStream(feed.getLink(), null, null);
assertNotNull(id, inS);
assertNull(id, feed.getFormat());
try {
Owl.getInterpreter().interpret(inS, feed, null);
} catch (EncodingException e) {
inS = Owl.getConnectionService().getHandler(feed.getLink()).openStream(feed.getLink(), null, null);
Owl.getInterpreter().interpret(inS, feed, Collections.singletonMap((Object) DefaultProtocolHandler.USE_PLATFORM_ENCODING, (Object) Boolean.TRUE));
}
assertNotNull(id, feed.getFormat());
} catch (Exception e) {
fail(feedUrlStr);
}
}
}
/**
* @throws Exception
*/
@Test
public void testFeedSearch_SingleLanguage() throws Exception {
String link = Controller.getDefault().toFeedSearchLink("blog");
Map<Object, Object> properties = new HashMap<Object, Object>();
properties.put(IConnectionPropertyConstants.CON_TIMEOUT, 60000);
properties.put(IConnectionPropertyConstants.ACCEPT_LANGUAGE, "de");
InputStream inS = Owl.getConnectionService().getHandler(new URI(link)).openStream(new URI(link), null, properties);
String content = StringUtils.readString(new BufferedReader(new InputStreamReader(inS)));
assertNotNull(content);
List<String> links = RegExUtils.extractLinksFromText(content, false);
assertTrue(!links.isEmpty());
assertTrue(links.size() > 40);
}
/**
* @throws Exception
*/
@Test
public void testFeedSearch_DoubleLanguage() throws Exception {
String link = Controller.getDefault().toFeedSearchLink("blog");
Map<Object, Object> properties = new HashMap<Object, Object>();
properties.put(IConnectionPropertyConstants.CON_TIMEOUT, 60000);
properties.put(IConnectionPropertyConstants.ACCEPT_LANGUAGE, "en,de");
InputStream inS = Owl.getConnectionService().getHandler(new URI(link)).openStream(new URI(link), null, properties);
String content = StringUtils.readString(new BufferedReader(new InputStreamReader(inS)));
assertNotNull(content);
List<String> links = RegExUtils.extractLinksFromText(content, false);
assertTrue(!links.isEmpty());
assertTrue(links.size() > 40);
}
/**
* @throws Exception
*/
@Test
public void testFeedSearch_WrongLanguage() throws Exception {
String link = Controller.getDefault().toFeedSearchLink("blog");
Map<Object, Object> properties = new HashMap<Object, Object>();
properties.put(IConnectionPropertyConstants.CON_TIMEOUT, 60000);
properties.put(IConnectionPropertyConstants.ACCEPT_LANGUAGE, "en-us,de_de");
InputStream inS = Owl.getConnectionService().getHandler(new URI(link)).openStream(new URI(link), null, properties);
String content = StringUtils.readString(new BufferedReader(new InputStreamReader(inS)));
assertNotNull(content);
List<String> links = RegExUtils.extractLinksFromText(content, false);
assertTrue(!links.isEmpty());
assertTrue(links.size() > 40);
}
/**
* @throws Exception
*/
@Test
public void testWebsite() throws Exception {
String link = "http://www.rssowl.org";
Map<Object, Object> properties = new HashMap<Object, Object>();
properties.put(IConnectionPropertyConstants.CON_TIMEOUT, 60000);
InputStream inS = Owl.getConnectionService().getHandler(new URI(link)).openStream(new URI(link), null, properties);
String content = StringUtils.readString(new BufferedReader(new InputStreamReader(inS)));
assertNotNull(content);
List<String> links = RegExUtils.extractLinksFromText(content, false);
assertTrue(!links.isEmpty());
assertTrue(links.size() > 10);
}
/**
* @throws Exception
*/
@Test
@Ignore
public void testGoogleReaderSync() throws Exception {
String authToken = SyncUtils.getGoogleAuthToken("rssowl@mailinator.com", "rssowl.org", true, new NullProgressMonitor());
assertNotNull(authToken);
assertEquals(authToken, SyncUtils.getGoogleAuthToken("rssowl@mailinator.com", "rssowl.org", false, new NullProgressMonitor()));
String newAuthToken = SyncUtils.getGoogleAuthToken("rssowl@mailinator.com", "rssowl.org", true, new NullProgressMonitor());
assertFalse(authToken.equals(newAuthToken));
authToken = newAuthToken;
URI uri = URI.create(SyncUtils.GOOGLE_READER_OPML_URI);
IProtocolHandler handler = Owl.getConnectionService().getHandler(uri);
Map<Object, Object> properties = new HashMap<Object, Object>();
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", SyncUtils.getGoogleAuthorizationHeader(authToken)); //$NON-NLS-1$
properties.put(IConnectionPropertyConstants.HEADERS, headers);
InputStream inS = handler.openStream(uri, new NullProgressMonitor(), properties);
List<? extends IEntity> elements = Owl.getInterpreter().importFrom(inS);
assertTrue(!elements.isEmpty());
}
/**
* @throws Exception
*/
@Test
public void testGetGoogleReaderAPIToken() throws Exception {
String apiToken = SyncUtils.getGoogleApiToken("rssowl@mailinator.com", "rssowl.org", new NullProgressMonitor());
assertNotNull(apiToken);
}
/**
* @throws Exception
*/
@Test
public void testNewsTransformer() throws Exception {
String link = "http://www.rssowl.org/node/258";
List<LinkTransformer> transformers = Controller.getDefault().getLinkTransformers();
for (LinkTransformer transformer : transformers) {
String transformedUrl = transformer.toTransformedUrl(link);
InputStream inS = Owl.getConnectionService().getHandler(new URI(transformedUrl)).openStream(new URI(transformedUrl), null, new HashMap<Object, Object>());
String content = StringUtils.readString(new BufferedReader(new InputStreamReader(inS)));
assertNotNull(content);
List<String> links = RegExUtils.extractLinksFromText(content, false);
assertTrue(!links.isEmpty());
}
}
/**
* @throws Exception
*/
@Test
public void testNewsTransformerEmbedded() throws Exception {
String link = "http://www.rssowl.org/help";
String transformedUrl = Controller.getDefault().getEmbeddedTransformedUrl(link);
InputStream inS = Owl.getConnectionService().getHandler(new URI(transformedUrl)).openStream(new URI(transformedUrl), null, new HashMap<Object, Object>());
String content = StringUtils.readString(new BufferedReader(new InputStreamReader(inS)));
assertNotNull(content);
List<String> links = RegExUtils.extractLinksFromText(content, false);
assertTrue(!links.isEmpty());
}
}