@@ -25,28 +25,30 @@ import java.net.URLEncoder
2525@RunWith(RobolectricTestRunner ::class )
2626class CallIntentDataParserTests {
2727
28+ private val callIntentDataParser = CallIntentDataParser ()
29+
2830 @Test
2931 fun `a null data returns null` () {
3032 val url: String? = null
31- assertThat(CallIntentDataParser .parse(url)).isNull()
33+ assertThat(callIntentDataParser .parse(url)).isNull()
3234 }
3335
3436 @Test
3537 fun `empty data returns null` () {
3638 val url = " "
37- assertThat(CallIntentDataParser .parse(url)).isNull()
39+ assertThat(callIntentDataParser .parse(url)).isNull()
3840 }
3941
4042 @Test
4143 fun `invalid data returns null` () {
4244 val url = " !"
43- assertThat(CallIntentDataParser .parse(url)).isNull()
45+ assertThat(callIntentDataParser .parse(url)).isNull()
4446 }
4547
4648 @Test
4749 fun `data with no scheme returns null` () {
4850 val url = " test"
49- assertThat(CallIntentDataParser .parse(url)).isNull()
51+ assertThat(callIntentDataParser .parse(url)).isNull()
5052 }
5153
5254 @Test
@@ -55,10 +57,10 @@ class CallIntentDataParserTests {
5557 val httpCallUrl = " http://call.element.io/some-actual-call?with=parameters"
5658 val httpsBaseUrl = " https://call.element.io"
5759 val httpsCallUrl = " https://call.element.io/some-actual-call?with=parameters"
58- assertThat(CallIntentDataParser .parse(httpBaseUrl)).isEqualTo(httpBaseUrl)
59- assertThat(CallIntentDataParser .parse(httpCallUrl)).isEqualTo(httpCallUrl)
60- assertThat(CallIntentDataParser .parse(httpsBaseUrl)).isEqualTo(httpsBaseUrl)
61- assertThat(CallIntentDataParser .parse(httpsCallUrl)).isEqualTo(httpsCallUrl)
60+ assertThat(callIntentDataParser .parse(httpBaseUrl)).isEqualTo(httpBaseUrl)
61+ assertThat(callIntentDataParser .parse(httpCallUrl)).isEqualTo(httpCallUrl)
62+ assertThat(callIntentDataParser .parse(httpsBaseUrl)).isEqualTo(httpsBaseUrl)
63+ assertThat(callIntentDataParser .parse(httpsCallUrl)).isEqualTo(httpsCallUrl)
6264 }
6365
6466 @Test
@@ -67,39 +69,69 @@ class CallIntentDataParserTests {
6769 val httpsBaseUrl = " https://app.element.io"
6870 val httpInvalidUrl = " http://"
6971 val httpsInvalidUrl = " http://"
70- assertThat(CallIntentDataParser .parse(httpBaseUrl)).isNull()
71- assertThat(CallIntentDataParser .parse(httpsBaseUrl)).isNull()
72- assertThat(CallIntentDataParser .parse(httpInvalidUrl)).isNull()
73- assertThat(CallIntentDataParser .parse(httpsInvalidUrl)).isNull()
72+ assertThat(callIntentDataParser .parse(httpBaseUrl)).isNull()
73+ assertThat(callIntentDataParser .parse(httpsBaseUrl)).isNull()
74+ assertThat(callIntentDataParser .parse(httpInvalidUrl)).isNull()
75+ assertThat(callIntentDataParser .parse(httpsInvalidUrl)).isNull()
7476 }
7577
7678 @Test
7779 fun `element scheme with call host and url param gets url extracted` () {
7880 val embeddedUrl = " http://call.element.io/some-actual-call?with=parameters"
7981 val encodedUrl = URLEncoder .encode(embeddedUrl, " utf-8" )
8082 val url = " element://call?url=$encodedUrl "
81- assertThat(CallIntentDataParser .parse(url)).isEqualTo(embeddedUrl)
83+ assertThat(callIntentDataParser.parse(url)).isEqualTo(embeddedUrl)
84+ }
85+
86+ @Test
87+ fun `element scheme 2 with url param gets url extracted` () {
88+ val embeddedUrl = " http://call.element.io/some-actual-call?with=parameters"
89+ val encodedUrl = URLEncoder .encode(embeddedUrl, " utf-8" )
90+ val url = " io.element.call:/?url=$encodedUrl "
91+ assertThat(callIntentDataParser.parse(url)).isEqualTo(embeddedUrl)
8292 }
8393
8494 @Test
8595 fun `element scheme with call host and no url param returns null` () {
8696 val embeddedUrl = " http://call.element.io/some-actual-call?with=parameters"
8797 val encodedUrl = URLEncoder .encode(embeddedUrl, " utf-8" )
8898 val url = " element://call?no-url=$encodedUrl "
89- assertThat(CallIntentDataParser .parse(url)).isNull()
99+ assertThat(callIntentDataParser.parse(url)).isNull()
100+ }
101+
102+ @Test
103+ fun `element scheme 2 with no url returns null` () {
104+ val embeddedUrl = " http://call.element.io/some-actual-call?with=parameters"
105+ val encodedUrl = URLEncoder .encode(embeddedUrl, " utf-8" )
106+ val url = " io.element.call:/?no_url=$encodedUrl "
107+ assertThat(callIntentDataParser.parse(url)).isNull()
90108 }
91109
92110 @Test
93111 fun `element scheme with no call host returns null` () {
94112 val embeddedUrl = " http://call.element.io/some-actual-call?with=parameters"
95113 val encodedUrl = URLEncoder .encode(embeddedUrl, " utf-8" )
96114 val url = " element://no-call?url=$encodedUrl "
97- assertThat(CallIntentDataParser .parse(url)).isNull()
115+ assertThat(callIntentDataParser .parse(url)).isNull()
98116 }
99117
100118 @Test
101119 fun `element scheme with no data returns null` () {
102120 val url = " element://call?url="
103- assertThat(CallIntentDataParser .parse(url)).isNull()
121+ assertThat(callIntentDataParser.parse(url)).isNull()
122+ }
123+
124+ @Test
125+ fun `element scheme 2 with no data returns null` () {
126+ val url = " io.element.call:/?url="
127+ assertThat(callIntentDataParser.parse(url)).isNull()
128+ }
129+
130+ @Test
131+ fun `element invalid scheme returns null` () {
132+ val embeddedUrl = " http://call.element.io/some-actual-call?with=parameters"
133+ val encodedUrl = URLEncoder .encode(embeddedUrl, " utf-8" )
134+ val url = " bad.scheme:/?url=$encodedUrl "
135+ assertThat(callIntentDataParser.parse(url)).isNull()
104136 }
105137}
0 commit comments