105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra/* 205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * Copyright (C) 2016 The Android Open Source Project 305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * 405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * Licensed under the Apache License, Version 2.0 (the "License"); 505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * you may not use this file except in compliance with the License. 605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * You may obtain a copy of the License at 705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * 805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * http://www.apache.org/licenses/LICENSE-2.0 905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * 1005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * Unless required by applicable law or agreed to in writing, software 1105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * distributed under the License is distributed on an "AS IS" BASIS, 1205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * See the License for the specific language governing permissions and 1405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * limitations under the License. 1505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra */ 1605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 1705d5528f0accab78785b2719f4762ea91d76f681Mahaver Choprapackage com.android.managedprovisioning.analytics; 1805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 1905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport static android.net.ConnectivityManager.TYPE_WIFI; 2005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 2192013087f0eb359c2ab56564b08be8d3382afbceTamas Berghammerimport static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_NETWORK_TYPE; 2205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport static com.android.managedprovisioning.analytics.NetworkTypeLogger.NETWORK_TYPE_NOT_CONNECTED; 2305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 2405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport static org.mockito.Mockito.verify; 2505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport static org.mockito.Mockito.verifyNoMoreInteractions; 2605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport static org.mockito.Mockito.when; 2705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 2805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport android.content.Context; 2905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport android.test.AndroidTestCase; 3005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport android.test.suitebuilder.annotation.SmallTest; 3105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport android.net.ConnectivityManager; 3205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport android.net.NetworkInfo; 3305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 3405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport com.android.managedprovisioning.common.Utils; 3505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 3605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport org.mockito.Mock; 3705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopraimport org.mockito.MockitoAnnotations; 3805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 3905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra/** 4005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra * Unit-tests for {@link NetworkTypeLogger}. 4105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra */ 4205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra@SmallTest 4305d5528f0accab78785b2719f4762ea91d76f681Mahaver Choprapublic class NetworkTypeLoggerTest extends AndroidTestCase { 4405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 4505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra private static final NetworkInfo WIFI_NETWORK_INFO = 4605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra new NetworkInfo(TYPE_WIFI, 2, "WIFI", "WIFI_SUBTYPE"); 4705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 4805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra @Mock private Context mContext; 4905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra @Mock private MetricsLoggerWrapper mMetricsLoggerWrapper; 5005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra @Mock private Utils mUtils; 5105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 5205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra private NetworkTypeLogger mNetworkTypeLogger; 5305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 5405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra @Override 5505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra public void setUp() { 5605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // this is necessary for mockito to work 5705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra System.setProperty("dexmaker.dexcache", getContext().getCacheDir().toString()); 5805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 5905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra MockitoAnnotations.initMocks(this); 6005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 6105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra mNetworkTypeLogger = new NetworkTypeLogger(mContext, mUtils, mMetricsLoggerWrapper); 6205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra } 6305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 6405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra @SmallTest 6505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra public void test_NullNetworkInfo() { 6605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // GIVEN there is no network info present 6705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra when(mUtils.getActiveNetworkInfo(mContext)).thenReturn(null); 6805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // WHEN network type is logged 6905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra mNetworkTypeLogger.log(); 7005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // THEN network type not connected should be logged 7105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra verify(mMetricsLoggerWrapper).logAction(mContext, PROVISIONING_NETWORK_TYPE, 7205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra NETWORK_TYPE_NOT_CONNECTED); 7305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra } 7405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 7505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra @SmallTest 7605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra public void test_NetworkNotConnected() { 7705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // GIVEN there is a valid network info 7805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra when(mUtils.getActiveNetworkInfo(mContext)).thenReturn(WIFI_NETWORK_INFO); 7905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // GIVEN that the device is not connected 8005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra when(mUtils.isConnectedToNetwork(mContext)).thenReturn(false); 8105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // WHEN network type is logged 8205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra mNetworkTypeLogger.log(); 8305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // THEN network type not connected should be logged 8405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra verify(mMetricsLoggerWrapper).logAction(mContext, PROVISIONING_NETWORK_TYPE, 8505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra NETWORK_TYPE_NOT_CONNECTED); 8605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra } 8705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra 8805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra @SmallTest 8905d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra public void test_NetworkTypeWifi() { 9005d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // GIVEN the device is connected to a wifi network 9105d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra when(mUtils.getActiveNetworkInfo(mContext)).thenReturn(WIFI_NETWORK_INFO); 9205d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra when(mUtils.isConnectedToNetwork(mContext)).thenReturn(true); 9305d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // WHEN network type is logged 9405d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra mNetworkTypeLogger.log(); 9505d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra // THEN network type wifi should be logged 9605d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra verify(mMetricsLoggerWrapper).logAction(mContext, PROVISIONING_NETWORK_TYPE, TYPE_WIFI); 9705d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra } 9805d5528f0accab78785b2719f4762ea91d76f681Mahaver Chopra} 99