import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static play.test.Helpers.HTMLUNIT;
import static play.test.Helpers.running;
import static play.test.Helpers.testServer;
import java.io.File;
import java.util.HashMap;
import org.junit.Test;
import play.Play;
import play.libs.F.Callback;
import play.test.TestBrowser;
import com.baasbox.configuration.Push;
import com.baasbox.db.DbHelper;
import com.baasbox.exception.InvalidAppCodeException;
import com.baasbox.util.ConfigurationFileContainer;
import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal;
import com.orientechnologies.orient.core.db.record.ODatabaseRecord;
import com.orientechnologies.orient.core.db.record.ODatabaseRecordTx;
import core.AbstractRouteHeaderTest;
import core.TestConfig;
public class AdminUploadAppleCertificatesTest extends AbstractRouteHeaderTest {
@Override
public String getRouteAddress() {
return "/admin/configuration/Push/dummy/profile1.sandbox.ios.certificate/filename.zip";
}
@Override
public String getMethod() {
return "PUT";
}
@Override
protected void assertContent(String s) {
// TODO Auto-generated method stub
}
@Test
public void testCorrectUpload() throws Exception{
running
(
getTestServer(),
HTMLUNIT,
new Callback<TestBrowser>()
{
public void invoke(TestBrowser browser)
{
setHeader(TestConfig.KEY_APPCODE, TestConfig.VALUE_APPCODE);
setHeader(TestConfig.KEY_AUTH, TestConfig.AUTH_ADMIN_ENC);
setMultipartFormData();
setAssetFile("/TestFakeCertificate.p12", "application/octet-stream");
int status = httpRequest("http://localhost:3333"+getRouteAddress(), getMethod(),new HashMap<String,String>());
assertTrue(status==200);
File folder = Play.application().getFile("certificates");
assertTrue(folder.exists());
File certificate = Play.application().getFile("certificates/TestFakeCertificate.p12");
assertTrue(certificate.exists());
ODatabaseRecordTx db = null;
try {
db = DbHelper.open("1234567890", "admin", "admin");
} catch (InvalidAppCodeException e) {
fail();
}
ODatabaseRecordThreadLocal.INSTANCE.set(db);
ConfigurationFileContainer cfc = Push.PROFILE1_SANDBOX_IOS_CERTIFICATE.getValueAsFileContainer();
assertNotNull(cfc);
assertNotNull(cfc.getName());
assertNotNull(cfc.getContent());
assertEquals("TestFakeCertificate.p12",cfc.getName());
String content = new String(cfc.getContent());
assertTrue(content.indexOf("I am a fake certificate")>-1);
certificate.delete();
folder.delete();
db.close();
}
}
);
}
}