mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-12 10:42:58 +08:00
Adding tests related to 3.5.1
This commit is contained in:
parent
41125ea1e2
commit
320e31bb10
73
test/src/org/apache/cordova/test/SabotagedActivity.java
Normal file
73
test/src/org/apache/cordova/test/SabotagedActivity.java
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
package org.apache.cordova.test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
|
||||||
|
import org.apache.cordova.Config;
|
||||||
|
import org.apache.cordova.CordovaActivity;
|
||||||
|
|
||||||
|
import android.content.res.AssetManager;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Environment;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
public class SabotagedActivity extends CordovaActivity {
|
||||||
|
|
||||||
|
private String BAD_ASSET = "www/error.html";
|
||||||
|
private String LOG_TAG = "SabotagedActivity";
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
// copyErrorAsset();
|
||||||
|
super.init();
|
||||||
|
super.loadUrl(Config.getStartUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sometimes we need to move code around before we can do anything. This will
|
||||||
|
* copy the bad code out of the assets before we initalize Cordova so that when Cordova actually
|
||||||
|
* initializes, we have something for it to navigate to.
|
||||||
|
*/
|
||||||
|
|
||||||
|
private void copyErrorAsset () {
|
||||||
|
AssetManager assetManager = getAssets();
|
||||||
|
String[] files = null;
|
||||||
|
try {
|
||||||
|
files = assetManager.list(BAD_ASSET);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.e(LOG_TAG, e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
for(String filename : files) {
|
||||||
|
InputStream in = null;
|
||||||
|
OutputStream out = null;
|
||||||
|
try {
|
||||||
|
in = assetManager.open(BAD_ASSET);
|
||||||
|
out = new FileOutputStream(Environment.getExternalStorageDirectory().toString() +"/" + filename);
|
||||||
|
copy(in, out);
|
||||||
|
in.close();
|
||||||
|
in = null;
|
||||||
|
out.flush();
|
||||||
|
out.close();
|
||||||
|
out = null;
|
||||||
|
} catch(Exception e) {
|
||||||
|
Log.e("tag", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Quick and Dirty Copy!
|
||||||
|
private void copy(InputStream in, OutputStream out) throws IOException {
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int read;
|
||||||
|
while((read = in.read(buffer)) != -1){
|
||||||
|
out.write(buffer, 0, read);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package org.apache.cordova.test.junit;
|
||||||
|
|
||||||
|
import org.apache.cordova.CordovaWebView;
|
||||||
|
import org.apache.cordova.test.SabotagedActivity;
|
||||||
|
import org.apache.cordova.test.splashscreen;
|
||||||
|
|
||||||
|
import android.app.Instrumentation;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.res.AssetManager;
|
||||||
|
import android.test.ActivityInstrumentationTestCase2;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
|
|
||||||
|
public class IntentUriOverrideTest extends ActivityInstrumentationTestCase2<SabotagedActivity> {
|
||||||
|
|
||||||
|
private int TIMEOUT = 1000;
|
||||||
|
|
||||||
|
private SabotagedActivity testActivity;
|
||||||
|
private FrameLayout containerView;
|
||||||
|
private LinearLayout innerContainer;
|
||||||
|
private CordovaWebView testView;
|
||||||
|
private Instrumentation mInstr;
|
||||||
|
private String BAD_URL = "file:///sdcard/download/wl-exploit.htm";
|
||||||
|
|
||||||
|
|
||||||
|
public IntentUriOverrideTest()
|
||||||
|
{
|
||||||
|
super("org.apache.cordova.test",SabotagedActivity.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void setUp() throws Exception {
|
||||||
|
super.setUp();
|
||||||
|
mInstr = this.getInstrumentation();
|
||||||
|
Intent badIntent = new Intent();
|
||||||
|
badIntent.setClassName("org.apache.cordova.test", "org.apache.cordova.test.SabotagedActivity");
|
||||||
|
badIntent.putExtra("url", BAD_URL);
|
||||||
|
setActivityIntent(badIntent);
|
||||||
|
testActivity = getActivity();
|
||||||
|
containerView = (FrameLayout) testActivity.findViewById(android.R.id.content);
|
||||||
|
innerContainer = (LinearLayout) containerView.getChildAt(0);
|
||||||
|
testView = (CordovaWebView) innerContainer.getChildAt(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testPreconditions(){
|
||||||
|
assertNotNull(innerContainer);
|
||||||
|
assertNotNull(testView);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testChangeStartUrl() throws Throwable
|
||||||
|
{
|
||||||
|
runTestOnUiThread(new Runnable() {
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
boolean isBadUrl = testView.getUrl().equals(BAD_URL);
|
||||||
|
assertFalse(isBadUrl);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sleep() {
|
||||||
|
try {
|
||||||
|
Thread.sleep(TIMEOUT);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
fail("Unexpected Timeout");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user