aboutsummaryrefslogtreecommitdiff
path: root/app/src/test/kotlin/com/pitchedapps/frost/facebook
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-12-26 03:37:32 -0500
committerAllan Wang <me@allanwang.ca>2017-12-26 03:39:28 -0500
commit1769dbcef9786b847ffeaebdf6ecced45da9222c (patch)
tree50f543469607b608c0b62ca8a63c6a65325802b9 /app/src/test/kotlin/com/pitchedapps/frost/facebook
parent8080d43dbd9a6863fadb86594b179d0919d6215b (diff)
downloadfrost-1769dbcef9786b847ffeaebdf6ecced45da9222c.tar.gz
frost-1769dbcef9786b847ffeaebdf6ecced45da9222c.tar.bz2
frost-1769dbcef9786b847ffeaebdf6ecced45da9222c.zip
Enhancement/fb requests (#575)v1.7.2
* Update lambdas to references * Simplify regex and parsers * Fix some parsing and add more tests * Improve message parser and tests * Simplify parser * Shorten interfaces * Push rem * Create notification parser * Clean up notification service * Clean up notification service * Add safe cookie fallback * Fix cookie reference * Make parsers only hold cookie string * Clean up cookie references * Fix up login and event theme * Update changelog Remove workspace backup
Diffstat (limited to 'app/src/test/kotlin/com/pitchedapps/frost/facebook')
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/facebook/FbParseTest.kt46
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt41
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt45
3 files changed, 104 insertions, 28 deletions
diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbParseTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbParseTest.kt
new file mode 100644
index 00000000..65777f97
--- /dev/null
+++ b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbParseTest.kt
@@ -0,0 +1,46 @@
+package com.pitchedapps.frost.facebook
+
+import com.pitchedapps.frost.internal.COOKIE
+import com.pitchedapps.frost.internal.assertComponentsNotEmpty
+import com.pitchedapps.frost.internal.assertDescending
+import com.pitchedapps.frost.internal.authDependent
+import com.pitchedapps.frost.parsers.*
+import org.junit.BeforeClass
+import org.junit.Test
+import kotlin.test.fail
+
+/**
+ * Created by Allan Wang on 24/12/17.
+ */
+class FbParseTest {
+
+ companion object {
+ @BeforeClass
+ @JvmStatic
+ fun before() {
+ authDependent()
+ }
+ }
+
+ private inline fun <T : Any> FrostParser<T>.test(action: T.() -> Unit = {}) {
+ val response = parse(COOKIE)
+ ?: fail("${this::class.java.simpleName} returned null for $url")
+ println(response)
+ response.data.action()
+ }
+
+ @Test
+ fun message() = MessageParser.test {
+ threads.forEach(FrostThread::assertComponentsNotEmpty)
+ threads.map(FrostThread::time).assertDescending("thread time values")
+ }
+
+ @Test
+ fun search() = SearchParser.test()
+
+ @Test
+ fun notif() = NotifParser.test {
+ notifs.forEach(FrostNotif::assertComponentsNotEmpty)
+ notifs.map(FrostNotif::time).assertDescending("notif time values")
+ }
+} \ No newline at end of file
diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt
new file mode 100644
index 00000000..a21bcb13
--- /dev/null
+++ b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt
@@ -0,0 +1,41 @@
+package com.pitchedapps.frost.facebook
+
+import org.apache.commons.text.StringEscapeUtils
+import org.junit.Test
+import kotlin.test.assertEquals
+
+/**
+ * Created by Allan Wang on 24/12/17.
+ */
+class FbRegexTest {
+ @Test
+ fun userIdRegex() {
+ val id = 12349876L
+ val cookie = "wd=1366x615; c_user=$id; act=1234%2F12; m_pixel_ratio=1; presence=hello; x-referer=asdfasdf"
+ assertEquals(id, FB_USER_MATCHER.find(cookie)[1]?.toLong())
+ }
+
+ @Test
+ fun fbDtsgRegex() {
+ val fb_dtsg = "readme"
+ val input = "data-sigil=\"mbasic_inline_feed_composer\">\u003Cinput type=\"hidden\" name=\"fb_dtsg\" value=\"$fb_dtsg\" autocomplete=\"off\" \\/>\u003Cinput type=\"hidden\" name=\"privacyx\" value=\"12345\""
+ assertEquals(fb_dtsg, FB_DTSG_MATCHER.find(input)[1])
+ }
+
+ @Test
+ fun ppRegex() {
+ val img = "https\\3a //scontent-yyz1-1.xx.fbcdn.net/v/asdf1234.jpg?efg\\3d 333\\26 oh\\3d 77\\26 oe\\3d 444"
+ val ppStyle = "background:#d8dce6 url('$img') no-repeat center;background-size:100% 100%;-webkit-background-size:100% 100%;width:58px;height:58px;"
+ assertEquals(StringEscapeUtils.unescapeCsv(img), StringEscapeUtils.unescapeCsv(FB_CSS_URL_MATCHER.find(ppStyle)[1]))
+ }
+
+ @Test
+ fun msgNotifIdRegex() {
+ val id = 1273491646093428L
+ val data = "threadlist_row_other_user_fbid_thread_fbid_$id"
+ assertEquals(id, FB_MESSAGE_NOTIF_ID_MATCHER.find(data)[1]?.toLong(), "thread_fbid mismatch")
+ val userData = "threadlist_row_other_user_fbid_${id}thread_fbid_"
+ assertEquals(id, FB_MESSAGE_NOTIF_ID_MATCHER.find(userData)[1]?.toLong(), "user_fbid mismatch")
+
+ }
+} \ No newline at end of file
diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt
index a521ceda..16894b16 100644
--- a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt
+++ b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRequestTest.kt
@@ -1,14 +1,13 @@
package com.pitchedapps.frost.facebook
+import com.pitchedapps.frost.internal.AUTH
import com.pitchedapps.frost.internal.COOKIE
-import com.pitchedapps.frost.internal.FB_DTSG
import com.pitchedapps.frost.internal.USER_ID
-import org.junit.Assume
+import com.pitchedapps.frost.internal.authDependent
+import okhttp3.Call
import org.junit.BeforeClass
import org.junit.Test
-import kotlin.test.assertEquals
-import kotlin.test.assertFalse
-import kotlin.test.assertNotNull
+import kotlin.test.*
/**
* Created by Allan Wang on 21/12/17.
@@ -19,44 +18,34 @@ class FbRequestTest {
@BeforeClass
@JvmStatic
fun before() {
- Assume.assumeTrue(COOKIE.isNotEmpty())
+ authDependent()
}
-
- val AUTH: RequestAuth by lazy { RequestAuth(USER_ID, COOKIE, FB_DTSG) }
}
- @Test
- fun userIdRegex() {
- val id = 12349876L
- val cookie = "wd=1366x615; c_user=$id; act=1234%2F12; m_pixel_ratio=1; presence=hello; x-referer=asdfasdf"
- assertEquals(id, FB_USER_MATCHER.find(cookie)?.groupValues?.get(1)?.toLong())
- }
-
- @Test
- fun fbDtsgRegex() {
- val fb_dtsg = "readme"
- val input = "data-sigil=\"mbasic_inline_feed_composer\">\u003Cinput type=\"hidden\" name=\"fb_dtsg\" value=\"$fb_dtsg\" autocomplete=\"off\" \\/>\u003Cinput type=\"hidden\" name=\"privacyx\" value=\"12345\""
- assertEquals(fb_dtsg, FB_DTSG_MATCHER.find(input)?.groupValues?.get(1))
+ /**
+ * Used to emulate [executeAndCheck]
+ * Must be consistent with that method
+ */
+ private fun Call.assertNoError() {
+ val data = execute().body()?.string() ?: fail("Content was null")
+ println("Call response: $data")
+ assertTrue(data.isNotEmpty(), "Content was empty")
+ assertFalse(data.contains("error"), "Content had error")
}
@Test
fun auth() {
val auth = (USER_ID to COOKIE).getAuth()
assertNotNull(auth)
- assertEquals(USER_ID, auth!!.userId)
+ assertEquals(USER_ID, auth.userId)
assertEquals(COOKIE, auth.cookie)
- println("Test auth: priv $FB_DTSG, test ${auth.fb_dtsg}")
+ println("Test auth: ${auth.fb_dtsg}")
}
@Test
fun markNotification() {
val notifId = 1513544657695779
-
- val out = AUTH.markNotificationRead(notifId)
- .execute().body()?.string() ?: ""
- println(out)
-
- assertFalse(out.contains("error"))
+ AUTH.markNotificationRead(notifId).assertNoError()
}
} \ No newline at end of file