1 /* 2 * Copyright (C) 2024 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 17 package com.android.providers.contactkeys; 18 19 import android.platform.test.annotations.RequiresFlagsEnabled; 20 import android.provider.E2eeContactKeysManager; 21 import android.provider.Flags; 22 import android.test.ProviderTestCase2; 23 24 import com.google.common.collect.ImmutableList; 25 26 import java.util.List; 27 28 @RequiresFlagsEnabled(Flags.FLAG_USER_KEYS) 29 public class E2eeContactKeysDatabaseHelperTest extends ProviderTestCase2<E2eeContactKeysProvider> { 30 31 private static final String LOOKUP_KEY = "0r1-423A2E4644502A2E50"; 32 private static final String LOOKUP_KEY_2 = "0r2-8T03DE4644502A2E50"; 33 private static final String DEVICE_ID = "device_id_value"; 34 private static final String DEVICE_ID_2 = "device_id_value_2"; 35 private static final String ACCOUNT_ID = "+1 (555) 555-1234"; 36 private static final String ACCOUNT_ID_2 = "+1 (123) 456-7895"; 37 private static final byte[] KEY_VALUE = new byte[] { (byte) 0xba, (byte) 0x8a }; 38 private static final byte[] KEY_VALUE_2 = new byte[] { (byte) 0x5c, (byte) 0xab }; 39 private static final byte[] KEY_VALUE_3 = new byte[] { (byte) 0x4a, (byte) 0xa7 }; 40 private static final String OWNER_PACKAGE_NAME = "com.package.app1"; 41 private static final String OWNER_PACKAGE_NAME_2 = "com.package.app2"; 42 private static final long TIME_UPDATED = 1701689265; 43 private static final String DISPLAY_NAME = "John"; 44 private static final String PHONE_NUMBER = "(555) 555-1234"; 45 private static final String EMAIL_ADDRESS = "example@gmail.com"; 46 47 private E2eeContactKeysDatabaseHelper mDbHelper; 48 E2eeContactKeysDatabaseHelperTest()49 public E2eeContactKeysDatabaseHelperTest() { 50 super(E2eeContactKeysProvider.class, E2eeContactKeysProvider.AUTHORITY); 51 } 52 53 /** 54 * Sets up the test environment before each test method. 55 */ setUp()56 public void setUp() throws Exception { 57 super.setUp(); 58 mDbHelper = ((E2eeContactKeysProvider) getProvider()).mDbHelper; 59 mDbHelper.getWritableDatabase().execSQL("DROP TABLE IF EXISTS contactkeys"); 60 mDbHelper.getWritableDatabase().execSQL("DROP TABLE IF EXISTS selfkeys"); 61 mDbHelper.onCreate(mDbHelper.getWritableDatabase()); 62 } 63 64 /** 65 * This method is called after each test method, to clean up the current fixture. 66 */ tearDown()67 public void tearDown() throws Exception { 68 super.tearDown(); 69 mDbHelper.removeContactKey(LOOKUP_KEY, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME); 70 mDbHelper.removeContactKey(LOOKUP_KEY, DEVICE_ID_2, ACCOUNT_ID, OWNER_PACKAGE_NAME); 71 mDbHelper.removeContactKey(LOOKUP_KEY, DEVICE_ID_2, ACCOUNT_ID, OWNER_PACKAGE_NAME_2); 72 mDbHelper.removeContactKey(LOOKUP_KEY_2, DEVICE_ID_2, ACCOUNT_ID_2, OWNER_PACKAGE_NAME); 73 mDbHelper.removeSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME); 74 } 75 testInsertAndGetContactKey()76 public void testInsertAndGetContactKey() { 77 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 78 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 79 E2eeContactKeysManager.E2eeContactKey contactKey = 80 mDbHelper.getContactKey(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, ACCOUNT_ID); 81 E2eeContactKeysManager.E2eeContactKey expectedContactKey = 82 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 83 TIME_UPDATED, KEY_VALUE, 84 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 85 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, DISPLAY_NAME, 86 PHONE_NUMBER, EMAIL_ADDRESS); 87 88 assertEquals(expectedContactKey, contactKey); 89 } 90 testInsertContactKeyNoBasicContactInfo()91 public void testInsertContactKeyNoBasicContactInfo() { 92 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 93 OWNER_PACKAGE_NAME, TIME_UPDATED, null, null, null); 94 E2eeContactKeysManager.E2eeContactKey contactKey = 95 mDbHelper.getContactKey(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, ACCOUNT_ID); 96 E2eeContactKeysManager.E2eeContactKey expectedContactKey = 97 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 98 TIME_UPDATED, KEY_VALUE, 99 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 100 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, null, null, null); 101 102 assertEquals(expectedContactKey, contactKey); 103 } 104 testUpdateContactKey()105 public void testUpdateContactKey() { 106 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 107 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 108 int localVerificationState = E2eeContactKeysManager.VERIFICATION_STATE_VERIFIED; 109 int remoteVerificationState = E2eeContactKeysManager.VERIFICATION_STATE_VERIFIED; 110 mDbHelper.updateContactKeyLocalVerificationState(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, 111 ACCOUNT_ID, localVerificationState, TIME_UPDATED + 1); 112 mDbHelper.updateContactKeyRemoteVerificationState(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, 113 ACCOUNT_ID, remoteVerificationState, TIME_UPDATED + 2); 114 115 long timeUpdated = TIME_UPDATED + 3; 116 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE_2, DEVICE_ID, ACCOUNT_ID, 117 OWNER_PACKAGE_NAME, timeUpdated, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 118 E2eeContactKeysManager.E2eeContactKey contactKey = 119 mDbHelper.getContactKey(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, ACCOUNT_ID); 120 121 E2eeContactKeysManager.E2eeContactKey expectedContactKey = 122 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 123 timeUpdated, KEY_VALUE_2, localVerificationState, remoteVerificationState, 124 DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 125 126 assertEquals(expectedContactKey, contactKey); 127 } 128 testRemoveContactKey()129 public void testRemoveContactKey() { 130 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 131 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 132 133 int rowsRemoved = mDbHelper.removeContactKey(LOOKUP_KEY, DEVICE_ID, ACCOUNT_ID, 134 OWNER_PACKAGE_NAME); 135 136 assertEquals(1, rowsRemoved); 137 138 E2eeContactKeysManager.E2eeContactKey contactKey = 139 mDbHelper.getContactKey(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, ACCOUNT_ID); 140 141 assertNull(contactKey); 142 } 143 testUpdateLocalVerificationStateContactKey()144 public void testUpdateLocalVerificationStateContactKey() { 145 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 146 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 147 148 int updatedLvs = E2eeContactKeysManager.VERIFICATION_STATE_VERIFIED; 149 mDbHelper.updateContactKeyLocalVerificationState(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, 150 ACCOUNT_ID, updatedLvs, TIME_UPDATED); 151 E2eeContactKeysManager.E2eeContactKey contactKey = 152 mDbHelper.getContactKey(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, ACCOUNT_ID); 153 154 E2eeContactKeysManager.E2eeContactKey expectedContactKey = 155 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 156 TIME_UPDATED, KEY_VALUE, updatedLvs, 157 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, DISPLAY_NAME, 158 PHONE_NUMBER, EMAIL_ADDRESS); 159 160 assertEquals(expectedContactKey, contactKey); 161 } 162 testUpdateRemoteVerificationStateContactKey()163 public void testUpdateRemoteVerificationStateContactKey() { 164 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 165 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 166 167 int updatedRvs = E2eeContactKeysManager.VERIFICATION_STATE_VERIFIED; 168 mDbHelper.updateContactKeyRemoteVerificationState(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, 169 ACCOUNT_ID, updatedRvs, TIME_UPDATED); 170 E2eeContactKeysManager.E2eeContactKey contactKey = 171 mDbHelper.getContactKey(LOOKUP_KEY, OWNER_PACKAGE_NAME, DEVICE_ID, ACCOUNT_ID); 172 173 E2eeContactKeysManager.E2eeContactKey expectedContactKey = 174 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 175 TIME_UPDATED, KEY_VALUE, 176 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, updatedRvs, 177 DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 178 179 assertEquals(expectedContactKey, contactKey); 180 } 181 testGetAllContactKeys()182 public void testGetAllContactKeys() { 183 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 184 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 185 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE_2, DEVICE_ID_2, ACCOUNT_ID, 186 OWNER_PACKAGE_NAME_2, 187 TIME_UPDATED, DISPLAY_NAME, null, null); 188 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY_2, KEY_VALUE_3, DEVICE_ID_2, ACCOUNT_ID_2, 189 OWNER_PACKAGE_NAME, TIME_UPDATED, "Bob", null, null); 190 191 List<E2eeContactKeysManager.E2eeContactKey> contactKeys = 192 mDbHelper.getAllContactKeys(LOOKUP_KEY); 193 194 E2eeContactKeysManager.E2eeContactKey expectedContactKey1 = 195 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 196 TIME_UPDATED, KEY_VALUE, 197 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 198 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, DISPLAY_NAME, 199 PHONE_NUMBER, EMAIL_ADDRESS); 200 E2eeContactKeysManager.E2eeContactKey expectedContactKey2 = 201 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID_2, ACCOUNT_ID, 202 OWNER_PACKAGE_NAME_2, TIME_UPDATED, KEY_VALUE_2, 203 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 204 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 205 DISPLAY_NAME, null, null); 206 List<E2eeContactKeysManager.E2eeContactKey> expectedContactKeys = ImmutableList.of( 207 expectedContactKey1, expectedContactKey2); 208 209 assertEquals(expectedContactKeys.size(), contactKeys.size()); 210 assertTrue(expectedContactKeys.containsAll(contactKeys)); 211 } 212 testGetContactKeysForOwnerPackageName()213 public void testGetContactKeysForOwnerPackageName() { 214 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE, DEVICE_ID, ACCOUNT_ID, 215 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 216 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE_2, DEVICE_ID_2, ACCOUNT_ID, 217 OWNER_PACKAGE_NAME, TIME_UPDATED, DISPLAY_NAME, null, null); 218 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY, KEY_VALUE_3, DEVICE_ID_2, ACCOUNT_ID, 219 OWNER_PACKAGE_NAME_2, TIME_UPDATED, "Bob", null, null); 220 mDbHelper.updateOrInsertContactKey(LOOKUP_KEY_2, KEY_VALUE_3, DEVICE_ID_2, ACCOUNT_ID_2, 221 OWNER_PACKAGE_NAME, TIME_UPDATED, "Charlie", null, null); 222 223 List<E2eeContactKeysManager.E2eeContactKey> contactKeys = 224 mDbHelper.getContactKeysForOwnerPackageName(LOOKUP_KEY, OWNER_PACKAGE_NAME); 225 226 E2eeContactKeysManager.E2eeContactKey expectedContactKey1 = 227 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 228 TIME_UPDATED, KEY_VALUE, 229 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 230 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 231 DISPLAY_NAME, PHONE_NUMBER, EMAIL_ADDRESS); 232 E2eeContactKeysManager.E2eeContactKey expectedContactKey2 = 233 new E2eeContactKeysManager.E2eeContactKey(DEVICE_ID_2, ACCOUNT_ID, 234 OWNER_PACKAGE_NAME, TIME_UPDATED, KEY_VALUE_2, 235 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 236 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED, 237 DISPLAY_NAME, null, null); 238 List<E2eeContactKeysManager.E2eeContactKey> expectedContactKeys = ImmutableList.of( 239 expectedContactKey1, expectedContactKey2); 240 241 assertEquals(expectedContactKeys.size(), contactKeys.size()); 242 assertTrue(expectedContactKeys.containsAll(contactKeys)); 243 } 244 testInsertAndGetSelfKey()245 public void testInsertAndGetSelfKey() { 246 mDbHelper.updateOrInsertSelfKey(KEY_VALUE, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 247 TIME_UPDATED); 248 E2eeContactKeysManager.E2eeSelfKey selfKey = 249 mDbHelper.getSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME); 250 E2eeContactKeysManager.E2eeSelfKey expectedSelfKey = 251 new E2eeContactKeysManager.E2eeSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 252 TIME_UPDATED, KEY_VALUE, 253 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED); 254 255 assertEquals(expectedSelfKey, selfKey); 256 } 257 testGetAllSelfKeys()258 public void testGetAllSelfKeys() { 259 mDbHelper.updateOrInsertSelfKey(KEY_VALUE, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 260 TIME_UPDATED); 261 mDbHelper.updateOrInsertSelfKey(KEY_VALUE_2, DEVICE_ID_2, ACCOUNT_ID_2, 262 OWNER_PACKAGE_NAME_2, TIME_UPDATED); 263 264 List<E2eeContactKeysManager.E2eeSelfKey> selfKeys = 265 mDbHelper.getAllSelfKeys(); 266 267 E2eeContactKeysManager.E2eeSelfKey expectedSelfKey1 = 268 new E2eeContactKeysManager.E2eeSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 269 TIME_UPDATED, KEY_VALUE, 270 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED); 271 E2eeContactKeysManager.E2eeSelfKey expectedSelfKey2 = 272 new E2eeContactKeysManager.E2eeSelfKey(DEVICE_ID_2, ACCOUNT_ID_2, 273 OWNER_PACKAGE_NAME_2, TIME_UPDATED, KEY_VALUE_2, 274 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED); 275 List<E2eeContactKeysManager.E2eeSelfKey> expectedSelfKeys = ImmutableList.of( 276 expectedSelfKey1, expectedSelfKey2); 277 278 assertEquals(expectedSelfKeys.size(), selfKeys.size()); 279 assertTrue(expectedSelfKeys.containsAll(selfKeys)); 280 } 281 testGetSelfKeysForOwnerPackageName()282 public void testGetSelfKeysForOwnerPackageName() { 283 mDbHelper.updateOrInsertSelfKey(KEY_VALUE, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 284 TIME_UPDATED); 285 mDbHelper.updateOrInsertSelfKey(KEY_VALUE_2, DEVICE_ID_2, ACCOUNT_ID_2, 286 OWNER_PACKAGE_NAME_2, TIME_UPDATED); 287 288 List<E2eeContactKeysManager.E2eeSelfKey> selfKeys = 289 mDbHelper.getSelfKeysForOwnerPackageName(OWNER_PACKAGE_NAME); 290 291 E2eeContactKeysManager.E2eeSelfKey expectedSelfKey1 = 292 new E2eeContactKeysManager.E2eeSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 293 TIME_UPDATED, KEY_VALUE, 294 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED); 295 List<E2eeContactKeysManager.E2eeSelfKey> expectedSelfKeys = 296 ImmutableList.of(expectedSelfKey1); 297 298 assertEquals(expectedSelfKeys.size(), selfKeys.size()); 299 assertTrue(expectedSelfKeys.containsAll(selfKeys)); 300 } 301 testUpdateSelfKey()302 public void testUpdateSelfKey() { 303 mDbHelper.updateOrInsertSelfKey(KEY_VALUE, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 304 TIME_UPDATED); 305 306 long timeUpdated = TIME_UPDATED + 1; 307 mDbHelper.updateOrInsertSelfKey(KEY_VALUE_2, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 308 timeUpdated); 309 E2eeContactKeysManager.E2eeSelfKey selfKey = 310 mDbHelper.getSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME); 311 312 E2eeContactKeysManager.E2eeSelfKey expectedSelfKey = 313 new E2eeContactKeysManager.E2eeSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 314 timeUpdated, KEY_VALUE_2, 315 E2eeContactKeysManager.VERIFICATION_STATE_UNVERIFIED); 316 317 assertEquals(expectedSelfKey, selfKey); 318 } 319 testUpdateRemoteVerificationStateSelfKey()320 public void testUpdateRemoteVerificationStateSelfKey() { 321 mDbHelper.updateOrInsertSelfKey(KEY_VALUE, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 322 TIME_UPDATED); 323 324 long timeUpdated = TIME_UPDATED + 1; 325 int updatedRvs = E2eeContactKeysManager.VERIFICATION_STATE_VERIFIED; 326 mDbHelper.updateSelfKeyRemoteVerificationState(OWNER_PACKAGE_NAME, DEVICE_ID, ACCOUNT_ID, 327 updatedRvs, timeUpdated); 328 E2eeContactKeysManager.E2eeSelfKey selfKey = 329 mDbHelper.getSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME); 330 331 E2eeContactKeysManager.E2eeSelfKey expectedSelfKey = 332 new E2eeContactKeysManager.E2eeSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 333 timeUpdated, KEY_VALUE, updatedRvs); 334 335 assertEquals(expectedSelfKey, selfKey); 336 } 337 testRemoveSelfKey()338 public void testRemoveSelfKey() { 339 mDbHelper.updateOrInsertSelfKey(KEY_VALUE, DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME, 340 TIME_UPDATED); 341 342 mDbHelper.removeSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME); 343 E2eeContactKeysManager.E2eeSelfKey selfKey = 344 mDbHelper.getSelfKey(DEVICE_ID, ACCOUNT_ID, OWNER_PACKAGE_NAME); 345 346 assertNull(selfKey); 347 } 348 } 349