// 2012-08-29 johnpfeiffer
// TODO: javascript html form validation tests
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
public class NirvanixServiceTest
{
private NirvanixService defaultTester = null;
private static final String EXPECTEDEFAULTHEADER = "";
@Before
public void setUp() throws Exception
{
defaultTester = new NirvanixService.Builder().build();
}
@Test
public void testNirvanixService()
{
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , NirvanixService.DEFAULTNIRVANIXISAVAILABLE , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY ,
NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , defaultTester.getString( EXPECTEDEFAULTHEADER ) );
String expectedHTML = expectedNirvanixHTMLForm( NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME , NirvanixService.DEFAULTNIRVANIXUSERNAME ,
NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY , NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expectedHTML , defaultTester.getHTMLForm() );
}
@Test
public void testNirvanixServiceIsAvailableTrue()
{
final boolean constructorIsAvailable = true;
NirvanixService apiHostNameTest = new NirvanixService.Builder().isAvailable( constructorIsAvailable ).build();
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , constructorIsAvailable , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY ,
NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , apiHostNameTest.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testNirvanixServiceIsAvailableFalse()
{
final boolean constructorIsAvailable = false;
NirvanixService apiHostNameTest = new NirvanixService.Builder().isAvailable( constructorIsAvailable ).build();
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , constructorIsAvailable , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY ,
NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , apiHostNameTest.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testNirvanixServiceApiHostName()
{
final String constructorApiHostName = "constructorApiHostName.example";
NirvanixService apiHostNameTest = new NirvanixService.Builder().apihostname( constructorApiHostName ).build();
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , NirvanixService.DEFAULTNIRVANIXISAVAILABLE , constructorApiHostName ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY ,
NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , apiHostNameTest.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testNirvanixServiceApiHostNameNull()
{
try
{
new NirvanixService.Builder().apihostname( null ).build();
}catch( IllegalArgumentException iae )
{
return;
}
fail( "Expected IllegalArgumentException" );
}
@Test
public void testNirvanixServiceUserName()
{
final String constructorUsername = "constructorUsername";
NirvanixService userTest = new NirvanixService.Builder().user( constructorUsername ).build();
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , NirvanixService.DEFAULTNIRVANIXISAVAILABLE , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
constructorUsername , NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY , NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , userTest.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testNirvanixServiceUsernameNull()
{
try
{
new NirvanixService.Builder().user( null ).build();
}catch( IllegalArgumentException iae )
{
return;
}
fail( "Expected IllegalArgumentException" );
}
@Test
public void testNirvanixServicePassword()
{
final String constructorPassword = "constructorPassword";
NirvanixService passwordTest = new NirvanixService.Builder().password( constructorPassword ).build();
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , NirvanixService.DEFAULTNIRVANIXISAVAILABLE , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , constructorPassword , NirvanixService.DEFAULTNIRVANIXAPPKEY , NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , passwordTest.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testNirvanixServicePasswordNull()
{
try
{
new NirvanixService.Builder().password( null ).build();
}catch( IllegalArgumentException iae )
{
return;
}
fail( "Expected IllegalArgumentException" );
}
@Test
public void testNirvanixServiceAppKey()
{
final String constructorAppKey = "constructorAppKey-testing";
NirvanixService appkeyTest = new NirvanixService.Builder().appkey( constructorAppKey ).build();
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , NirvanixService.DEFAULTNIRVANIXISAVAILABLE , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , NirvanixService.DEFAULTNIRVANIXPASSWORD , constructorAppKey , NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , appkeyTest.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testNirvanixServiceAppKeyNull()
{
try
{
new NirvanixService.Builder().appkey( null ).build();
}catch( IllegalArgumentException iae )
{
return;
}
fail( "Expected IllegalArgumentException" );
}
@Test
public void testNirvanixServiceAppName()
{
final String constructorAppName = "constructorAppName";
NirvanixService appnameTest = new NirvanixService.Builder().appname( constructorAppName ).build();
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , NirvanixService.DEFAULTNIRVANIXISAVAILABLE , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY , constructorAppName );
assertEquals( expected , appnameTest.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testNirvanixServiceAppNameNull()
{
try
{
new NirvanixService.Builder().appkey( null ).build();
}catch( IllegalArgumentException iae )
{
return;
}
fail( "Expected IllegalArgumentException" );
}
@Test
public void testNirvanixServiceAppKeyContainsWhitespace()
{
try
{
new NirvanixService.Builder().isAvailable( true ).appkey( "contains white-space" ).build();
}catch( IllegalArgumentException iae )
{
return;
}
fail( "Expected IllegalArgumentException" );
}
@Test
public void testNirvanixServiceAppKeyDoesNotContainDash()
{
try
{
new NirvanixService.Builder().isAvailable( true ).appkey( "nodash" ).build();
}catch( IllegalArgumentException iae )
{
return;
}
fail( "Expected IllegalArgumentException" );
}
@Test
public void testGetString()
{
String expected = expectedNirvanixString( EXPECTEDEFAULTHEADER , NirvanixService.DEFAULTNIRVANIXISAVAILABLE , NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME ,
NirvanixService.DEFAULTNIRVANIXUSERNAME , NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY ,
NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expected , defaultTester.getString( EXPECTEDEFAULTHEADER ) );
}
@Test
public void testGetHTMLForm()
{
String expectedHTML = expectedNirvanixHTMLForm( NirvanixService.DEFAULTNIRVANIXAPIHOSTNAME , NirvanixService.DEFAULTNIRVANIXUSERNAME ,
NirvanixService.DEFAULTNIRVANIXPASSWORD , NirvanixService.DEFAULTNIRVANIXAPPKEY , NirvanixService.DEFAULTNIRVANIXAPPNAME );
assertEquals( expectedHTML , defaultTester.getHTMLForm() );
}
@Test
public void getValidateFormOnSubmit()
{
String expectedJavascript = expectedValidateFormOnSubmit();
assertEquals( expectedJavascript , NirvanixService.getValidateFormOnSubmit() );
}
private String expectedNirvanixString( String header , boolean nirvanixIsAvailable , String nirvanixApiHostName , String nirvanixUsername ,
String nirvanixPassword , String nirvanixAppKey , String nirvanixAppName )
{
StringBuilder strb = new StringBuilder();
String newline = System.getProperty( "line.separator" );
strb.append( header + NirvanixService.PARAMNIRVANIXISAVAILABLE + "=" + nirvanixIsAvailable + newline );
strb.append( header + NirvanixService.PARAMNIRVANIXAPIHOSTNAME + "=" + nirvanixApiHostName + newline );
strb.append( header + NirvanixService.PARAMNIRVANIXUSERNAME + "=" + nirvanixUsername + newline );
strb.append( header + NirvanixService.PARAMNIRVANIXPASSWORD + "=" + nirvanixPassword + newline );
strb.append( header + NirvanixService.PARAMNIRVANIXAPPKEY + "=" + nirvanixAppKey + newline );
strb.append( header + NirvanixService.PARAMNIRVANIXAPPNAME + "=" + nirvanixAppName + newline );
strb.append( header + NirvanixService.PARAMNIRVANIXSTORAGEFOLDER + "=" + NirvanixService.DEFAULTNIRVANIXSTORAGEFOLDER + newline );
return strb.toString();
}
private String expectedNirvanixHTMLForm( String nirvanixApiHostName , String nirvanixUsername , String nirvanixPassword , String nirvanixAppKey ,
String nirvanixAppName )
{
StringBuilder strb = new StringBuilder();
String newline = "<br /><br />" + System.getProperty( "line.separator" );
String space = " ";
strb.append( "<label>Nirvanix Username:</label>" + space + space + "<input type='text' id='" + NirvanixService.PARAMNIRVANIXUSERNAME + "' name='"
+ NirvanixService.PARAMNIRVANIXUSERNAME + "' size='60' value='" + JohnStringUtils.safeHTML( nirvanixUsername ) + "' /> " + newline );
strb.append( "<label>Nirvanix Password:</label>" + space + space + "<input type='text' id='" + NirvanixService.PARAMNIRVANIXPASSWORD + "' name='"
+ NirvanixService.PARAMNIRVANIXPASSWORD + "' size='40' value='" + JohnStringUtils.safeHTML( nirvanixPassword ) + "' /> " + newline );
strb.append( "<label>Nirvanix AppName:</label>" + space + space + "<input type='text' id='" + NirvanixService.PARAMNIRVANIXAPPNAME + "' name='"
+ NirvanixService.PARAMNIRVANIXAPPNAME + "' size='40' value='" + JohnStringUtils.safeHTML( nirvanixAppName ) + "' /> " + newline );
strb.append( "<label>Nirvanix AppKey:</label>" + space + space + "<input type='text' id='" + NirvanixService.PARAMNIRVANIXAPPKEY + "' name='"
+ NirvanixService.PARAMNIRVANIXAPPKEY + "' size='40' value='" + JohnStringUtils.safeHTML( nirvanixAppKey ) + "' /> " + newline );
strb.append( "<label>Nirvanix API Hostname (only applicable if not using services.nirvanix.com):</label>" + space + space + "<input type='text' name='"
+ NirvanixService.PARAMNIRVANIXAPIHOSTNAME + "' size='40' value='" + JohnStringUtils.safeHTML( nirvanixApiHostName ) + "' /> " + newline );
return strb.toString();
}
// TODO: more generic validation from the Data Model
protected static String expectedValidateFormOnSubmit()
{
StringBuilder strb = new StringBuilder();
String newline = System.getProperty( "line.separator" );
strb.append( newline + "<script type='text/javascript'>" + newline );
strb.append( "function validateFormOnSubmit() {" + newline );
strb.append( "var userinput=document.getElementById( '" + NirvanixService.PARAMNIRVANIXUSERNAME + "' ).value;" + newline );
strb.append( "if( userinput==null || userinput=='' )" + newline );
strb.append( "{ alert('Error: " + NirvanixService.PARAMNIRVANIXUSERNAME + " cannot be blank');" + newline );
strb.append( " return false; }" + newline );
strb.append( "var userinput=document.getElementById( '" + NirvanixService.PARAMNIRVANIXPASSWORD + "' ).value;" + newline );
strb.append( "if( userinput==null || userinput=='' )" + newline );
strb.append( "{ alert('Error: " + NirvanixService.PARAMNIRVANIXPASSWORD + " cannot be blank');" + newline );
strb.append( " return false; }" + newline );
strb.append( "var userinput=document.getElementById( '" + NirvanixService.PARAMNIRVANIXAPPNAME + "' ).value;" + newline );
strb.append( "if( userinput==null || userinput=='' )" + newline );
strb.append( "{ alert('Error: " + NirvanixService.PARAMNIRVANIXAPPNAME + " cannot be blank');" + newline );
strb.append( " return false; }" + newline );
strb.append( "var userinput=document.getElementById( '" + NirvanixService.PARAMNIRVANIXAPPKEY + "' ).value;" + newline );
strb.append( "if( userinput==null || userinput=='' )" + newline );
strb.append( "{ alert('Error: " + NirvanixService.PARAMNIRVANIXAPPKEY + " cannot be blank');" + newline );
strb.append( " return false; }" + newline );
strb.append( "}" + newline );
strb.append( "</script>" + newline );
return strb.toString();
}
} // end class