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

Do data field not mandatory on ocs response

This commit is contained in:
Abel García de Prada 2022-11-14 09:32:14 +01:00
parent 9adadbddcc
commit f9bc792ded
3 changed files with 21 additions and 21 deletions

View File

@ -36,7 +36,7 @@ data class CommonOcsResponse<T>(
@JsonClass(generateAdapter = true) @JsonClass(generateAdapter = true)
data class OCSResponse<T>( data class OCSResponse<T>(
val meta: MetaData, val meta: MetaData,
val data: T val data: T?
) )
@JsonClass(generateAdapter = true) @JsonClass(generateAdapter = true)

View File

@ -99,11 +99,11 @@ class GetRemoteShareesOperation
.appendQueryParameter(PARAM_PER_PAGE, perPage.toString()) .appendQueryParameter(PARAM_PER_PAGE, perPage.toString())
.build() .build()
private fun parseResponse(response: String): ShareeOcsResponse? { private fun parseResponse(response: String?): ShareeOcsResponse? {
val moshi = Moshi.Builder().build() val moshi = Moshi.Builder().build()
val type: Type = Types.newParameterizedType(CommonOcsResponse::class.java, ShareeOcsResponse::class.java) val type: Type = Types.newParameterizedType(CommonOcsResponse::class.java, ShareeOcsResponse::class.java)
val adapter: JsonAdapter<CommonOcsResponse<ShareeOcsResponse>> = moshi.adapter(type) val adapter: JsonAdapter<CommonOcsResponse<ShareeOcsResponse>> = moshi.adapter(type)
return adapter.fromJson(response)!!.ocs.data return response?.let { adapter.fromJson(it)?.ocs?.data }
} }
private fun onResultUnsuccessful( private fun onResultUnsuccessful(
@ -123,7 +123,7 @@ class GetRemoteShareesOperation
private fun onRequestSuccessful(response: String?): RemoteOperationResult<ShareeOcsResponse> { private fun onRequestSuccessful(response: String?): RemoteOperationResult<ShareeOcsResponse> {
val result = RemoteOperationResult<ShareeOcsResponse>(OK) val result = RemoteOperationResult<ShareeOcsResponse>(OK)
Timber.d("Successful response: $response") Timber.d("Successful response: $response")
result.data = parseResponse(response!!) result.data = parseResponse(response)
Timber.d("*** Get Users or groups completed ") Timber.d("*** Get Users or groups completed ")
return result return result
} }

View File

@ -63,31 +63,31 @@ class ShareeResponseTest {
@Test @Test
fun `example response - ok - correct sturcture`() { fun `example response - ok - correct sturcture`() {
val response = loadResponses(EXAMPLE_RESPONSE_JSON)!! val response = loadResponses(EXAMPLE_RESPONSE_JSON)!!
assertEquals(2, response.ocs.data.groups.size) assertEquals(2, response.ocs.data?.groups?.size)
assertEquals(0, response.ocs.data.remotes.size) assertEquals(0, response.ocs.data?.remotes?.size)
assertEquals(2, response.ocs.data.users.size) assertEquals(2, response.ocs.data?.users?.size)
assertEquals(0, response.ocs.data.exact?.groups?.size) assertEquals(0, response.ocs.data?.exact?.groups?.size)
assertEquals(0, response.ocs.data.exact?.remotes?.size) assertEquals(0, response.ocs.data?.exact?.remotes?.size)
assertEquals(1, response.ocs.data.exact?.users?.size) assertEquals(1, response.ocs.data?.exact?.users?.size)
assertEquals("user1@user1.com", response.ocs.data.users.get(0).value.additionalInfo) assertEquals("user1@user1.com", response.ocs.data?.users?.get(0)?.value?.additionalInfo)
assertNull(response.ocs.data.users[1].value.additionalInfo) assertNull(response.ocs.data?.users?.get(1)?.value?.additionalInfo)
} }
@Test @Test
fun `check empty response - ok - parsing ok`() { fun `check empty response - ok - parsing ok`() {
val response = loadResponses(EMPTY_RESPONSE_JSON)!! val response = loadResponses(EMPTY_RESPONSE_JSON)!!
assertTrue(response.ocs.data.exact?.groups?.isEmpty()!!) assertTrue(response.ocs.data?.exact?.groups?.isEmpty()!!)
assertTrue(response.ocs.data.exact?.remotes?.isEmpty()!!) assertTrue(response.ocs.data?.exact?.remotes?.isEmpty()!!)
assertTrue(response.ocs.data.exact?.users?.isEmpty()!!) assertTrue(response.ocs.data?.exact?.users?.isEmpty()!!)
assertTrue(response.ocs.data.groups.isEmpty()) assertTrue(response.ocs.data?.groups?.isEmpty()!!)
assertTrue(response.ocs.data.remotes.isEmpty()) assertTrue(response.ocs.data?.remotes?.isEmpty()!!)
assertTrue(response.ocs.data.users.isEmpty()) assertTrue(response.ocs.data?.users?.isEmpty()!!)
} }
companion object { companion object {
val RESOURCES_PATH = private const val RESOURCES_PATH =
"src/test/responses/com.owncloud.android.lib.resources.sharees.responses" "src/test/responses/com.owncloud.android.lib.resources.sharees.responses"
val EXAMPLE_RESPONSE_JSON = "$RESOURCES_PATH/example_sharee_response.json" const val EXAMPLE_RESPONSE_JSON = "$RESOURCES_PATH/example_sharee_response.json"
val EMPTY_RESPONSE_JSON = "$RESOURCES_PATH/empty_sharee_response.json" const val EMPTY_RESPONSE_JSON = "$RESOURCES_PATH/empty_sharee_response.json"
} }
} }