git.iko.soy/parseable-android
on master help sign in
89 lines 3.1 kB history raw
1package com.parseable.android
3import com.parseable.android.data.model.ApiResult
4import org.junit.Assert.*
5import org.junit.Test
7class ApiResultTest {
9 @Test
10 fun `401 error produces session expired message`() {
11 val error = ApiResult.Error("Unauthorized", code = 401)
12 assertTrue(error.isUnauthorized)
13 assertEquals("Session expired. Please log in again.", error.userMessage)
14 }
16 @Test
17 fun `403 error produces permission denied message`() {
18 val error = ApiResult.Error("Forbidden", code = 403)
19 assertEquals("Permission denied.", error.userMessage)
20 }
22 @Test
23 fun `404 error produces not found message`() {
24 val error = ApiResult.Error("Not Found", code = 404)
25 assertTrue(error.isNotFound)
26 assertEquals("Resource not found. It may have been deleted.", error.userMessage)
27 }
29 @Test
30 fun `429 error produces rate limit message`() {
31 val error = ApiResult.Error("Too Many Requests", code = 429)
32 assertEquals("Too many requests. Please wait and try again.", error.userMessage)
33 }
35 @Test
36 fun `500 error produces server error message`() {
37 val error = ApiResult.Error("Internal Server Error", code = 500)
38 assertTrue(error.isServerError)
39 assertEquals("Server error (500). Please try again later.", error.userMessage)
40 }
42 @Test
43 fun `502 error produces server error message`() {
44 val error = ApiResult.Error("Bad Gateway", code = 502)
45 assertTrue(error.isServerError)
46 assertEquals("Server error (502). Please try again later.", error.userMessage)
47 }
49 @Test
50 fun `network timeout produces timeout message`() {
51 val error = ApiResult.Error("connect timeout", code = 0)
52 assertTrue(error.isNetworkError)
53 assertEquals("Connection timed out. Check your network.", error.userMessage)
54 }
56 @Test
57 fun `DNS resolution failure produces no internet message`() {
58 val error = ApiResult.Error("Unable to resolve host \"example.com\"", code = 0)
59 assertTrue(error.isNetworkError)
60 assertEquals("No internet connection.", error.userMessage)
61 }
63 @Test
64 fun `connection refused produces unreachable message`() {
65 val error = ApiResult.Error("Connection refused", code = 0)
66 assertTrue(error.isNetworkError)
67 assertEquals("Server is unreachable.", error.userMessage)
68 }
70 @Test
71 fun `generic network error includes original message`() {
72 val error = ApiResult.Error("SSL handshake failed", code = 0)
73 assertTrue(error.isNetworkError)
74 assertEquals("Network error: SSL handshake failed", error.userMessage)
75 }
77 @Test
78 fun `non-standard HTTP code returns raw message`() {
79 val error = ApiResult.Error("Custom error from proxy", code = 418)
80 assertEquals("Custom error from proxy", error.userMessage)
81 }
83 @Test
84 fun `success result carries data`() {
85 val result: ApiResult<String> = ApiResult.Success("hello")
86 assertTrue(result is ApiResult.Success)
87 assertEquals("hello", (result as ApiResult.Success).data)
88 }