1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 16:06:08 +00:00

add tests for cookie jar

This commit is contained in:
Christian Schabesberger 2020-09-22 17:15:45 +02:00 committed by Abel García de Prada
parent edcbddfd25
commit f4e3640e66
2 changed files with 79 additions and 5 deletions

View File

@ -8,7 +8,7 @@ class CookieJarImpl(
private val sCookieStore: HashMap<String, List<Cookie>>
) : CookieJar {
private fun containsCookieWithName(cookies: List<Cookie>, name: String): Boolean {
fun containsCookieWithName(cookies: List<Cookie>, name: String): Boolean {
for (cookie: Cookie in cookies) {
if (cookie.name == name) {
return true;
@ -17,7 +17,7 @@ class CookieJarImpl(
return false;
}
private fun getUpdatedCookies(oldCookies: List<Cookie>, newCookies: List<Cookie>): List<Cookie> {
fun getUpdatedCookies(oldCookies: List<Cookie>, newCookies: List<Cookie>): List<Cookie> {
val updatedList = ArrayList<Cookie>(newCookies);
for (oldCookie: Cookie in oldCookies) {
if (!containsCookieWithName(updatedList, oldCookie.name)) {
@ -27,11 +27,11 @@ class CookieJarImpl(
return updatedList;
}
override fun saveFromResponse(url: HttpUrl, newCookies: List<Cookie>) {
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
// Avoid duplicated cookies but update
val currentCookies: List<Cookie> = sCookieStore[url.host] ?: ArrayList()
val updatedCookies: List<Cookie> = getUpdatedCookies(currentCookies, newCookies);
sCookieStore.put(url.host, updatedCookies);
val updatedCookies: List<Cookie> = getUpdatedCookies(currentCookies, cookies);
sCookieStore[url.host] = updatedCookies;
}
override fun loadForRequest(url: HttpUrl) =

View File

@ -0,0 +1,74 @@
package com.owncloud.android.lib
import com.owncloud.android.lib.common.http.CookieJarImpl
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertTrue
import okhttp3.Cookie
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.junit.Test
class CookieJarImplTest {
private val oldCookies = ArrayList<Cookie>().apply {
add(COOKIE_A)
add(COOKIE_B_OLD)
}
private val newCookies = ArrayList<Cookie>().apply {
add(COOKIE_B_NEW)
}
private val updatedCookies = ArrayList<Cookie>().apply {
add(COOKIE_A)
add(COOKIE_B_NEW)
}
private val cookieStore = HashMap<String, List<Cookie>>().apply {
put(SOME_HOST, oldCookies)
}
private val cookieJarImpl = CookieJarImpl(cookieStore)
@Test
fun testContainsCookieWithNameReturnsTrue() {
assertTrue(cookieJarImpl.containsCookieWithName(oldCookies, COOKIE_B_OLD.name))
}
@Test
fun testContainsCookieWithNameReturnsFalse() {
assertFalse(cookieJarImpl.containsCookieWithName(newCookies, COOKIE_A.name))
}
@Test
fun testGetUpdatedCookies() {
val generatedUpdatedCookies = cookieJarImpl.getUpdatedCookies(oldCookies, newCookies)
assertEquals(2, generatedUpdatedCookies.size)
assertEquals(updatedCookies[0], generatedUpdatedCookies[1])
assertEquals(updatedCookies[1], generatedUpdatedCookies[0])
}
@Test
fun testCookieStoreUpdateViaSaveFromResponse() {
cookieJarImpl.saveFromResponse(SOME_URL, newCookies)
val generatedUpdatedCookies = cookieStore[SOME_HOST]
assertEquals(2, generatedUpdatedCookies?.size)
assertEquals(updatedCookies[0], generatedUpdatedCookies?.get(1))
assertEquals(updatedCookies[1], generatedUpdatedCookies?.get(0))
}
@Test
fun testLoadForRequest() {
val cookies = cookieJarImpl.loadForRequest(SOME_URL)
assertEquals(oldCookies[0], cookies[0])
assertEquals(oldCookies[1], cookies[1])
}
companion object {
const val SOME_HOST = "some.host.com"
val SOME_URL = "https://$SOME_HOST".toHttpUrl()
val COOKIE_A = Cookie.parse(SOME_URL, "CookieA=CookieValueA")!!
val COOKIE_B_OLD = Cookie.parse(SOME_URL, "CookieB=CookieOldValueB")!!
val COOKIE_B_NEW = Cookie.parse(SOME_URL, "CookieB=CookieNewValueB")!!
}
}