• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016, The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.managedprovisioning.model;
17 
18 import android.os.Parcel;
19 import android.test.AndroidTestCase;
20 import android.test.MoreAsserts;
21 
22 import androidx.test.filters.SmallTest;
23 
24 /** Tests for {@link PackageDownloadInfo} */
25 public class PackageDownloadInfoTest extends AndroidTestCase {
26     private static final String TEST_DOWNLOAD_LOCATION =
27             "http://example/dpc.apk";
28     private static final String TEST_COOKIE_HEADER =
29             "Set-Cookie: sessionToken=foobar; Expires=Thu, 18 Feb 2016 23:59:59 GMT";
30     private static final byte[] TEST_PACKAGE_CHECKSUM = new byte[] { '1', '2', '3', '4', '5' };
31     private static final byte[] TEST_SIGNATURE_CHECKSUM = new byte[] { '5', '4', '3', '2', '1' };
32     private static final int TEST_MIN_SUPPORT_VERSION = 7689;
33 
34     @SmallTest
testBuilderWriteAndReadBack()35     public void testBuilderWriteAndReadBack() {
36         // WHEN a PackageDownloadInfo object is constructed with some test parameters.
37         PackageDownloadInfo downloadInfo = PackageDownloadInfo.Builder.builder()
38                 .setLocation(TEST_DOWNLOAD_LOCATION)
39                 .setCookieHeader(TEST_COOKIE_HEADER)
40                 .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
41                 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
42                 .setMinVersion(TEST_MIN_SUPPORT_VERSION)
43                 .build();
44         // THEN the same set of values are obtained in the object.
45         assertEquals(TEST_DOWNLOAD_LOCATION, downloadInfo.location);
46         assertEquals(TEST_COOKIE_HEADER, downloadInfo.cookieHeader);
47         assertEquals(TEST_PACKAGE_CHECKSUM, downloadInfo.packageChecksum);
48         assertEquals(TEST_SIGNATURE_CHECKSUM, downloadInfo.signatureChecksum);
49         assertEquals(TEST_MIN_SUPPORT_VERSION, downloadInfo.minVersion);
50     }
51 
52     @SmallTest
testFailToConstructPackageInfoWithDownloadLocationWithoutChecksum()53     public void testFailToConstructPackageInfoWithDownloadLocationWithoutChecksum() {
54         // WHEN the PackageDownloadInfo is constructed with a download location but without any
55         // checksum.
56         try {
57             PackageDownloadInfo downloadInfo = PackageDownloadInfo.Builder.builder()
58                     .setLocation(TEST_DOWNLOAD_LOCATION)
59                     .build();
60             fail("Checksum is mandatory.");
61         } catch (IllegalArgumentException e) {
62             // THEN PackageDownloadInfo is failed to construct due to the missing checksum.
63         }
64     }
65 
66     @SmallTest
testFailToConstructPackageInfoWithoutDownloadLocation()67     public void testFailToConstructPackageInfoWithoutDownloadLocation() {
68         // WHEN the PackageDownloadInfo is constructed without any download location.
69         try {
70             PackageDownloadInfo downloadInfo = PackageDownloadInfo.Builder.builder()
71                     .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
72                     .build();
73             fail("Download location is mandatory.");
74         } catch (IllegalArgumentException e) {
75             // THEN PackageDownloadInfo fails to construct due to the missing download location.
76         }
77     }
78 
79     @SmallTest
testConstructPackageInfoWithDownloadLocationAndPackageChecksum()80     public void testConstructPackageInfoWithDownloadLocationAndPackageChecksum() {
81         // WHEN the PackageDownloadInfo is constructed with a download location and a package
82         // checksum.
83         PackageDownloadInfo downloadInfo = PackageDownloadInfo.Builder.builder()
84                 .setLocation(TEST_DOWNLOAD_LOCATION)
85                 .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
86                 .build();
87         // THEN the PackageDownloadInfo is constructed with the following values.
88         assertEquals(TEST_DOWNLOAD_LOCATION, downloadInfo.location);
89         assertEquals(TEST_PACKAGE_CHECKSUM, downloadInfo.packageChecksum);
90     }
91 
92     @SmallTest
testConstructPackageInfoWithDownloadLocationAndSignatureChecksum()93     public void testConstructPackageInfoWithDownloadLocationAndSignatureChecksum() {
94         // WHEN the PackageDownloadInfo is constructed with a download location and a signature
95         // checksum.
96         PackageDownloadInfo downloadInfo = PackageDownloadInfo.Builder.builder()
97                 .setLocation(TEST_DOWNLOAD_LOCATION)
98                 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
99                 .build();
100         // THEN the PackageDownloadInfo is constructed with the following values.
101         assertEquals(TEST_DOWNLOAD_LOCATION, downloadInfo.location);
102         assertEquals(TEST_SIGNATURE_CHECKSUM, downloadInfo.signatureChecksum);
103     }
104 
105     @SmallTest
testEquals()106     public void testEquals() {
107         // GIVEN 2 PackageDownloadInfo objects are constructed with the same set of parameters.
108         PackageDownloadInfo downloadInfo1 = PackageDownloadInfo.Builder.builder()
109                 .setLocation(TEST_DOWNLOAD_LOCATION)
110                 .setCookieHeader(TEST_COOKIE_HEADER)
111                 .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
112                 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
113                 .setMinVersion(TEST_MIN_SUPPORT_VERSION)
114                 .build();
115         PackageDownloadInfo downloadInfo2 = PackageDownloadInfo.Builder.builder()
116                 .setLocation(TEST_DOWNLOAD_LOCATION)
117                 .setCookieHeader(TEST_COOKIE_HEADER)
118                 .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
119                 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
120                 .setMinVersion(TEST_MIN_SUPPORT_VERSION)
121                 .build();
122         // WHEN comparing these two objects.
123         // THEN they are equal.
124         assertEquals(downloadInfo1, downloadInfo2);
125     }
126 
127     @SmallTest
testNotEquals()128     public void testNotEquals() {
129         // GIVEN 2 PackageDownloadInfo objects are constructed with the different set of parameters.
130         PackageDownloadInfo downloadInfo1 = PackageDownloadInfo.Builder.builder()
131                 .setLocation(TEST_DOWNLOAD_LOCATION)
132                 .setCookieHeader(TEST_COOKIE_HEADER)
133                 .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
134                 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
135                 .setMinVersion(TEST_MIN_SUPPORT_VERSION)
136                 .build();
137         PackageDownloadInfo downloadInfo2 = PackageDownloadInfo.Builder.builder()
138                 .setLocation("http://a/b/")
139                 .setCookieHeader(TEST_COOKIE_HEADER)
140                 .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
141                 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
142                 .setMinVersion(TEST_MIN_SUPPORT_VERSION)
143                 .build();
144         // WHEN comparing these two objects.
145         // THEN they are not equal.
146         MoreAsserts.assertNotEqual(downloadInfo1, downloadInfo2);
147     }
148 
149     @SmallTest
testParceable()150     public void testParceable() {
151         // GIVEN a PackageDownloadInfo object.
152         PackageDownloadInfo expectedDownloadInfo = PackageDownloadInfo.Builder.builder()
153                 .setLocation(TEST_DOWNLOAD_LOCATION)
154                 .setCookieHeader(TEST_COOKIE_HEADER)
155                 .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
156                 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
157                 .setMinVersion(TEST_MIN_SUPPORT_VERSION)
158                 .build();
159 
160         // WHEN the PackageDownloadInfo is written to parcel and then read back.
161         Parcel parcel = Parcel.obtain();
162         expectedDownloadInfo.writeToParcel(parcel, 0);
163         parcel.setDataPosition(0);
164         PackageDownloadInfo actualDownloadInfo =
165                 PackageDownloadInfo.CREATOR.createFromParcel(parcel);
166 
167         // THEN the same PackageDownloadInfo is obtained.
168         assertEquals(expectedDownloadInfo, actualDownloadInfo);
169     }
170 }
171