AccountSetupOutgoingTests.java revision e6cc662abc0b5fffe223cda5e980b4f05a4e91dd
196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/* 296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License. 696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at 796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and 1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License. 1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpackage com.android.email.activity.setup; 1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport com.android.email.R; 20a290f503f14432163f74548a5e5d1dc5003ad049Marc Blankimport com.android.email.provider.EmailContent; 2196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 2296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.content.Intent; 2396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.test.ActivityInstrumentationTestCase2; 2496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.test.UiThreadTest; 2596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.test.suitebuilder.annotation.MediumTest; 2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.Button; 2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.EditText; 2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/** 3096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Tests of the basic UI logic in the Account Setup Outgoing (SMTP) screen. 31e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * You can run this entire test case with: 32e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * runtest -c com.android.email.activity.setup.AccountSetupOutgoingTests email 3396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 3496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project@MediumTest 3596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpublic class AccountSetupOutgoingTests extends 3696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ActivityInstrumentationTestCase2<AccountSetupOutgoing> { 3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 3896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private AccountSetupOutgoing mActivity; 3996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private EditText mServerView; 4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private Button mNextButton; 4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 4296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public AccountSetupOutgoingTests() { 4383457b0235b8a13e2d885d5b7550784ad470bb9cMakoto Onuki super(AccountSetupOutgoing.class); 4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 4696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 4796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Common setup code for all tests. Sets up a default launch intent, which some tests 4896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * will use (others will override). 4996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 5096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project @Override 5196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected void setUp() throws Exception { 5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project super.setUp(); 5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 5496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project // This sets up a default URI which can be used by any of the test methods below. 5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project // Individual test methods can replace this with a custom URI if they wish 5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project // (except those that run on the UI thread - for them, it's too late to change it.) 5796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Intent i = getTestIntent("smtp://user:password@server.com:999"); 5896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project setActivityIntent(i); 5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 6096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 6196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 6296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Test processing with a complete, good URI -> good fields 6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testGoodUri() { 6596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project getActivityAndFields(); 6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertTrue(mNextButton.isEnabled()); 6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 6996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 7096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * No user is not OK - not enabled 7196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 7296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testBadUriNoUser() { 7396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Intent i = getTestIntent("smtp://:password@server.com:999"); 7496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project setActivityIntent(i); 7596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project getActivityAndFields(); 7696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertFalse(mNextButton.isEnabled()); 7796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 7896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 7996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 8096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * No password is not OK - not enabled 8196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 8296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testBadUriNoPassword() { 8396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Intent i = getTestIntent("smtp://user@server.com:999"); 8496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project setActivityIntent(i); 8596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project getActivityAndFields(); 8696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertFalse(mNextButton.isEnabled()); 8796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 8896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 8996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 9096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * No port is OK - still enabled 9196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 9296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testGoodUriNoPort() { 9396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Intent i = getTestIntent("smtp://user:password@server.com"); 9496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project setActivityIntent(i); 9596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project getActivityAndFields(); 9696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertTrue(mNextButton.isEnabled()); 9796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 9896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 9996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 10096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Test for non-standard but OK server names 10196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 10296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project @UiThreadTest 10396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testGoodServerVariants() { 10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project getActivityAndFields(); 10596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertTrue(mNextButton.isEnabled()); 10696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 10796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mServerView.setText(" server.com "); 10896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertTrue(mNextButton.isEnabled()); 10996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 11096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 11196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 11296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Test for non-empty but non-OK server names 11396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 11496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project @UiThreadTest 11596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testBadServerVariants() { 11696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project getActivityAndFields(); 11796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertTrue(mNextButton.isEnabled()); 11896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 11996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mServerView.setText(" "); 12096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertFalse(mNextButton.isEnabled()); 12196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 12296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mServerView.setText("serv$er.com"); 12396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertFalse(mNextButton.isEnabled()); 12496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 12596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 12696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 12796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * TODO: A series of tests to explore the logic around security models & ports 12896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 12996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 13096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 13196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Get the activity (which causes it to be started, using our intent) and get the UI fields 13296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 13396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private void getActivityAndFields() { 13496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mActivity = getActivity(); 13596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mServerView = (EditText) mActivity.findViewById(R.id.account_server); 13696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mNextButton = (Button) mActivity.findViewById(R.id.next); 13796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 13896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 13996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 14096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Create an intent with the Account in it 14196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 14296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private Intent getTestIntent(String senderUriString) { 143a290f503f14432163f74548a5e5d1dc5003ad049Marc Blank EmailContent.Account account = new EmailContent.Account(); 144d2b0efa2f591f883eaad3d9f8996bbacdcec5c34Andrew Stadler account.setSenderUri(this.getInstrumentation().getTargetContext(), senderUriString); 145e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank SetupData.init(SetupData.FLOW_MODE_NORMAL, account); 146e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return new Intent(Intent.ACTION_MAIN); 14796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 14896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 14996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project} 150