/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.enterprise.server.plugins.jboss.software.test;
import java.io.InputStream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.testng.annotations.Test;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.enterprise.server.plugin.pc.content.PackageSyncReport;
import org.rhq.enterprise.server.plugins.jboss.software.JBossSoftwareContentSourceAdapter;
/**
* Simple tests that makes sure the content source adapter can connect to and parse the results of the live software
* feed. The actual parsed results aren't verified, simply that it doesn't throw an exception at at least returns a
* package. These tests should remain disabled while checked in. I don't know of a testing login for the CSP, so before
* running these tests be sure to update the username and password in the configuration object. Also flip the
* TESTS_ENABLED flag to true to actually run the tests.
*
* @author Jason Dobies
*/
public class JBossSoftwareContentSourceAdapterLiveTest {
private static final boolean TESTS_ENABLED = false;
private static final Configuration CONFIGURATION = new Configuration();
static {
CONFIGURATION.put(new PropertySimple(
"url",
"https://support.redhat.com/jbossnetwork/restricted/feed/software.html?product=all&downloadType=all&flavor=rss&version=&jonVersion=2.0"));
CONFIGURATION.put(new PropertySimple("username", "-- ENTER USERNAME --"));
CONFIGURATION.put(new PropertySimple("password", "-- ENTER PASSWORD --"));
CONFIGURATION.put(new PropertySimple("active", "true"));
}
private static final Configuration PROXY_CONFIGURATION;
static {
PROXY_CONFIGURATION = CONFIGURATION.deepCopy();
PROXY_CONFIGURATION.put(new PropertySimple("proxyUrl", "jonqa.rdu.redhat.com"));
PROXY_CONFIGURATION.put(new PropertySimple("proxyPort", "3129"));
}
private static final Configuration AUTHENTICATING_PROXY_CONFIGURATION;
static {
AUTHENTICATING_PROXY_CONFIGURATION = PROXY_CONFIGURATION.deepCopy();
AUTHENTICATING_PROXY_CONFIGURATION.put(new PropertySimple("proxyUsername", "squiduser"));
AUTHENTICATING_PROXY_CONFIGURATION.put(new PropertySimple("proxyPassword", "squiduser"));
AUTHENTICATING_PROXY_CONFIGURATION.put(new PropertySimple("proxyPort", "3128"));
}
private final Log log = LogFactory.getLog(this.getClass());
// Test Cases --------------------------------------------
@Test(enabled = TESTS_ENABLED)
public void liveConnection() throws Exception {
// Setup
JBossSoftwareContentSourceAdapter adapter = new JBossSoftwareContentSourceAdapter();
adapter.initialize(CONFIGURATION);
// Test
PackageSyncReport report = new PackageSyncReport();
adapter.synchronizePackages(null, report, null);
// Verify
assert report.getNewPackages().size() > 0 : "No packages were parsed from the live feed";
log.info("Number of new packages found in liveConnection: " + report.getNewPackages().size());
}
@Test(enabled = TESTS_ENABLED)
public void testConnection() throws Exception {
// Setup
JBossSoftwareContentSourceAdapter adapter = new JBossSoftwareContentSourceAdapter();
adapter.initialize(CONFIGURATION);
// Test
// This will throw an exception if the connection cannot be made
adapter.testConnection();
}
@Test(enabled = TESTS_ENABLED)
public void bitsGrab() throws Exception {
// Setup
JBossSoftwareContentSourceAdapter adapter = new JBossSoftwareContentSourceAdapter();
adapter.initialize(CONFIGURATION);
// Test
InputStream inputStream = adapter
.getInputStream("https://network.jboss.com/jbossnetwork/secureDownload.html?softwareId=a0430000007iuElAAI");
// Verify
assert inputStream != null : "No input stream read from URL";
}
@Test(enabled = TESTS_ENABLED)
public void proxyConnection() throws Exception {
// Setup
JBossSoftwareContentSourceAdapter adapter = new JBossSoftwareContentSourceAdapter();
adapter.initialize(PROXY_CONFIGURATION);
// Test
PackageSyncReport report = new PackageSyncReport();
adapter.synchronizePackages(null, report, null);
// Verify
assert report.getNewPackages().size() > 0 : "No packages were parsed from the live feed";
log.info("Number of new packages found in proxyConnection: " + report.getNewPackages().size());
}
@Test(enabled = TESTS_ENABLED)
public void authenticatingProxyConnection() throws Exception {
// Setup
JBossSoftwareContentSourceAdapter adapter = new JBossSoftwareContentSourceAdapter();
adapter.initialize(AUTHENTICATING_PROXY_CONFIGURATION);
// Test
PackageSyncReport report = new PackageSyncReport();
adapter.synchronizePackages(null, report, null);
// Verify
assert report.getNewPackages().size() > 0 : "No packages were parsed from the live feed";
log.info("Number of new packages found in proxyConnection: " + report.getNewPackages().size());
}
@Test(enabled = TESTS_ENABLED)
public void invalidLogin() throws Exception {
// Setup
Configuration invalidLoginConfiguration = CONFIGURATION.clone();
invalidLoginConfiguration.put(new PropertySimple("username", "foo"));
JBossSoftwareContentSourceAdapter adapter = new JBossSoftwareContentSourceAdapter();
adapter.initialize(invalidLoginConfiguration);
// Test
PackageSyncReport report = new PackageSyncReport();
try {
adapter.synchronizePackages(null, report, null);
}
catch (Exception e) {
assert e.getMessage().toLowerCase().contains("invalid login") :
"Error message does not properly indicate a failed login. Message: " + e.getMessage();
}
}
@Test(enabled = TESTS_ENABLED)
public void invalidUrl() throws Exception {
// Setup
Configuration invalidUrlConfiguration = CONFIGURATION.clone();
invalidUrlConfiguration.put(new PropertySimple("url", "http://redhat.com/foo.html"));
JBossSoftwareContentSourceAdapter adapter = new JBossSoftwareContentSourceAdapter();
adapter.initialize(invalidUrlConfiguration);
// Test
PackageSyncReport report = new PackageSyncReport();
try {
adapter.synchronizePackages(null, report, null);
}
catch (Exception e) {
assert e.getMessage().toLowerCase().contains("not find the feed") :
"Error message does not properly indicate an incorrect URL. Message: " + e.getMessage();
}
}
}