OSDN Git Service

Add TokenAuthenticationActivity tests
authoreagletmt <eagletmt@gmail.com>
Mon, 24 Sep 2012 05:51:59 +0000 (14:51 +0900)
committereagletmt <eagletmt@gmail.com>
Mon, 24 Sep 2012 05:51:59 +0000 (14:51 +0900)
CUTEnTest/src/jp/ac/titech/sharp4k/cuten/test/AbnormalTokenAuthenticationActivityTest.java [new file with mode: 0644]
CUTEnTest/src/jp/ac/titech/sharp4k/cuten/test/NormalTokenAuthenticationActivityTest.java [new file with mode: 0644]

diff --git a/CUTEnTest/src/jp/ac/titech/sharp4k/cuten/test/AbnormalTokenAuthenticationActivityTest.java b/CUTEnTest/src/jp/ac/titech/sharp4k/cuten/test/AbnormalTokenAuthenticationActivityTest.java
new file mode 100644 (file)
index 0000000..e3e0458
--- /dev/null
@@ -0,0 +1,114 @@
+package jp.ac.titech.sharp4k.cuten.test;
+
+import java.util.List;
+
+import jp.ac.titech.sharp4k.cuten.Achievement;
+import jp.ac.titech.sharp4k.cuten.HttpAPIClient;
+import jp.ac.titech.sharp4k.cuten.HttpResponseListener;
+import jp.ac.titech.sharp4k.cuten.Lecture;
+import jp.ac.titech.sharp4k.cuten.Token;
+import jp.ac.titech.sharp4k.cuten.TokenAuthenticationActivity;
+import roboguice.RoboGuice;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import android.app.Application;
+import android.content.Context;
+import android.test.ActivityInstrumentationTestCase2;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class AbnormalTokenAuthenticationActivityTest extends
+               ActivityInstrumentationTestCase2<TokenAuthenticationActivity> {
+       private static class AbnormalHttpModule extends AbstractModule {
+               @Override
+               protected void configure() {
+                       bind(HttpAPIClient.class).to(AbormalHttpAPIClient.class);
+               }
+       }
+
+       private static class AbormalHttpAPIClient implements HttpAPIClient {
+               @Override
+               public void getUsersProfile(String token, HttpResponseListener listener) {
+                       listener.preExec();
+                       listener.onUnauthorized();
+                       listener.postExec();
+               }
+
+               @Override
+               public void getLectures(HttpResponseListener listener) {
+               }
+
+               @Override
+               public void getLectures(List<Lecture> lectures,
+                               HttpResponseListener listener) {
+               }
+
+               @Override
+               public void resetToken(String token, HttpResponseListener listener) {
+               }
+
+               @Override
+               public void putAchievement(String token, Achievement achievement,
+                               HttpResponseListener listener) {
+               }
+       }
+
+       private TokenAuthenticationActivity activity;
+       private String savedToken;
+       private static final String dummyToken = "dummytoken";
+       private EditText tokenEdit;
+       private Button authButton;
+
+       public AbnormalTokenAuthenticationActivityTest() {
+               super(TokenAuthenticationActivity.class);
+       }
+
+       @Override
+       protected void setUp() throws Exception {
+               super.setUp();
+               Context ctx = getInstrumentation().getTargetContext();
+               Application app = (Application) ctx.getApplicationContext();
+               Module m = Modules.override(RoboGuice.newDefaultRoboModule(app)).with(
+                               new AbnormalHttpModule(), new DummyDBModule());
+               RoboGuice.setBaseApplicationInjector(app, RoboGuice.DEFAULT_STAGE, m);
+               savedToken = Token.load(ctx);
+               Token.save(dummyToken, ctx);
+
+               activity = getActivity();
+               tokenEdit = (EditText) activity
+                               .findViewById(jp.ac.titech.sharp4k.cuten.R.id.token);
+               authButton = (Button) activity
+                               .findViewById(jp.ac.titech.sharp4k.cuten.R.id.authentication);
+       }
+
+       @Override
+       protected void tearDown() throws Exception {
+               Token.delete(activity);
+               if (savedToken != null) {
+                       Token.save(savedToken, activity);
+               }
+               super.tearDown();
+       }
+
+       public void testKeepCurrentTokenOnFailure() throws Exception {
+               assertNotNull(tokenEdit);
+               assertNotNull(authButton);
+
+               final String inputToken = "deadbeef";
+               activity.runOnUiThread(new Runnable() {
+                       @Override
+                       public void run() {
+                               tokenEdit.setText(inputToken);
+                               authButton.performClick();
+                       }
+               });
+               getInstrumentation().waitForIdleSync();
+
+               String token = Token.load(activity);
+               assertFalse(token.equals(inputToken));
+               assertEquals(dummyToken, token);
+       }
+}
diff --git a/CUTEnTest/src/jp/ac/titech/sharp4k/cuten/test/NormalTokenAuthenticationActivityTest.java b/CUTEnTest/src/jp/ac/titech/sharp4k/cuten/test/NormalTokenAuthenticationActivityTest.java
new file mode 100644 (file)
index 0000000..cca28d6
--- /dev/null
@@ -0,0 +1,111 @@
+package jp.ac.titech.sharp4k.cuten.test;
+
+import java.util.List;
+
+import jp.ac.titech.sharp4k.cuten.Achievement;
+import jp.ac.titech.sharp4k.cuten.HttpAPIClient;
+import jp.ac.titech.sharp4k.cuten.HttpResponseListener;
+import jp.ac.titech.sharp4k.cuten.Lecture;
+import jp.ac.titech.sharp4k.cuten.Token;
+import jp.ac.titech.sharp4k.cuten.TokenAuthenticationActivity;
+import roboguice.RoboGuice;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import android.app.Application;
+import android.content.Context;
+import android.test.ActivityInstrumentationTestCase2;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class NormalTokenAuthenticationActivityTest extends
+               ActivityInstrumentationTestCase2<TokenAuthenticationActivity> {
+       private static class NormalHttpModule extends AbstractModule {
+               @Override
+               protected void configure() {
+                       bind(HttpAPIClient.class).to(NormalHttpAPIClient.class);
+               }
+       }
+
+       private static class NormalHttpAPIClient implements HttpAPIClient {
+               @Override
+               public void getUsersProfile(String token, HttpResponseListener listener) {
+                       listener.preExec();
+                       listener.onSuccess("");
+                       listener.postExec();
+               }
+
+               @Override
+               public void getLectures(HttpResponseListener listener) {
+               }
+
+               @Override
+               public void getLectures(List<Lecture> lectures,
+                               HttpResponseListener listener) {
+               }
+
+               @Override
+               public void resetToken(String token, HttpResponseListener listener) {
+               }
+
+               @Override
+               public void putAchievement(String token, Achievement achievement,
+                               HttpResponseListener listener) {
+               }
+       }
+
+       private TokenAuthenticationActivity activity;
+       private String savedToken;
+       private EditText tokenEdit;
+       private Button authButton;
+
+       public NormalTokenAuthenticationActivityTest() {
+               super(TokenAuthenticationActivity.class);
+       }
+
+       @Override
+       protected void setUp() throws Exception {
+               super.setUp();
+               Context ctx = getInstrumentation().getTargetContext();
+               Application app = (Application) ctx.getApplicationContext();
+               Module m = Modules.override(RoboGuice.newDefaultRoboModule(app)).with(
+                               new NormalHttpModule(), new DummyDBModule());
+               RoboGuice.setBaseApplicationInjector(app, RoboGuice.DEFAULT_STAGE, m);
+               savedToken = Token.load(ctx);
+               Token.save("dummytoken", ctx);
+
+               activity = getActivity();
+               tokenEdit = (EditText) activity
+                               .findViewById(jp.ac.titech.sharp4k.cuten.R.id.token);
+               authButton = (Button) activity
+                               .findViewById(jp.ac.titech.sharp4k.cuten.R.id.authentication);
+       }
+
+       @Override
+       protected void tearDown() throws Exception {
+               Token.delete(activity);
+               if (savedToken != null) {
+                       Token.save(savedToken, activity);
+               }
+               super.tearDown();
+       }
+
+       public void testAuthentication() throws Exception {
+               assertNotNull(tokenEdit);
+               assertNotNull(authButton);
+               final String dummyToken = "deadbeef";
+               activity.runOnUiThread(new Runnable() {
+                       @Override
+                       public void run() {
+                               tokenEdit.setText(dummyToken);
+                               authButton.performClick();
+                       }
+               });
+               getInstrumentation().waitForIdleSync();
+
+               String token = Token.load(activity);
+               assertEquals(dummyToken, token);
+       }
+}
\ No newline at end of file