You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2014/08/14 23:21:17 UTC
[09/10] android commit: Adding tests related to 3.5.1
Adding tests related to 3.5.1
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/320e31bb
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/320e31bb
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/320e31bb
Branch: refs/heads/4.0.x
Commit: 320e31bb105cf6401e646f45810ef3c136bf5ab9
Parents: 41125ea
Author: Joe Bowser <bo...@apache.org>
Authored: Tue Aug 12 11:09:53 2014 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Tue Aug 12 11:09:53 2014 -0700
----------------------------------------------------------------------
.../apache/cordova/test/SabotagedActivity.java | 73 ++++++++++++++++++++
.../test/junit/IntentUriOverrideTest.java | 73 ++++++++++++++++++++
2 files changed, 146 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/320e31bb/test/src/org/apache/cordova/test/SabotagedActivity.java
----------------------------------------------------------------------
diff --git a/test/src/org/apache/cordova/test/SabotagedActivity.java b/test/src/org/apache/cordova/test/SabotagedActivity.java
new file mode 100644
index 0000000..e1170ba
--- /dev/null
+++ b/test/src/org/apache/cordova/test/SabotagedActivity.java
@@ -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);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/320e31bb/test/src/org/apache/cordova/test/junit/IntentUriOverrideTest.java
----------------------------------------------------------------------
diff --git a/test/src/org/apache/cordova/test/junit/IntentUriOverrideTest.java b/test/src/org/apache/cordova/test/junit/IntentUriOverrideTest.java
new file mode 100644
index 0000000..aea06af
--- /dev/null
+++ b/test/src/org/apache/cordova/test/junit/IntentUriOverrideTest.java
@@ -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");
+ }
+ }
+
+
+}