androidTest: Fix OpenPgpServiceTest

- fix class to solve exception
- add sleeps to wait for activities (ugly)
This commit is contained in:
Andrea Torlaschi
2016-06-11 15:25:17 +02:00
parent 77284a3594
commit 3b4f608ba1

View File

@@ -1,10 +1,8 @@
package org.sufficientlysecure.keychain.remote;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.support.test.InstrumentationRegistry;
@@ -21,6 +19,9 @@ import org.openintents.openpgp.IOpenPgpService2;
import org.openintents.openpgp.util.OpenPgpApi;
import org.sufficientlysecure.keychain.R;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import static android.support.test.espresso.Espresso.onData;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
@@ -41,31 +42,29 @@ public class OpenPgpServiceTest {
@Rule
public final ServiceTestRule mServiceRule = new ServiceTestRule();
OpenPgpApi mApi;
private OpenPgpApi mApi;
@Before
public void setUp() throws Exception {
Context context = InstrumentationRegistry.getTargetContext();
cleanupForTests(InstrumentationRegistry.getTargetContext());
cleanupForTests(context);
Intent serviceIntent = new Intent(InstrumentationRegistry.getTargetContext(), OpenPgpService.class);
Intent serviceIntent = new Intent(context, OpenPgpService2.class);
IBinder binder = mServiceRule.bindService(serviceIntent);
mApi = new OpenPgpApi(InstrumentationRegistry.getTargetContext(),
IOpenPgpService2.Stub.asInterface(binder));
mApi = new OpenPgpApi(context, IOpenPgpService2.Stub.asInterface(binder));
}
@Test
public void testStuff() throws Exception {
// TODO why does this not ask for general usage permissions?!
{
Intent intent = new Intent();
intent.setAction(OpenPgpApi.ACTION_ENCRYPT);
intent.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true);
intent.putExtra(OpenPgpApi.EXTRA_KEY_IDS, new long[] { 0x9D604D2F310716A3L });
intent.putExtra(OpenPgpApi.EXTRA_KEY_IDS, new long[]{0x9D604D2F310716A3L});
ByteArrayInputStream is = new ByteArrayInputStream("swag".getBytes());
ByteArrayOutputStream os = new ByteArrayOutputStream();
@@ -80,7 +79,6 @@ public class OpenPgpServiceTest {
pi.send();
onView(withText(R.string.api_register_allow)).perform(click());
}
byte[] ciphertext;
@@ -88,14 +86,14 @@ public class OpenPgpServiceTest {
Intent intent = new Intent();
intent.setAction(OpenPgpApi.ACTION_ENCRYPT);
intent.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true);
intent.putExtra(OpenPgpApi.EXTRA_KEY_IDS, new long[] { 0x9D604D2F310716A3L });
intent.putExtra(OpenPgpApi.EXTRA_KEY_IDS, new long[]{0x9D604D2F310716A3L});
ByteArrayInputStream is = new ByteArrayInputStream("swag".getBytes());
ByteArrayOutputStream os = new ByteArrayOutputStream();
Intent result = mApi.executeApi(intent, is, os);
assertThat("result is ok",
assertThat("result is encrypt ok",
result.getIntExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR),
is(OpenPgpApi.RESULT_CODE_SUCCESS));
@@ -118,14 +116,11 @@ public class OpenPgpServiceTest {
PendingIntent pi = result.getParcelableExtra(OpenPgpApi.RESULT_INTENT);
pi.send();
Thread.sleep(1 * 1000); // Wait for activity to start
onData(withKeyItemId(0x9D604D2F310716A3L))
.inAdapterView(isAssignableFrom(AdapterView.class))
.perform(click());
onView(withText(R.string.api_settings_save)).perform(click());
// unfortunately, getting the activity result from the
}
{ // decrypt again, this time pending passphrase
@@ -144,6 +139,7 @@ public class OpenPgpServiceTest {
PendingIntent pi = result.getParcelableExtra(OpenPgpApi.RESULT_INTENT);
pi.send();
Thread.sleep(1 * 1000); // Wait for activity to start
onView(withId(R.id.passphrase_passphrase)).perform(typeText("x"));
onView(withText(R.string.btn_unlock)).perform(click());
}
@@ -157,15 +153,13 @@ public class OpenPgpServiceTest {
Intent result = mApi.executeApi(intent, is, os);
assertThat("result is pending passphrase",
assertThat("result is decrypt ok",
result.getIntExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR),
is(OpenPgpApi.RESULT_CODE_SUCCESS));
byte[] plaintext = os.toByteArray();
assertThat("decrypted plaintext matches plaintext", new String(plaintext), is("swag"));
}
}
}