/* * Copyright (c) 2012 Socialize Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.socialize.test.twitter; import android.content.Context; import android.view.View; import com.socialize.auth.twitter.ITwitterAuthWebView; import com.socialize.auth.twitter.TwitterAuthListener; import com.socialize.auth.twitter.TwitterAuthView; import com.socialize.error.SocializeException; import com.socialize.test.SocializeUnitTest; import com.socialize.testapp.mock.MockRelativeLayoutParams; import org.mockito.Mockito; /** * @author Jason Polites * */ public class TwitterAuthViewTest extends SocializeUnitTest { public void testInit() { final ITwitterAuthWebView webView = Mockito.mock(ITwitterAuthWebView.class); final MockRelativeLayoutParams params = Mockito.mock(MockRelativeLayoutParams.class); final View view = Mockito.mock(View.class); Mockito.when(webView.getView()).thenReturn(view); TwitterAuthView authView = new TwitterAuthView(getContext()) { @Override protected LayoutParams newLayoutParams(int width, int height) { return params; } @Override protected ITwitterAuthWebView newTwitterAuthWebView(Context context) { return webView; } @Override public void addView(View child) { addResult(0, child); } }; authView.init(); Mockito.verify(webView).init(); Mockito.verify(webView).setLayoutParams(params); assertSame(view, getResult(0)); } public void testAuthenticate() { final MockRelativeLayoutParams params = Mockito.mock(MockRelativeLayoutParams.class); final TwitterAuthListener twitterAuthListener = Mockito.mock(TwitterAuthListener.class); final SocializeException error = Mockito.mock(SocializeException.class); final String consumerKey = "foo"; final String consumerSecret = "bar"; final String token = "foobar_token"; final String secret = "foobar_secret"; final String screenName = "foobar_screenName"; final String userId = "foobar_userId"; final ITwitterAuthWebView webView = new ITwitterAuthWebView() { int index = 0; @Override public void init() {} @Override public synchronized void authenticate(String consumerKey, String consumerSecret, TwitterAuthListener listener) { addResult(index++, consumerKey); addResult(index++, consumerSecret); addResult(index++, listener); } @Override public void setVisibility(int visibility) { addResult(index++, visibility); } @Override public void setLayoutParams(android.view.ViewGroup.LayoutParams params) {} @Override public View getView() { return null; } }; TwitterAuthView authView = new TwitterAuthView(getContext()) { @Override protected LayoutParams newLayoutParams(int width, int height) { return params; } @Override protected ITwitterAuthWebView newTwitterAuthWebView(Context context) { return webView; } @Override public void addView(View child) {} }; authView.setConsumerKey(consumerKey); authView.setConsumerSecret(consumerSecret); authView.setTwitterAuthListener(twitterAuthListener); authView.init(); authView.authenticate(); assertEquals(consumerKey, getResult(0)); assertEquals(consumerSecret, getResult(1)); TwitterAuthListener listener = getResult(2); assertNotNull(listener); listener.onError(error); listener.onAuthSuccess(token, secret, screenName, userId); listener.onCancel(); Mockito.verify(twitterAuthListener).onAuthSuccess(token, secret, screenName, userId); Mockito.verify(twitterAuthListener).onError(error); Mockito.verify(twitterAuthListener).onCancel(); assertEquals(View.GONE, getResult(3)); assertEquals(View.GONE, getResult(4)); assertEquals(View.GONE, getResult(5)); } }