From: masensio Date: Thu, 28 Nov 2013 12:33:05 +0000 (+0100) Subject: OC-2256: Adapt Unit Test to the new result X-Git-Tag: oc-android-1.5.5~116^2~4 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/9a8b89bea1b7cb5b97911e95e649b5c29c6aa18e?ds=inline;hp=--cc OC-2256: Adapt Unit Test to the new result --- 9a8b89bea1b7cb5b97911e95e649b5c29c6aa18e diff --git a/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/ReadFileTest.java b/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/ReadFileTest.java deleted file mode 100644 index 465e82c6..00000000 --- a/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/ReadFileTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.owncloud.android.oc_framework_test_project.test; - - -import com.owncloud.android.oc_framework.operations.RemoteOperationResult; -import com.owncloud.android.oc_framework_test_project.TestActivity; - -import android.test.ActivityInstrumentationTestCase2; - -public class ReadFileTest extends ActivityInstrumentationTestCase2 { - - - /* Folder data to read. This folder must exist on the account */ - private final String mRemoteFolderPath = "/folderToRead"; - - /* File data to rename. This file must exist on the account */ - private final String mRemoteFilePath = "/fileToRead.txt"; - - private TestActivity mActivity; - - public ReadFileTest() { - super(TestActivity.class); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - setActivityInitialTouchMode(false); - mActivity = getActivity(); - } - - /** - * Test Read Folder - */ - public void testReadFolder() { - - RemoteOperationResult result = mActivity.readFile(mRemoteFolderPath); - assertTrue(result.isSuccess()); - } - - /** - * Test Read File - */ - public void testReadFile() { - - RemoteOperationResult result = mActivity.readFile(mRemoteFilePath); - assertTrue(result.isSuccess()); - } -} diff --git a/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/ReadFolderTest.java b/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/ReadFolderTest.java new file mode 100644 index 00000000..5bb4c35b --- /dev/null +++ b/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/ReadFolderTest.java @@ -0,0 +1,47 @@ +package com.owncloud.android.oc_framework_test_project.test; + + +import com.owncloud.android.oc_framework.operations.RemoteOperationResult; +import com.owncloud.android.oc_framework_test_project.TestActivity; + +import android.test.ActivityInstrumentationTestCase2; + +/** + * Class to test Read Folder Operation + * @author masensio + * + */ + +public class ReadFolderTest extends ActivityInstrumentationTestCase2 { + + + /* Folder data to read. This folder must exist on the account */ + private final String mRemoteFolderPath = "/folderToRead"; + + + private TestActivity mActivity; + + public ReadFolderTest() { + super(TestActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + setActivityInitialTouchMode(false); + mActivity = getActivity(); + } + + /** + * Test Read Folder + */ + public void testReadFolder() { + + RemoteOperationResult result = mActivity.readFile(mRemoteFolderPath); + assertTrue(result.getFile() != null); + assertTrue(result.getData().size() > 0); + assertTrue(result.getData().size() == 3); + assertTrue(result.isSuccess()); + } + +} diff --git a/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/RenameFileTest.java b/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/RenameFileTest.java index fe30550b..e21c6ff8 100644 --- a/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/RenameFileTest.java +++ b/oc_framework-test-project/oc_framework-test-test/src/com/owncloud/android/oc_framework_test_project/test/RenameFileTest.java @@ -6,6 +6,12 @@ import com.owncloud.android.oc_framework_test_project.TestActivity; import android.test.ActivityInstrumentationTestCase2; +/** + * Class to test Rename File Operation + * @author masensio + * + */ + public class RenameFileTest extends ActivityInstrumentationTestCase2 { /* Folder data to rename. This folder must exist on the account */ diff --git a/oc_framework-test-project/src/com/owncloud/android/oc_framework_test_project/TestActivity.java b/oc_framework-test-project/src/com/owncloud/android/oc_framework_test_project/TestActivity.java index 1d7b485e..db38ea5c 100644 --- a/oc_framework-test-project/src/com/owncloud/android/oc_framework_test_project/TestActivity.java +++ b/oc_framework-test-project/src/com/owncloud/android/oc_framework_test_project/TestActivity.java @@ -4,7 +4,7 @@ import com.owncloud.android.oc_framework.network.webdav.OwnCloudClientFactory; import com.owncloud.android.oc_framework.network.webdav.WebdavClient; import com.owncloud.android.oc_framework.operations.RemoteOperationResult; import com.owncloud.android.oc_framework.operations.remote.CreateRemoteFolderOperation; -import com.owncloud.android.oc_framework.operations.remote.ReadRemoteFileOperation; +import com.owncloud.android.oc_framework.operations.remote.ReadRemoteFolderOperation; import com.owncloud.android.oc_framework.operations.remote.RemoveRemoteFileOperation; import com.owncloud.android.oc_framework.operations.remote.RenameRemoteFileOperation; @@ -92,14 +92,14 @@ public class TestActivity extends Activity { } /** - * Access to the library method to Read a File or Folder (PROPFIND DEPTH 1) + * Access to the library method to Read a Folder (PROPFIND DEPTH 1) * @param remotePath * * @return */ public RemoteOperationResult readFile(String remotePath) { - ReadRemoteFileOperation readOperation= new ReadRemoteFileOperation(remotePath); + ReadRemoteFolderOperation readOperation= new ReadRemoteFolderOperation(remotePath); RemoteOperationResult result = readOperation.execute(mClient); return result; diff --git a/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteFile.java b/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteFile.java index 184ef3f9..226f1f43 100644 --- a/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteFile.java +++ b/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteFile.java @@ -7,6 +7,11 @@ import android.os.Parcelable; import com.owncloud.android.oc_framework.utils.FileUtils; +/** + * Contains the data of a Remote File from a WebDavEntry + * + * @author masensio + */ public class RemoteFile implements Parcelable, Serializable{ diff --git a/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/ReadRemoteFileOperation.java b/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/ReadRemoteFileOperation.java deleted file mode 100644 index d72a30f9..00000000 --- a/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/ReadRemoteFileOperation.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.owncloud.android.oc_framework.operations.remote; - -import java.util.ArrayList; - -import org.apache.http.HttpStatus; -import org.apache.jackrabbit.webdav.DavConstants; -import org.apache.jackrabbit.webdav.MultiStatus; -import org.apache.jackrabbit.webdav.client.methods.PropFindMethod; - -import android.util.Log; - -import com.owncloud.android.oc_framework.network.webdav.WebdavClient; -import com.owncloud.android.oc_framework.network.webdav.WebdavEntry; -import com.owncloud.android.oc_framework.network.webdav.WebdavUtils; -import com.owncloud.android.oc_framework.operations.RemoteFile; -import com.owncloud.android.oc_framework.operations.RemoteOperation; -import com.owncloud.android.oc_framework.operations.RemoteOperationResult; - -/** - * Remote operation performing the read of remote file or folder in the ownCloud server. - * - * @author David A. Velasco - * @author masensio - */ - -public class ReadRemoteFileOperation extends RemoteOperation { - - private static final String TAG = ReadRemoteFileOperation.class.getSimpleName(); - - private String mRemotePath; - private RemoteFile mFolder; - private ArrayList mFiles; - - /** - * Constructor - * - * @param remotePath Remote path of the file. - */ - public ReadRemoteFileOperation(String remotePath) { - mRemotePath = remotePath; - } - - /** - * Performs the read operation. - * - * @param client Client object to communicate with the remote ownCloud server. - */ - @Override - protected RemoteOperationResult run(WebdavClient client) { - RemoteOperationResult result = null; - PropFindMethod query = null; - - try { - // remote request - query = new PropFindMethod(client.getBaseUri() + WebdavUtils.encodePath(mRemotePath), - DavConstants.PROPFIND_ALL_PROP, - DavConstants.DEPTH_1); - int status = client.executeMethod(query); - - // check and process response - if (isMultiStatus(status)) { - // get data from remote folder - MultiStatus dataInServer = query.getResponseBodyAsMultiStatus(); - readData(dataInServer, client); - - // Result of the operation - result = new RemoteOperationResult(true, status, query.getResponseHeaders()); - // Add data to the result - if (result.isSuccess()) { - result.setFile(mFolder); - result.setData(mFiles); - } - } else { - // synchronization failed - client.exhaustResponse(query.getResponseBodyAsStream()); - result = new RemoteOperationResult(false, status, query.getResponseHeaders()); - } - - } catch (Exception e) { - result = new RemoteOperationResult(e); - - - } finally { - if (query != null) - query.releaseConnection(); // let the connection available for other methods - if (result.isSuccess()) { - Log.i(TAG, "Synchronized " + mRemotePath + ": " + result.getLogMessage()); - } else { - if (result.isException()) { - Log.e(TAG, "Synchronized " + mRemotePath + ": " + result.getLogMessage(), result.getException()); - } else { - Log.e(TAG, "Synchronized " + mRemotePath + ": " + result.getLogMessage()); - } - } - - } - return result; - } - - public boolean isMultiStatus(int status) { - return (status == HttpStatus.SC_MULTI_STATUS); - } - - /** - * Read the data retrieved from the server about the contents of the target folder - * - * - * @param dataInServer Full response got from the server with the data of the target - * folder and its direct children. - * @param client Client instance to the remote server where the data were - * retrieved. - * @return - */ - private void readData(MultiStatus dataInServer, WebdavClient client) { - // parse data from remote folder - WebdavEntry we = new WebdavEntry(dataInServer.getResponses()[0], client.getBaseUri().getPath()); - mFolder = fillOCFile(we); - - Log.d(TAG, "Remote folder " + mRemotePath + " changed - starting update of local data "); - - - // loop to update every child - RemoteFile remoteFile = null; - mFiles = new ArrayList(); - for (int i = 1; i < dataInServer.getResponses().length; ++i) { - /// new OCFile instance with the data from the server - we = new WebdavEntry(dataInServer.getResponses()[i], client.getBaseUri().getPath()); - remoteFile = fillOCFile(we); - - mFiles.add(remoteFile); - } - - } - - /** - * Creates and populates a new {@link RemoteFile} object with the data read from the server. - * - * @param we WebDAV entry read from the server for a WebDAV resource (remote file or folder). - * @return New OCFile instance representing the remote resource described by we. - */ - private RemoteFile fillOCFile(WebdavEntry we) { - RemoteFile file = new RemoteFile(we.decodedPath()); - file.setCreationTimestamp(we.createTimestamp()); - file.setLength(we.contentLength()); - file.setMimeType(we.contentType()); - file.setModifiedTimestamp(we.modifiedTimestamp()); - file.setEtag(we.etag()); - return file; - } -} diff --git a/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/ReadRemoteFolderOperation.java b/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/ReadRemoteFolderOperation.java new file mode 100644 index 00000000..3a9eb193 --- /dev/null +++ b/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/ReadRemoteFolderOperation.java @@ -0,0 +1,148 @@ +package com.owncloud.android.oc_framework.operations.remote; + +import java.util.ArrayList; + +import org.apache.http.HttpStatus; +import org.apache.jackrabbit.webdav.DavConstants; +import org.apache.jackrabbit.webdav.MultiStatus; +import org.apache.jackrabbit.webdav.client.methods.PropFindMethod; + +import android.util.Log; + +import com.owncloud.android.oc_framework.network.webdav.WebdavClient; +import com.owncloud.android.oc_framework.network.webdav.WebdavEntry; +import com.owncloud.android.oc_framework.network.webdav.WebdavUtils; +import com.owncloud.android.oc_framework.operations.RemoteFile; +import com.owncloud.android.oc_framework.operations.RemoteOperation; +import com.owncloud.android.oc_framework.operations.RemoteOperationResult; + +/** + * Remote operation performing the read of remote file or folder in the ownCloud server. + * + * @author David A. Velasco + * @author masensio + */ + +public class ReadRemoteFolderOperation extends RemoteOperation { + + private static final String TAG = ReadRemoteFolderOperation.class.getSimpleName(); + + private String mRemotePath; + private RemoteFile mFolder; + private ArrayList mFiles; + + /** + * Constructor + * + * @param remotePath Remote path of the file. + */ + public ReadRemoteFolderOperation(String remotePath) { + mRemotePath = remotePath; + } + + /** + * Performs the read operation. + * + * @param client Client object to communicate with the remote ownCloud server. + */ + @Override + protected RemoteOperationResult run(WebdavClient client) { + RemoteOperationResult result = null; + PropFindMethod query = null; + + try { + // remote request + query = new PropFindMethod(client.getBaseUri() + WebdavUtils.encodePath(mRemotePath), + DavConstants.PROPFIND_ALL_PROP, + DavConstants.DEPTH_1); + int status = client.executeMethod(query); + + // check and process response + if (isMultiStatus(status)) { + // get data from remote folder + MultiStatus dataInServer = query.getResponseBodyAsMultiStatus(); + readData(dataInServer, client); + + // Result of the operation + result = new RemoteOperationResult(true, status, query.getResponseHeaders()); + // Add data to the result + if (result.isSuccess()) { + result.setFile(mFolder); + result.setData(mFiles); + } + } else { + // synchronization failed + client.exhaustResponse(query.getResponseBodyAsStream()); + result = new RemoteOperationResult(false, status, query.getResponseHeaders()); + } + + } catch (Exception e) { + result = new RemoteOperationResult(e); + + + } finally { + if (query != null) + query.releaseConnection(); // let the connection available for other methods + if (result.isSuccess()) { + Log.i(TAG, "Synchronized " + mRemotePath + ": " + result.getLogMessage()); + } else { + if (result.isException()) { + Log.e(TAG, "Synchronized " + mRemotePath + ": " + result.getLogMessage(), result.getException()); + } else { + Log.e(TAG, "Synchronized " + mRemotePath + ": " + result.getLogMessage()); + } + } + + } + return result; + } + + public boolean isMultiStatus(int status) { + return (status == HttpStatus.SC_MULTI_STATUS); + } + + /** + * Read the data retrieved from the server about the contents of the target folder + * + * + * @param dataInServer Full response got from the server with the data of the target + * folder and its direct children. + * @param client Client instance to the remote server where the data were + * retrieved. + * @return + */ + private void readData(MultiStatus dataInServer, WebdavClient client) { + // parse data from remote folder + WebdavEntry we = new WebdavEntry(dataInServer.getResponses()[0], client.getBaseUri().getPath()); + mFolder = fillOCFile(we); + + + // loop to update every child + RemoteFile remoteFile = null; + mFiles = new ArrayList(); + for (int i = 1; i < dataInServer.getResponses().length; ++i) { + /// new OCFile instance with the data from the server + we = new WebdavEntry(dataInServer.getResponses()[i], client.getBaseUri().getPath()); + remoteFile = fillOCFile(we); + + mFiles.add(remoteFile); + } + + } + + /** + * Creates and populates a new {@link RemoteFile} object with the data read from the server. + * + * @param we WebDAV entry read from the server for a WebDAV resource (remote file or folder). + * @return New OCFile instance representing the remote resource described by we. + */ + private RemoteFile fillOCFile(WebdavEntry we) { + RemoteFile file = new RemoteFile(we.decodedPath()); + file.setCreationTimestamp(we.createTimestamp()); + file.setLength(we.contentLength()); + file.setMimeType(we.contentType()); + file.setModifiedTimestamp(we.modifiedTimestamp()); + file.setEtag(we.etag()); + return file; + } +} diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 73daed3f..2fc9d28b 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -45,7 +45,7 @@ import com.owncloud.android.oc_framework.network.webdav.WebdavUtils; import com.owncloud.android.oc_framework.operations.RemoteOperation; import com.owncloud.android.oc_framework.operations.RemoteOperationResult; import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode; -import com.owncloud.android.oc_framework.operations.remote.ReadRemoteFileOperation; +import com.owncloud.android.oc_framework.operations.remote.ReadRemoteFolderOperation; import com.owncloud.android.oc_framework.operations.RemoteFile; import com.owncloud.android.syncadapter.FileSyncService; import com.owncloud.android.utils.FileStorageUtils; @@ -244,7 +244,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { private RemoteOperationResult fetchAndSyncRemoteFolder(WebdavClient client) { String remotePath = mLocalFolder.getRemotePath(); - ReadRemoteFileOperation operation = new ReadRemoteFileOperation(remotePath); + ReadRemoteFolderOperation operation = new ReadRemoteFolderOperation(remotePath); RemoteOperationResult result = operation.execute(client); Log_OC.d(TAG, "Synchronizing " + mAccount.name + remotePath);