Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ba18ef5 authored by fionaxu's avatar fionaxu
Browse files

Add tests for CdmaSmsDispatcher with code cleanup

bug: 2569137
Change-Id: I4a116b753b2fe79e64786293e5c9c1cf6e04b430
parent 7d617543
Loading
Loading
Loading
Loading
+2 −19
Original line number Diff line number Diff line
@@ -22,18 +22,14 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.isNull;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.times;

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.HandlerThread;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.SmallTest;

import static com.android.internal.telephony.TelephonyTestUtils.waitForMs;
@@ -45,17 +41,10 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;

public class ImsSMSDispatcherTest extends TelephonyTest {
    @Mock
    private SmsStorageMonitor mSmsStorageMonitor;
    @Mock
    private SmsUsageMonitor mSmsUsageMonitor;
    @Mock
    private PackageInfo mPackageInfo;
    @Mock
    private SMSDispatcher.SmsTracker mTracker;

    private ImsSMSDispatcher mImsSmsDispatcher;
    private TelephonyManager mTelephonyManager;

    private class ImsSmsDispatcherTestHandler extends HandlerThread {

@@ -76,12 +65,7 @@ public class ImsSMSDispatcherTest extends TelephonyTest {
    @Before
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());
        mTelephonyManager = TelephonyManager.from(mContextFixture.getTestDouble());
        doReturn(true).when(mTelephonyManager).getSmsSendCapableForPhone(anyInt(), anyBoolean());
        PackageManager mockPackageManager = mContextFixture.getTestDouble().getPackageManager();
        doReturn(new String[]{TAG}).when(mockPackageManager).getPackagesForUid(anyInt());
        doReturn(mPackageInfo).when(mockPackageManager).getPackageInfo(eq(TAG), anyInt());
        doReturn(true).when(mSmsUsageMonitor).check(anyString(), anyInt());
        setupMockPackagePermissionChecks();

