Exercise Contacts#openContactPhotoInputStream

Bug 5810254

Change-Id: I0815aeed267c4e49a6440e2798470a5a807ae8ad
diff --git a/tests/tests/provider/src/android/provider/cts/ContactsContract_PhotoTest.java b/tests/tests/provider/src/android/provider/cts/ContactsContract_PhotoTest.java
index 68ed1b89..edab42f 100644
--- a/tests/tests/provider/src/android/provider/cts/ContactsContract_PhotoTest.java
+++ b/tests/tests/provider/src/android/provider/cts/ContactsContract_PhotoTest.java
@@ -22,6 +22,8 @@
 import android.content.IContentProvider;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.Contacts;
+import android.provider.cts.ContactsContract_TestDataBuilder.TestContact;
 import android.provider.cts.ContactsContract_TestDataBuilder.TestData;
 import android.provider.cts.ContactsContract_TestDataBuilder.TestRawContact;
 import android.test.InstrumentationTestCase;
@@ -35,12 +37,13 @@
 
     private static final byte[] EMPTY_TEST_PHOTO_DATA = "".getBytes();
 
+    private ContentResolver mResolver;
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        ContentResolver contentResolver =
-                getInstrumentation().getTargetContext().getContentResolver();
-        IContentProvider provider = contentResolver.acquireProvider(ContactsContract.AUTHORITY);
+        mResolver = getInstrumentation().getTargetContext().getContentResolver();
+        IContentProvider provider = mResolver.acquireProvider(ContactsContract.AUTHORITY);
         mBuilder = new ContactsContract_TestDataBuilder(provider);
     }
 
@@ -51,7 +54,13 @@
     }
 
     public void testAddPhoto() throws Exception {
-        TestRawContact rawContact = mBuilder.newRawContact().insert();
+        TestRawContact rawContact = mBuilder.newRawContact().insert().load();
+        TestContact contact = rawContact.getContact().load();
+
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri()));
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), true));
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), false));
+
         TestData photoData = rawContact.newDataRow(Photo.CONTENT_ITEM_TYPE)
                 .with(Photo.PHOTO, getTestPhotoData())
                 .insert();
@@ -59,14 +68,28 @@
         photoData.load();
         photoData.assertColumn(Photo.RAW_CONTACT_ID, rawContact.getId());
         photoData.assertBlobColumnNotNull(Photo.PHOTO);
+
+        assertPhotoStream(Contacts.openContactPhotoInputStream(mResolver, contact.getUri()));
+        assertPhotoStream(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), true));
+        assertPhotoStream(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), false));
     }
 
     public void testAddEmptyPhoto() throws Exception {
-        TestRawContact rawContact = mBuilder.newRawContact().insert();
+        TestRawContact rawContact = mBuilder.newRawContact().insert().load();
+        TestContact contact = rawContact.getContact().load();
+
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri()));
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), true));
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), false));
+
         TestData photoData = rawContact.newDataRow(Photo.CONTENT_ITEM_TYPE)
                 .with(Photo.PHOTO, EMPTY_TEST_PHOTO_DATA)
                 .insert();
         assertNotNull(photoData.load());
+
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri()));
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), true));
+        assertNull(Contacts.openContactPhotoInputStream(mResolver, contact.getUri(), false));
     }
 
     private byte[] getTestPhotoData() {
@@ -89,5 +112,17 @@
         }
         return os.toByteArray();
     }
+
+    private void assertPhotoStream(InputStream photoStream) throws IOException {
+        try {
+            assertNotNull(photoStream);
+            byte[] actualBytes = readInputStreamFully(photoStream);
+            assertTrue(actualBytes.length > 0);
+        } finally {
+            if (photoStream != null) {
+                photoStream.close();
+            }
+        }
+    }
 }