From e2380a6a5c08c4fea2f968d1d4c20fcba1c5848b Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Tue, 15 Apr 2014 12:32:03 +0200 Subject: [PATCH] Updated ReadFileTest to work with an empty OC server --- test_client/assets/textFile.txt | 3 + .../lib/test_project/TestActivity.java | 43 +++++++++- .../lib/test_project/test/ReadFileTest.java | 80 +++++++++++++------ 3 files changed, 97 insertions(+), 29 deletions(-) create mode 100644 test_client/assets/textFile.txt diff --git a/test_client/assets/textFile.txt b/test_client/assets/textFile.txt new file mode 100644 index 00000000..f53eb8b4 --- /dev/null +++ b/test_client/assets/textFile.txt @@ -0,0 +1,3 @@ +This is a simple text file. + +To make some tests. diff --git a/test_client/src/com/owncloud/android/lib/test_project/TestActivity.java b/test_client/src/com/owncloud/android/lib/test_project/TestActivity.java index 593f64b0..896ea0f5 100644 --- a/test_client/src/com/owncloud/android/lib/test_project/TestActivity.java +++ b/test_client/src/com/owncloud/android/lib/test_project/TestActivity.java @@ -25,6 +25,10 @@ package com.owncloud.android.lib.test_project; import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.security.GeneralSecurityException; import org.apache.commons.httpclient.protocol.Protocol; @@ -52,6 +56,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.app.Activity; +import android.content.res.AssetManager; import android.util.Log; import android.view.Menu; @@ -66,11 +71,13 @@ public class TestActivity extends Activity { private static final String TAG = null; // This account must exists on the server side private String mServerUri; - private String mWebdavPath; private String mUser; private String mPass; private boolean mChunked; + private static final String WEBDAV_PATH = "/remote.php/webdav"; + private static final int BUFFER_SIZE = 1024; + //private Account mAccount = null; private OwnCloudClient mClient; @@ -80,7 +87,6 @@ public class TestActivity extends Activity { setContentView(R.layout.activity_test); mServerUri = getString(R.string.server_base_url); - mWebdavPath = getString(R.string.webdav_path); mUser = getString(R.string.username); mPass = getString(R.string.password); mChunked = getResources().getBoolean(R.bool.chunked); @@ -98,7 +104,7 @@ public class TestActivity extends Activity { } } - Uri uri = Uri.parse(mServerUri + mWebdavPath); + Uri uri = Uri.parse(mServerUri + WEBDAV_PATH); mClient = new OwnCloudClient(NetworkUtils.getMultiThreadedConnManager()); mClient.setDefaultTimeouts( OwnCloudClientFactory.DEFAULT_DATA_TIMEOUT, @@ -107,6 +113,8 @@ public class TestActivity extends Activity { mClient.setFollowRedirects(true); mClient.setBasicCredentials(mUser, mPass); mClient.setBaseUri(Uri.parse(mServerUri)); + + Log.v(TAG, "onCreate finished, ownCloud client ready"); } @@ -273,4 +281,33 @@ public class TestActivity extends Activity { return result; } + + + /** + * Extracts file from AssetManager to cache folder. + * + * @param fileName Name of the asset file to extract. + * @return File instance of the extracted file. + */ + public File extractAsset(String fileName) throws IOException { + File extractedFile = new File(getCacheDir() + File.separator + fileName); + if (!extractedFile.exists()) { + InputStream in = null; + FileOutputStream out = null; + in = getAssets().open(fileName); + out = new FileOutputStream(extractedFile); + byte[] buffer = new byte[BUFFER_SIZE]; + int readCount; + while((readCount = in.read(buffer)) != -1){ + out.write(buffer, 0, readCount); + } + out.flush(); + out.close(); + in.close(); + } + return extractedFile; + } + + + } diff --git a/test_client/tests/src/com/owncloud/android/lib/test_project/test/ReadFileTest.java b/test_client/tests/src/com/owncloud/android/lib/test_project/test/ReadFileTest.java index bac58599..686f30cc 100644 --- a/test_client/tests/src/com/owncloud/android/lib/test_project/test/ReadFileTest.java +++ b/test_client/tests/src/com/owncloud/android/lib/test_project/test/ReadFileTest.java @@ -23,45 +23,73 @@ */ package com.owncloud.android.lib.test_project.test; +import java.io.File; + import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.resources.files.FileUtils; import com.owncloud.android.lib.test_project.TestActivity; import android.test.ActivityInstrumentationTestCase2; +import android.util.Log; /** * Class to test Read File Operation * @author masensio - * + * @author David A. Velasco */ public class ReadFileTest extends ActivityInstrumentationTestCase2 { - /* File data to read. This file must exist on the account */ - private final String mRemoteFolderPath = "/fileToRead.txt"; - - - private TestActivity mActivity; - - public ReadFileTest() { - super(TestActivity.class); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - setActivityInitialTouchMode(false); - mActivity = getActivity(); - } + private static final String LOG_TAG = ReadFileTest.class.getCanonicalName(); + + private static final String TEXT_FILE_NAME = "textFile.txt"; - /** - * Test Read File - */ - public void testReadFile() { + private TestActivity mActivity; + + public ReadFileTest() { + super(TestActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); - RemoteOperationResult result = mActivity.readFile(mRemoteFolderPath); - assertTrue(result.getData().size() == 1); - assertTrue(result.isSuccess()); - } - + setActivityInitialTouchMode(false); + mActivity = getActivity(); + + File textFile = mActivity.extractAsset(TEXT_FILE_NAME); + RemoteOperationResult uploadResult = mActivity.uploadFile( + textFile.getAbsolutePath(), + FileUtils.PATH_SEPARATOR + TEXT_FILE_NAME, + "txt/plain"); + if (!uploadResult.isSuccess()) { + logAndThrow(uploadResult); + } + } + + /** + * Test Read File + */ + public void testReadFile() { + RemoteOperationResult result = mActivity.readFile(TEXT_FILE_NAME); + assertTrue(result.getData().size() == 1); + assertTrue(result.isSuccess()); + // TODO check more properties of the result + } + + @Override + protected void tearDown() throws Exception { + RemoteOperationResult removeResult = mActivity.removeFile(TEXT_FILE_NAME); + if (!removeResult.isSuccess()) { + logAndThrow(removeResult); + } + + super.tearDown(); + } + + private void logAndThrow(RemoteOperationResult result) throws Exception { + Log.e(LOG_TAG, result.getLogMessage(), result.getException()); + throw new Exception(result.getLogMessage(), result.getException()); + } }