1649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen/*
2649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * Copyright (C) 2016 The Android Open Source Project
3649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen *
4649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * Licensed under the Apache License, Version 2.0 (the "License");
5649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * you may not use this file except in compliance with the License.
6649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * You may obtain a copy of the License at
7649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen *
8649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen *      http://www.apache.org/licenses/LICENSE-2.0
9649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen *
10649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * Unless required by applicable law or agreed to in writing, software
11649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * distributed under the License is distributed on an "AS IS" BASIS,
12649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * See the License for the specific language governing permissions and
14649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen * limitations under the License
15649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen */
16649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
17649d6ef94525802e2911d4063431e3207e452810Ta-wei Yenpackage com.android.internal.telephony;
18649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
19649d6ef94525802e2911d4063431e3207e452810Ta-wei Yenimport android.content.Context;
20649d6ef94525802e2911d4063431e3207e452810Ta-wei Yenimport android.telephony.TelephonyManager;
21649d6ef94525802e2911d4063431e3207e452810Ta-wei Yenimport android.telephony.VisualVoicemailSmsFilterSettings;
22649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
23649d6ef94525802e2911d4063431e3207e452810Ta-wei Yenimport junit.framework.TestCase;
24649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
25649d6ef94525802e2911d4063431e3207e452810Ta-wei Yenimport org.mockito.Mockito;
26649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
27649d6ef94525802e2911d4063431e3207e452810Ta-wei Yenpublic class VisualVoicemailSmsFilterTest extends TestCase {
28649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
29ad6a054e845a0443d8464c7ebcfc3b58530bd66cTa-wei Yen    /**
30ad6a054e845a0443d8464c7ebcfc3b58530bd66cTa-wei Yen     * b/29123941 iPhone style notification SMS is neither 3GPP nor 3GPP2, but some plain text
31ad6a054e845a0443d8464c7ebcfc3b58530bd66cTa-wei Yen     * message. {@link android.telephony.SmsMessage.createFromPdu()} will fail to parse it and
32ad6a054e845a0443d8464c7ebcfc3b58530bd66cTa-wei Yen     * return an invalid object, causing {@link NullPointerException} on any operation if not
33ad6a054e845a0443d8464c7ebcfc3b58530bd66cTa-wei Yen     * handled.
34ad6a054e845a0443d8464c7ebcfc3b58530bd66cTa-wei Yen     */
35649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen    public void testUnsupportedPdu() {
36649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        Context context = Mockito.mock(Context.class);
37649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        TelephonyManager telephonyManager = Mockito.mock(TelephonyManager.class);
38649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        Mockito.when(context.getSystemServiceName(TelephonyManager.class))
39649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen                .thenReturn(Context.TELEPHONY_SERVICE);
40649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        Mockito.when(context.getSystemService(Mockito.anyString())).thenReturn(telephonyManager);
41649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
42649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
43649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen                .build();
44649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
45649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        Mockito.when(telephonyManager
46649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen                .getVisualVoicemailSmsFilterSettings(Mockito.anyString(), Mockito.anyInt()))
47649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen                .thenReturn(settings);
48649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
49649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        byte[][] pdus = {
50649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen                ("MBOXUPDATE?m=11;server=example.com;"
51649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen                        + "port=143;name=1234567890@example.com;pw=CphQJKnYS4jEiDO").getBytes()};
52649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen        VisualVoicemailSmsFilter.filter(context, pdus, SmsConstants.FORMAT_3GPP2, 0, 0);
53649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen    }
54649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen
55649d6ef94525802e2911d4063431e3207e452810Ta-wei Yen}
56