| author | Da Risk <da_risk@geekorum.com> |
| Wed, 03 Jan 2024 15:26:40 -0400 | |
| changeset 1174 | 731f6ee517b6 |
| parent 1164 | c4a64501229b |
| child 1370 | 13e39ef920a8 |
| permissions | -rw-r--r-- |
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
1 |
/* |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
2 |
* Geekttrss is a RSS feed reader application on the Android Platform. |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
3 |
* |
| 1174 | 4 |
* Copyright (C) 2017-2024 by Frederic-Charles Barthelery. |
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
5 |
* |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
6 |
* This file is part of Geekttrss. |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
7 |
* |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
8 |
* Geekttrss is free software: you can redistribute it and/or modify |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
9 |
* it under the terms of the GNU General Public License as published by |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
10 |
* the Free Software Foundation, either version 3 of the License, or |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
11 |
* (at your option) any later version. |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
12 |
* |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
13 |
* Geekttrss is distributed in the hope that it will be useful, |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
14 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
15 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
16 |
* GNU General Public License for more details. |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
17 |
* |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
18 |
* You should have received a copy of the GNU General Public License |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
19 |
* along with Geekttrss. If not, see <http://www.gnu.org/licenses/>. |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
20 |
*/ |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
21 |
package com.geekorum.favikonsnoop.snoopers |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
22 |
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
23 |
import com.geekorum.favikonsnoop.FaviconInfo |
|
1053
ec1f5c54ff92
faviKonSnoop: use a suspend await() on okHttp Call
Da Risk <da_risk@geekorum.com>
parents:
1052
diff
changeset
|
24 |
import com.geekorum.favikonsnoop.await |
|
455
c743a2f2ca8a
faviKonSnoop: switch input to okio source
Da Risk <da_risk@geekorum.com>
parents:
454
diff
changeset
|
25 |
import com.geekorum.favikonsnoop.source |
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
26 |
import com.google.common.truth.Truth.assertThat |
|
1053
ec1f5c54ff92
faviKonSnoop: use a suspend await() on okHttp Call
Da Risk <da_risk@geekorum.com>
parents:
1052
diff
changeset
|
27 |
import io.mockk.* |
|
1052
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
28 |
import kotlinx.coroutines.test.StandardTestDispatcher |
|
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
29 |
import kotlinx.coroutines.test.TestScope |
|
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
30 |
import kotlinx.coroutines.test.runTest |
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
31 |
import okhttp3.HttpUrl.Companion.toHttpUrl |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
32 |
import okhttp3.Protocol.HTTP_1_1 |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
33 |
import okhttp3.Request |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
34 |
import okhttp3.Response |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
35 |
import okhttp3.ResponseBody.Companion.toResponseBody |
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
36 |
import org.junit.Test |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
37 |
import kotlin.test.BeforeTest |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
38 |
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
39 |
private val SIMPLE_MANIFEST = """ |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
40 |
{
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
41 |
"name": "Donate App", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
42 |
"description": "This app helps you donate to worthy causes.", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
43 |
"icons": [{
|
|
454
6398d0a6def5
faviKonSnoop: fix issue when icons don't define sizes attribute
Da Risk <da_risk@geekorum.com>
parents:
453
diff
changeset
|
44 |
"src": "images/icon.png" |
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
45 |
}] |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
46 |
} |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
47 |
""".trimIndent() |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
48 |
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
49 |
private val TYPICAL_MANIFEST = """ |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
50 |
{
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
51 |
"lang": "en", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
52 |
"dir": "ltr", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
53 |
"name": "Super Racer 3000", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
54 |
"description": "The ultimate futuristic racing game from the future!", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
55 |
"short_name": "Racer3K", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
56 |
"icons": [{
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
57 |
"src": "icon/lowres.webp", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
58 |
"sizes": "64x64", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
59 |
"type": "image/webp" |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
60 |
},{
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
61 |
"src": "icon/lowres.png", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
62 |
"sizes": "64x64" |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
63 |
}, {
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
64 |
"src": "icon/hd_hi", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
65 |
"sizes": "128x128" |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
66 |
}], |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
67 |
"scope": "/racer/", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
68 |
"start_url": "/racer/start.html", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
69 |
"display": "fullscreen", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
70 |
"orientation": "landscape", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
71 |
"theme_color": "aliceblue", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
72 |
"background_color": "red", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
73 |
"serviceworker": {
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
74 |
"src": "sw.js", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
75 |
"scope": "/racer/", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
76 |
"update_via_cache": "none" |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
77 |
}, |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
78 |
"screenshots": [{
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
79 |
"src": "screenshots/in-game-1x.jpg", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
80 |
"sizes": "640x480", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
81 |
"type": "image/jpeg" |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
82 |
},{
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
83 |
"src": "screenshots/in-game-2x.jpg", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
84 |
"sizes": "1280x920", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
85 |
"type": "image/jpeg" |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
86 |
}] |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
87 |
} |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
88 |
""".trimIndent() |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
89 |
|
|
454
6398d0a6def5
faviKonSnoop: fix issue when icons don't define sizes attribute
Da Risk <da_risk@geekorum.com>
parents:
453
diff
changeset
|
90 |
private const val INVALID_MANIFEST = "{}"
|
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
91 |
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
92 |
private val INVALID_HTML = |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
93 |
"""fw""".trimIndent() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
94 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
95 |
private val NO_MANIFEST_HTML = """ |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
96 |
<html lang="en"> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
97 |
<head> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
98 |
<title>lsForums — Inbox</title> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
99 |
<link rel=icon href=favicon.png sizes="16x16" type="image/png"> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
100 |
<script src=lsforums.js></script> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
101 |
<meta name=application-name content="lsForums"> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
102 |
</head> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
103 |
</html> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
104 |
""".trimIndent() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
105 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
106 |
private val WITH_MANIFEST_HTML = """ |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
107 |
<html lang="en"> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
108 |
<head> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
109 |
<title>lsForums — Inbox</title> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
110 |
<link rel="manifest" href=/static/manifest.json > |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
111 |
<link rel=icon href=favicon.png sizes="16x16" type="image/png"> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
112 |
</head> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
113 |
</html> |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
114 |
""".trimIndent() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
115 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
116 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
117 |
class AppManifestSnooperTest {
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
118 |
lateinit var subject: AppManifestSnooper |
|
1052
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
119 |
private val testDispatcher = StandardTestDispatcher() |
|
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
120 |
private val testScope = TestScope(testDispatcher) |
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
121 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
122 |
@BeforeTest |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
123 |
fun setUp() {
|
|
1052
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
124 |
subject = AppManifestSnooper(testDispatcher) |
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
125 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
126 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
127 |
@Test |
|
1052
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
128 |
fun testInvalidHtmlReturnsEmpty() = testScope.runTest {
|
|
455
c743a2f2ca8a
faviKonSnoop: switch input to okio source
Da Risk <da_risk@geekorum.com>
parents:
454
diff
changeset
|
129 |
val result = INVALID_HTML.source().use {
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
130 |
subject.snoop("http://exemple.com", it)
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
131 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
132 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
133 |
assertThat(result).isEmpty() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
134 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
135 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
136 |
@Test |
|
1052
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
137 |
fun testHtmlWithoutManifestReturnsEmpty() = testScope.runTest {
|
|
455
c743a2f2ca8a
faviKonSnoop: switch input to okio source
Da Risk <da_risk@geekorum.com>
parents:
454
diff
changeset
|
138 |
val result = NO_MANIFEST_HTML.source().use {
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
139 |
subject.snoop("http://exemple.com", it)
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
140 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
141 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
142 |
assertThat(result).isEmpty() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
143 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
144 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
145 |
@Test |
|
1052
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
146 |
fun testHtmlWithInvalidManifestReturnsEmpty() = testScope.runTest {
|
|
1053
ec1f5c54ff92
faviKonSnoop: use a suspend await() on okHttp Call
Da Risk <da_risk@geekorum.com>
parents:
1052
diff
changeset
|
147 |
mockkStatic("com.geekorum.favikonsnoop.FaviKonSnoopKt")
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
148 |
subject.okHttpClient = mockk() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
149 |
val requestSlot = slot<Request>() |
|
1053
ec1f5c54ff92
faviKonSnoop: use a suspend await() on okHttp Call
Da Risk <da_risk@geekorum.com>
parents:
1052
diff
changeset
|
150 |
|
|
ec1f5c54ff92
faviKonSnoop: use a suspend await() on okHttp Call
Da Risk <da_risk@geekorum.com>
parents:
1052
diff
changeset
|
151 |
coEvery { subject.okHttpClient.newCall(capture(requestSlot)).await() } answers {
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
152 |
Response.Builder() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
153 |
.code(200) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
154 |
.request(requestSlot.captured) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
155 |
.protocol(HTTP_1_1) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
156 |
.message("ok")
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
157 |
.body(INVALID_MANIFEST.toResponseBody()) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
158 |
.build() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
159 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
160 |
|
|
455
c743a2f2ca8a
faviKonSnoop: switch input to okio source
Da Risk <da_risk@geekorum.com>
parents:
454
diff
changeset
|
161 |
val result = WITH_MANIFEST_HTML.source().use {
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
162 |
subject.snoop("http://exemple.com", it)
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
163 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
164 |
assertThat(requestSlot.captured.url).isEqualTo("http://exemple.com/static/manifest.json".toHttpUrl())
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
165 |
assertThat(result).isEmpty() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
166 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
167 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
168 |
@Test |
|
1052
43bf3f913017
faviKonSnoop: use suspend functions and coroutine dispatchers
Da Risk <da_risk@geekorum.com>
parents:
943
diff
changeset
|
169 |
fun testHtmlWithSimpleManifestReturnsSimpleResult() = testScope.runTest {
|
|
1053
ec1f5c54ff92
faviKonSnoop: use a suspend await() on okHttp Call
Da Risk <da_risk@geekorum.com>
parents:
1052
diff
changeset
|
170 |
mockkStatic("com.geekorum.favikonsnoop.FaviKonSnoopKt")
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
171 |
subject.okHttpClient = mockk() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
172 |
val requestSlot = slot<Request>() |
|
1053
ec1f5c54ff92
faviKonSnoop: use a suspend await() on okHttp Call
Da Risk <da_risk@geekorum.com>
parents:
1052
diff
changeset
|
173 |
coEvery { subject.okHttpClient.newCall(capture(requestSlot)).await() } answers {
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
174 |
Response.Builder() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
175 |
.code(200) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
176 |
.request(requestSlot.captured) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
177 |
.protocol(HTTP_1_1) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
178 |
.message("ok")
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
179 |
.body(SIMPLE_MANIFEST.toResponseBody()) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
180 |
.build() |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
181 |
} |
|
455
c743a2f2ca8a
faviKonSnoop: switch input to okio source
Da Risk <da_risk@geekorum.com>
parents:
454
diff
changeset
|
182 |
val result = WITH_MANIFEST_HTML.source().use {
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
183 |
subject.snoop("http://exemple.com", it)
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
184 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
185 |
assertThat(requestSlot.captured.url).isEqualTo("http://exemple.com/static/manifest.json".toHttpUrl())
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
186 |
assertThat(result).containsExactly( |
|
454
6398d0a6def5
faviKonSnoop: fix issue when icons don't define sizes attribute
Da Risk <da_risk@geekorum.com>
parents:
453
diff
changeset
|
187 |
FaviconInfo("http://exemple.com/static/images/icon.png")
|
|
453
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
188 |
) |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
189 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
190 |
|
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
191 |
} |
|
ecbc5d274f63
faviKonSnoop: add AppManifestSnooper
Da Risk <da_risk@geekorum.com>
parents:
452
diff
changeset
|
192 |
|
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
193 |
class WebAppManifestParserTest {
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
194 |
private lateinit var subject: WebAppManifestParser |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
195 |
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
196 |
@BeforeTest |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
197 |
fun setUp() {
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
198 |
subject = WebAppManifestParser() |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
199 |
} |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
200 |
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
201 |
@Test |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
202 |
fun parseSimpleWebAppManifest() {
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
203 |
val result = subject.parseManifest(SIMPLE_MANIFEST) |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
204 |
assertThat(result!!.icons).containsExactly( |
|
454
6398d0a6def5
faviKonSnoop: fix issue when icons don't define sizes attribute
Da Risk <da_risk@geekorum.com>
parents:
453
diff
changeset
|
205 |
ImageResource("images/icon.png")
|
|
452
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
206 |
) |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
207 |
} |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
208 |
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
209 |
@Test |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
210 |
fun parseTypicalWebAppManifest() {
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
211 |
val result = subject.parseManifest(TYPICAL_MANIFEST) |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
212 |
assertThat(result!!.icons).containsExactly( |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
213 |
ImageResource("icon/lowres.webp",
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
214 |
sizes = "64x64", |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
215 |
type = "image/webp"), |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
216 |
ImageResource("icon/lowres.png",
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
217 |
sizes = "64x64"), |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
218 |
ImageResource("icon/hd_hi",
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
219 |
sizes = "128x128") |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
220 |
) |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
221 |
} |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
222 |
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
223 |
@Test |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
224 |
fun parseInvalidManifest() {
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
225 |
val result = subject.parseManifest(INVALID_MANIFEST) |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
226 |
assertThat(result).isNull() |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
227 |
} |
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
228 |
|
|
3d0a13d61020
faviKonSnoop: add WebAppManifestParser
Da Risk <da_risk@geekorum.com>
parents:
diff
changeset
|
229 |
} |