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