166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov/*
266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * Copyright (C) 2017 The Android Open Source Project
366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov *
466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * Licensed under the Apache License, Version 2.0 (the "License");
566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * you may not use this file except in compliance with the License.
666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * You may obtain a copy of the License at
766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov *
866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov *      http://www.apache.org/licenses/LICENSE-2.0
966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov *
1066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * Unless required by applicable law or agreed to in writing, software
1166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * distributed under the License is distributed on an "AS IS" BASIS,
1266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * See the License for the specific language governing permissions and
1466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * limitations under the License
1566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov */
1666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
1766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovpackage com.android.server.backup.utils;
1866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
1966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_CATEGORY;
2066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_ID;
2166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_PACKAGE_NAME;
2266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_PACKAGE_VERSION;
233accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackbornimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION;
2466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
2566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static com.google.common.truth.Truth.assertThat;
2666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
2766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static org.mockito.ArgumentMatchers.any;
2866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static org.mockito.Mockito.doThrow;
2966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static org.mockito.Mockito.verify;
3066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
3166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.app.backup.IBackupManagerMonitor;
3266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.content.pm.PackageInfo;
3366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.os.Bundle;
3466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.os.RemoteException;
3523c6007ccfcb29174569204c78c8f75e0d78ffe1Artem Iglikovimport android.platform.test.annotations.Presubmit;
3623c6007ccfcb29174569204c78c8f75e0d78ffe1Artem Iglikovimport android.support.test.filters.SmallTest;
3723c6007ccfcb29174569204c78c8f75e0d78ffe1Artem Iglikovimport android.support.test.runner.AndroidJUnit4;
3866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
3966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.junit.Before;
4066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.junit.Test;
4123c6007ccfcb29174569204c78c8f75e0d78ffe1Artem Iglikovimport org.junit.runner.RunWith;
4266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.mockito.ArgumentCaptor;
4366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.mockito.Mock;
4466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.mockito.MockitoAnnotations;
4566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
4623c6007ccfcb29174569204c78c8f75e0d78ffe1Artem Iglikov@SmallTest
4723c6007ccfcb29174569204c78c8f75e0d78ffe1Artem Iglikov@Presubmit
4823c6007ccfcb29174569204c78c8f75e0d78ffe1Artem Iglikov@RunWith(AndroidJUnit4.class)
4966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovpublic class BackupManagerMonitorUtilsTest {
5066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Mock private IBackupManagerMonitor mMonitorMock;
5166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
5266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Before
5366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void setUp() {
5466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        MockitoAnnotations.initMocks(this);
5566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
5666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
5766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
5866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void monitorEvent_monitorIsNull_returnsNull() throws Exception {
5966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(null, 0, null, 0,
6066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov                null);
6166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
6266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isNull();
6366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
6466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
6566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
6666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void monitorEvent_monitorOnEventThrows_returnsNull() throws Exception {
6766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        doThrow(new RemoteException()).when(mMonitorMock).onEvent(any(Bundle.class));
6866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
6966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 0, null,
7066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov                0, null);
7166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
7266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        verify(mMonitorMock).onEvent(any(Bundle.class));
7366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isNull();
7466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
7566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
7666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
7766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void monitorEvent_packageAndExtrasAreNull_fillsBundleCorrectly() throws Exception {
7866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1, null,
7966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov                2, null);
8066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
8166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isEqualTo(mMonitorMock);
8266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
8366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        verify(mMonitorMock).onEvent(bundleCaptor.capture());
8466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle eventBundle = bundleCaptor.getValue();
8566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.size()).isEqualTo(2);
8666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_ID)).isEqualTo(1);
8766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_CATEGORY)).isEqualTo(2);
8866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
8966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
9066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
9166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void monitorEvent_packageAndExtrasAreNotNull_fillsBundleCorrectly() throws Exception {
9266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        PackageInfo packageInfo = new PackageInfo();
9366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        packageInfo.packageName = "test.package";
9466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        packageInfo.versionCode = 3;
9566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle extras = new Bundle();
9666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        extras.putInt("key1", 4);
9766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        extras.putString("key2", "value2");
9866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
9966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1,
10066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov                packageInfo, 2, extras);
10166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
10266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isEqualTo(mMonitorMock);
10366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
10466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        verify(mMonitorMock).onEvent(bundleCaptor.capture());
10566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle eventBundle = bundleCaptor.getValue();
1063accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.size()).isEqualTo(7);
10766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_ID)).isEqualTo(1);
10866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_CATEGORY)).isEqualTo(2);
10966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getString(EXTRA_LOG_EVENT_PACKAGE_NAME)).isEqualTo("test.package");
11066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_PACKAGE_VERSION)).isEqualTo(3);
1113accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getLong(EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION)).isEqualTo(3);
1123accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getInt("key1")).isEqualTo(4);
1133accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getString("key2")).isEqualTo("value2");
1143accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn    }
1153accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn
1163accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn    @Test
1173accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn    public void monitorEvent_packageAndExtrasAreNotNull_fillsBundleCorrectlyLong() throws Exception {
1183accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        PackageInfo packageInfo = new PackageInfo();
1193accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        packageInfo.packageName = "test.package";
1203accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        packageInfo.versionCode = 3;
1213accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        packageInfo.versionCodeMajor = 10;
1223accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        Bundle extras = new Bundle();
1233accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        extras.putInt("key1", 4);
1243accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        extras.putString("key2", "value2");
1253accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn
1263accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1,
1273accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn                packageInfo, 2, extras);
1283accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn
1293accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(result).isEqualTo(mMonitorMock);
1303accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
1313accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        verify(mMonitorMock).onEvent(bundleCaptor.capture());
1323accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        Bundle eventBundle = bundleCaptor.getValue();
1333accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.size()).isEqualTo(7);
1343accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_ID)).isEqualTo(1);
1353accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_CATEGORY)).isEqualTo(2);
1363accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getString(EXTRA_LOG_EVENT_PACKAGE_NAME)).isEqualTo("test.package");
1373accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_PACKAGE_VERSION)).isEqualTo(3);
1383accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn        assertThat(eventBundle.getLong(EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION)).isEqualTo(
1393accca05ddcad9d0b1b313eae49f273e39121d3cDianne Hackborn                (10L << 32) | 3);
14066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getInt("key1")).isEqualTo(4);
14166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(eventBundle.getString("key2")).isEqualTo("value2");
14266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
14366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
14466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
14566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void putMonitoringExtraString_bundleExists_fillsBundleCorrectly() throws Exception {
14666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle bundle = new Bundle();
14766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
14866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", "value");
14966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
15066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isEqualTo(bundle);
15166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.size()).isEqualTo(1);
15266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.getString("key")).isEqualTo("value");
15366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
15466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
15566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
15666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void putMonitoringExtraString_bundleDoesNotExist_fillsBundleCorrectly()
15766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov            throws Exception {
15866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", "value");
15966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
16066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isNotNull();
16166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.size()).isEqualTo(1);
16266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.getString("key")).isEqualTo("value");
16366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
16466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
16566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
16666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
16766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void putMonitoringExtraLong_bundleExists_fillsBundleCorrectly() throws Exception {
16866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle bundle = new Bundle();
16966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
17066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", 123);
17166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
17266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isEqualTo(bundle);
17366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.size()).isEqualTo(1);
17466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.getLong("key")).isEqualTo(123);
17566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
17666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
17766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
17866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void putMonitoringExtraLong_bundleDoesNotExist_fillsBundleCorrectly() throws Exception {
17966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", 123);
18066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
18166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isNotNull();
18266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.size()).isEqualTo(1);
18366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.getLong("key")).isEqualTo(123);
18466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
18566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
18666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
18766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void putMonitoringExtraBoolean_bundleExists_fillsBundleCorrectly() throws Exception {
18866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle bundle = new Bundle();
18966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
19066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", true);
19166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
19266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isEqualTo(bundle);
19366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.size()).isEqualTo(1);
19466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.getBoolean("key")).isTrue();
19566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
19666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
19766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    @Test
19866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    public void putMonitoringExtraBoolean_bundleDoesNotExist_fillsBundleCorrectly()
19966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov            throws Exception {
20066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", true);
20166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
20266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result).isNotNull();
20366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.size()).isEqualTo(1);
20466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov        assertThat(result.getBoolean("key")).isTrue();
20566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov    }
20666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov
20766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov}