/*
* Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The
* University of Hong Kong (HKU). All Rights Reserved.
*
* This software is licensed under the GNU GENERAL PUBLIC LICENSE Version 2.0 [1]
*
* [1] http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
*/
package hk.hku.cecid.edi.sfrm.admin.listener;
import hk.hku.cecid.piazza.commons.test.utils.FixtureStore;
import junit.framework.TestCase;
import java.lang.reflect.Method;
import hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor;
import java.util.Hashtable;
import java.io.InputStream;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.File;
public class PartnershipPageletAdaptorTest extends TestCase {
protected ClassLoader FIXTURE_LOADER = FixtureStore.createFixtureLoader(
false, this.getClass());
protected File baseFile = new File(FixtureStore.getFixtureURL(
this.getClass()).getFile());
private PartnershipPageletAdaptor adaptor = new PartnershipPageletAdaptor();
private InputStream validCertInStream = null;
private InputStream invalidCertInStream = null;
private File validCertFile = new File(FIXTURE_LOADER.getResource("validCert.crt").getFile());
private File invalidCertFile = new File(FIXTURE_LOADER.getResource("invalidCert.crt").getFile());
public void setUp() throws Exception{
System.out.println();
try{
validCertInStream = new FileInputStream(validCertFile);
invalidCertInStream = new FileInputStream(invalidCertFile);
}catch(IOException ioe){
System.out.println(ioe);
TestCase.fail();
}
System.out.println("---------" + this.getName() + " Start -------");
}
public void tearDown() throws Exception{
validCertInStream.close();
invalidCertInStream.close();
System.out.println("---------" + this.getName() + " End -------");
}
//Test for validating the partnership with valid data
public void testValidatePartnershipTest() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "sample_partnership");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There have an error(s) for the valid partnership", 0, errors.size());
}
//Test for validating the partnership with invalid partnership ID
public void testValidatePartnershipNeg1Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
//Invalid partnership ID with empty string
sample.put("partnership_id", "");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Partnership ID is invalid, but it didn't detected", errors.get("partnership_id"));
TestCase.assertEquals("Wrong partnership error message", "Partnership ID cannot be empty", (String)errors.get("partnership_id"));
}
//Test for validating the partnership with the invalid partnership ID
public void testValidatePartnershipNeg2Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
//Invalid partnership ID filled with space
sample.put("partnership_id", " ");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Partnership ID is invalid, but it didn't detected", errors.get("partnership_id"));
TestCase.assertEquals("Wrong partnership error message", "Partnership ID cannot be empty", (String)errors.get("partnership_id"));
}
//Test for validating the partnership endpoint with invalid endpoint
public void testValidatePartnershipNeg3Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "dummy");
sample.put("description", "This is the sample partnership");
//Invalid endpoint with empty string
sample.put("partner_endpoint", "");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Partner Endpoint is invalid, but it didn't detected", errors.get("partner_endpoint"));
TestCase.assertEquals("Wrong partnership error message", "Transport Endpoint cannot be empty", (String)errors.get("partner_endpoint"));
}
//Test for validating the partnership endpoint with invalid endpoint
public void testValidatePartnershipNeg4Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "dummy");
sample.put("description", "This is the sample partnership");
//Invalid endpoint filled with space
sample.put("partner_endpoint", " ");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Partner Endpoint is invalid, but it didn't detected", errors.get("partner_endpoint"));
TestCase.assertEquals("Wrong partnership error message", "Transport Endpoint cannot be empty", (String)errors.get("partner_endpoint"));
}
//Test for validating the partnership endpoint with the invalid endpoint format
public void testValidatePartnershipNeg5Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "dummy");
sample.put("description", "This is the sample partnership");
//Invalid endpoint with using ftp as protocol
sample.put("partner_endpoint", "ftp://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Partner Endpoint is invalid, but it didn't detected", errors.get("partner_endpoint"));
TestCase.assertEquals("Wrong partnership error message", "Transport Endpoint protocol is invalid", (String)errors.get("partner_endpoint"));
}
//Test for validating the invalid retry max with format of not a number
public void testValidatePartnershipNeg6Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "dummy");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
//Invalid retry max with using the format of not a number
sample.put("retry_max", "hello");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Retry Maximum is invalid, but it didn't detected", errors.get("retry_max"));
TestCase.assertEquals("Wrong partnership error message", "Maximum Retries must be an integer", (String)errors.get("retry_max"));
}
//Test for validating the invalid retry interval with format of not a number
public void testValidatePartnershipNeg7Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "dummy");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
//Invalid retry interval with using the format of not a number
sample.put("retry_interval", "good");
sample.put("is_disabled", "false");
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Retry Interval is invalid, but it didn't detected", errors.get("retry_interval"));
TestCase.assertEquals("Wrong partnership error message", "Retry Interval must be an integer", (String)errors.get("retry_interval"));
}
//Test for validating the invalid certificate format
public void testValidatePartnershipNeg8Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "dummy");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
//Invalid partnership certificate
sample.put("partner_cert", invalidCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Retry Interval is invalid, but it didn't detected", errors.get("partner_cert"));
TestCase.assertEquals("Wrong partnership error message", "Uploaded cert is not an X.509 cert", (String)errors.get("partner_cert"));
}
//Test for validating the invalid partnership, with 2 field is invalid
public void testValidatePartnershipNeg9Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
sample.put("partnership_id", "");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
//Invalid partnership certificate
sample.put("partner_cert", invalidCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 2, errors.size());
TestCase.assertNotNull("Retry Interval is invalid, but it didn't detected", errors.get("partner_cert"));
TestCase.assertEquals("Wrong partnership error message", "Uploaded cert is not an X.509 cert", (String)errors.get("partner_cert"));
TestCase.assertNotNull("Partnership ID is invalid, but it didn't detected", errors.get("partnership_id"));
TestCase.assertEquals("Wrong partnership error message", "Partnership ID cannot be empty", (String)errors.get("partnership_id"));
}
//Test for validating the partnership ID which id containing the invalid character
public void testValidatePartnershipNeg10Test() throws Exception{
Method m = Class.forName("hk.hku.cecid.edi.sfrm.admin.listener.PartnershipPageletAdaptor").getDeclaredMethod("validatePartnership", new Class[] {Hashtable.class});
m.setAccessible(true);
//Build the valid partnership
Hashtable sample = new Hashtable();
//Invalid partnership_id which containing space
sample.put("partnership_id", "abc def");
sample.put("description", "This is the sample partnership");
sample.put("partner_endpoint", "http://localhost:8080");
sample.put("is_hostname_verified", "false");
sample.put("is_outbound_sign_requested", "false");
sample.put("is_outbound_encrypt_requested", "false");
sample.put("is_inbound_sign_enforced", "false");
sample.put("is_inbound_encrypt_enforced", "false");
sample.put("sign_algorithm", "sha1");
sample.put("encrypt_algorithm", "3des");
sample.put("retry_max", "3");
sample.put("retry_interval", "60000");
sample.put("is_disabled", "false");
//Invalid partnership certificate
sample.put("partner_cert", validCertInStream);
Hashtable errors = (Hashtable) m.invoke(adaptor, new Object[] {sample});
TestCase.assertEquals("There didn't have error(s) for the invalid partnership" , 1, errors.size());
TestCase.assertNotNull("Partnership ID is invalid, but it didn't detected", errors.get("partnership_id"));
TestCase.assertEquals("Wrong partnership error message", "Partnership ID should contains the alphanumeric characters and @ _ + - only", (String)errors.get("partnership_id"));
}
}