        new ImsSmsDispatcherTestHandler(getClass().getSimpleName()).start();
        waitUntilReady();
@@ -128,7 +112,6 @@ public class ImsSMSDispatcherTest extends TelephonyTest {

    @Test @SmallTest
    public void testSendImsCdmaTest() throws Exception {
        ArgumentCaptor<byte[]> captor = ArgumentCaptor.forClass(byte[].class);
        switchImsSmsFormat(PhoneConstants.PHONE_TYPE_CDMA);
        mImsSmsDispatcher.sendText("111"/* desAddr*/, "222" /*scAddr*/, TAG,
                null, null, null, null, false);
@@ -139,7 +122,7 @@ public class ImsSMSDispatcherTest extends TelephonyTest {
    @Test @SmallTest
    public void testSendRetrySmsCdmaTest() throws Exception {
        // newFormat will be based on voice technology
        ArgumentCaptor<byte[]> captor = ArgumentCaptor.forClass(byte[].class);;
        ArgumentCaptor<byte[]> captor = ArgumentCaptor.forClass(byte[].class);
        switchImsSmsFormat(PhoneConstants.PHONE_TYPE_CDMA);
        replaceInstance(SMSDispatcher.SmsTracker.class, "mFormat", mTracker,
                SmsConstants.FORMAT_3GPP2);
+22 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ import android.content.Context;
import android.content.IIntentSender;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -157,6 +159,12 @@ public abstract class TelephonyTest {
    protected IIntentSender mIIntentSender;
    @Mock
    protected IBinder mIBinder;
    @Mock
    protected SmsStorageMonitor mSmsStorageMonitor;
    @Mock
    protected SmsUsageMonitor mSmsUsageMonitor;
    @Mock
    protected PackageInfo mPackageInfo;

    protected SimulatedCommands mSimulatedCommands;
    protected ContextFixture mContextFixture;
@@ -364,6 +372,14 @@ public abstract class TelephonyTest {
            }
        }).when(mIccCardProxy).getIccRecords();

        //SMS
        doReturn(true).when(mSmsStorageMonitor).isStorageAvailable();
        doReturn(true).when(mSmsUsageMonitor).check(anyString(), anyInt());
        TelephonyManager mTelephonyManager = TelephonyManager.from(mContextFixture.getTestDouble());
        doReturn(true).when(mTelephonyManager).getSmsReceiveCapableForPhone(anyInt(), anyBoolean());
        doReturn(true).when(mTelephonyManager).getSmsSendCapableForPhone(
                anyInt(), anyBoolean());

        //Misc
        doReturn(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS).when(mServiceState).
                getRilDataRadioTechnology();
@@ -415,4 +431,10 @@ public abstract class TelephonyTest {
            return null;
        }
    }

    protected void setupMockPackagePermissionChecks() throws Exception {
        PackageManager mockPackageManager = mContext.getPackageManager();
        doReturn(new String[]{TAG}).when(mockPackageManager).getPackagesForUid(anyInt());
        doReturn(mPackageInfo).when(mockPackageManager).getPackageInfo(eq(TAG), anyInt());
    }
}
+17 −15
Original line number Diff line number Diff line
@@ -18,30 +18,20 @@ package com.android.internal.telephony.cdma;

import android.os.HandlerThread;
import android.os.Message;
import android.telephony.*;
import android.test.suitebuilder.annotation.SmallTest;

import com.android.internal.telephony.ImsSMSDispatcher;
import com.android.internal.telephony.SMSDispatcher;
import com.android.internal.telephony.SmsStorageMonitor;
import com.android.internal.telephony.SmsUsageMonitor;
import com.android.internal.telephony.TelephonyTest;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Spy;

public class CdmaSmsDispatcherTest extends TelephonyTest {
    @Mock
    private SmsStorageMonitor mSmsStorageMonitor;
    @Mock
    private SmsUsageMonitor mSmsUsageMonitor;
    @Mock
    private android.telephony.SmsMessage mSmsMessage;
    @Mock
@@ -52,7 +42,6 @@ public class CdmaSmsDispatcherTest extends TelephonyTest {
    private SMSDispatcher.SmsTracker mSmsTracker;

    private CdmaSMSDispatcher mCdmaSmsDispatcher;
    private TelephonyManager mTelephonyManager;

    private class CdmaSmsDispatcherTestHandler extends HandlerThread {

@@ -70,11 +59,9 @@ public class CdmaSmsDispatcherTest extends TelephonyTest {

    @Before
    public void setUp() throws Exception {
        super.setUp("CdmaSmsDispatcherTest");
        super.setUp(this.getClass().getSimpleName());

        mTelephonyManager = TelephonyManager.from(mContext);
        doReturn(true).when(mTelephonyManager).getSmsReceiveCapableForPhone(anyInt(), anyBoolean());
        doReturn(true).when(mSmsStorageMonitor).isStorageAvailable();
        setupMockPackagePermissionChecks();

        new CdmaSmsDispatcherTestHandler(TAG).start();
        waitUntilReady();
@@ -92,4 +79,19 @@ public class CdmaSmsDispatcherTest extends TelephonyTest {
        mCdmaSmsDispatcher.sendSms(mSmsTracker);
        verify(mSimulatedCommandsVerifier).sendCdmaSms(any(byte[].class), any(Message.class));
    }

    @Test @SmallTest
    public void testSendText() {
        mCdmaSmsDispatcher.sendText("111"/* desAddr*/, "222" /*scAddr*/, TAG,
                null, null, null, null, false);
        verify(mSimulatedCommandsVerifier).sendCdmaSms(any(byte[].class), any(Message.class));
    }

    @Test @SmallTest
    public void testSendTextWithOutDesAddr() {
        mCdmaSmsDispatcher.sendText(null, "222" /*scAddr*/, TAG,
                null, null, null, null, false);
        verify(mSimulatedCommandsVerifier, times(0)).sendImsGsmSms(anyString(), anyString(),
                anyInt(), anyInt(), any(Message.class));
    }
}
+2 −30
Original line number Diff line number Diff line
@@ -19,15 +19,10 @@ package com.android.internal.telephony.gsm;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.location.Country;
import android.location.CountryDetector;
import android.os.HandlerThread;
@@ -36,14 +31,11 @@ import android.os.Message;
import android.os.ServiceManager;
import android.os.SystemProperties;
import android.provider.Telephony;
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;

import com.android.internal.telephony.ISub;
import com.android.internal.telephony.ImsSMSDispatcher;
import com.android.internal.telephony.SmsStorageMonitor;
import com.android.internal.telephony.SmsUsageMonitor;
import com.android.internal.telephony.TelephonyTest;
import com.android.internal.telephony.TelephonyTestUtils;

@@ -55,10 +47,6 @@ import org.mockito.Mock;
import java.util.HashMap;

public class GsmSmsDispatcherTest extends TelephonyTest {
    @Mock
    private SmsStorageMonitor mSmsStorageMonitor;
    @Mock
    private SmsUsageMonitor mSmsUsageMonitor;
    @Mock
    private android.telephony.SmsMessage mSmsMessage;
    @Mock
@@ -72,8 +60,6 @@ public class GsmSmsDispatcherTest extends TelephonyTest {
    @Mock
    private ISub.Stub mISubStub;

    private TelephonyManager mTelephonyManager;

    private GsmSMSDispatcher mGsmSmsDispatcher;

    private HashMap<String, IBinder> mServiceManagerMockedServices = new HashMap<>();
@@ -102,12 +88,6 @@ public class GsmSmsDispatcherTest extends TelephonyTest {
        replaceInstance(ServiceManager.class, "sCache", null, mServiceManagerMockedServices);
        mServiceManagerMockedServices.put("isub", mISubStub);

        mTelephonyManager = TelephonyManager.from(mContextFixture.getTestDouble());
        doReturn(true).when(mTelephonyManager).getSmsReceiveCapableForPhone(anyInt(), anyBoolean());
        doReturn(true).when(mTelephonyManager).getSmsSendCapableForPhone(
                anyInt(), anyBoolean());
        doReturn(true).when(mSmsStorageMonitor).isStorageAvailable();

        new GsmSmsDispatcherTestHandler(getClass().getSimpleName()).start();
        waitUntilReady();
    }
@@ -128,7 +108,7 @@ public class GsmSmsDispatcherTest extends TelephonyTest {

    @Test @MediumTest
    public void testSendSmsToRegularNumber_doesNotNotifyblockedNumberProvider() throws Exception {
        setupMockPermissionChecks();
        setupMockPackagePermissionChecks();

        mContextFixture.setSystemService(Context.COUNTRY_DETECTOR, mCountryDetector);
        when(mCountryDetector.detectCountry())
@@ -145,7 +125,7 @@ public class GsmSmsDispatcherTest extends TelephonyTest {

    @Test @MediumTest
    public void testSendSmsToEmergencyNumber_notifiesBlockedNumberProvider() throws Exception {
        setupMockPermissionChecks();
        setupMockPackagePermissionChecks();

        mContextFixture.setSystemService(Context.COUNTRY_DETECTOR, mCountryDetector);
        when(mCountryDetector.detectCountry())
@@ -161,14 +141,6 @@ public class GsmSmsDispatcherTest extends TelephonyTest {
        assertEquals(1, mFakeBlockedNumberContentProvider.mNumEmergencyContactNotifications);
    }

    private void setupMockPermissionChecks() throws Exception {
        PackageManager mockPackageManager = mContextFixture.getTestDouble().getPackageManager();
        when(mockPackageManager.getPackagesForUid(anyInt())).thenReturn(new String[]{"foobar"});
        when(mockPackageManager.getPackageInfo(anyString(), anyInt()))
                .thenReturn(new PackageInfo());
        when(mSmsUsageMonitor.check(anyString(), anyInt())).thenReturn(true);
    }

    private String getEmergencyNumberFromSystemPropertiesOrDefault() {
        String systemEmergencyNumbers = SystemProperties.get("ril.ecclist");
        if (systemEmergencyNumbers == null) {