@@ -78,17 +78,61 @@ class FileUtilTest {
7878 }
7979
8080 @Test
81- fun fileUtil_getExternalFileUris_successWithSingleUriIntentData () =
81+ fun fileUtil_getExternalFileUris_successWithContentSchemeUri () =
8282 runBlocking {
8383 val mockIntent = mock(Intent ::class .java)
8484 val mockUri = mock(Uri ::class .java)
8585
86+ `when `(mockUri.scheme).thenReturn(" content" )
8687 `when `(mockIntent.data).thenReturn(mockUri)
8788
8889 val externalFileUris = FileUtil .getExternalFileUris(mockIntent)
8990
9091 assertEquals(1 , externalFileUris.size)
91- assertEquals(externalFileUris.first(), mockIntent.data)
92+ assertEquals(mockUri, externalFileUris.first())
93+ }
94+
95+ @Test
96+ fun fileUtil_getExternalFileUris_successWithFileSchemeUri () =
97+ runBlocking {
98+ val mockIntent = mock(Intent ::class .java)
99+ val mockUri = mock(Uri ::class .java)
100+
101+ `when `(mockUri.scheme).thenReturn(" file" )
102+ `when `(mockIntent.data).thenReturn(mockUri)
103+
104+ val externalFileUris = FileUtil .getExternalFileUris(mockIntent)
105+
106+ assertEquals(1 , externalFileUris.size)
107+ assertEquals(mockUri, externalFileUris.first())
108+ }
109+
110+ @Test
111+ fun fileUtil_getExternalFileUris_excludesHttpsSchemeUri () =
112+ runBlocking {
113+ val mockIntent = mock(Intent ::class .java)
114+ val mockUri = mock(Uri ::class .java)
115+
116+ `when `(mockUri.scheme).thenReturn(" https" )
117+ `when `(mockIntent.data).thenReturn(mockUri)
118+
119+ val externalFileUris = FileUtil .getExternalFileUris(mockIntent)
120+
121+ assertEquals(0 , externalFileUris.size)
122+ }
123+
124+ @Test
125+ fun fileUtil_getExternalFileUris_excludesCustomSchemeUri () =
126+ runBlocking {
127+ val mockIntent = mock(Intent ::class .java)
128+ val mockUri = mock(Uri ::class .java)
129+
130+ `when `(mockUri.scheme).thenReturn(" web-eid-mobile" )
131+ `when `(mockIntent.data).thenReturn(mockUri)
132+
133+ val externalFileUris = FileUtil .getExternalFileUris(mockIntent)
134+
135+ assertEquals(0 , externalFileUris.size)
92136 }
93137
94138 @Test
@@ -112,6 +156,8 @@ class FileUtilTest {
112156 val mockUri1 = mock(Uri ::class .java)
113157 val mockUri2 = mock(Uri ::class .java)
114158
159+ `when `(mockUri1.scheme).thenReturn(" content" )
160+ `when `(mockUri2.scheme).thenReturn(" file" )
115161 `when `(mockClipDataItem1.uri).thenReturn(mockUri1)
116162 `when `(mockClipDataItem2.uri).thenReturn(mockUri2)
117163
@@ -128,6 +174,33 @@ class FileUtilTest {
128174 assertEquals(mockUri2, externalFileUris.last())
129175 }
130176
177+ @Test
178+ fun fileUtil_getExternalFileUris_clipDataFiltersOutNonAllowedSchemes () =
179+ runBlocking {
180+ val mockIntent = mock(Intent ::class .java)
181+ val mockClipData = mock(ClipData ::class .java)
182+ val mockClipDataItem1 = mock(ClipData .Item ::class .java)
183+ val mockClipDataItem2 = mock(ClipData .Item ::class .java)
184+ val mockUri1 = mock(Uri ::class .java)
185+ val mockUri2 = mock(Uri ::class .java)
186+
187+ `when `(mockUri1.scheme).thenReturn(" content" )
188+ `when `(mockUri2.scheme).thenReturn(" https" )
189+ `when `(mockClipDataItem1.uri).thenReturn(mockUri1)
190+ `when `(mockClipDataItem2.uri).thenReturn(mockUri2)
191+
192+ `when `(mockClipData.getItemAt(0 )).thenReturn(mockClipDataItem1)
193+ `when `(mockClipData.getItemAt(1 )).thenReturn(mockClipDataItem2)
194+ `when `(mockClipData.itemCount).thenReturn(2 )
195+
196+ `when `(mockIntent.clipData).thenReturn(mockClipData)
197+
198+ val externalFileUris = FileUtil .getExternalFileUris(mockIntent)
199+
200+ assertEquals(1 , externalFileUris.size)
201+ assertEquals(mockUri1, externalFileUris.first())
202+ }
203+
131204 @Test
132205 fun fileUtil_getExternalFileUris_returnEmptyListWithoutIntentClipData () =
133206 runBlocking {
0 commit comments