-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: Add Users * Fix tests * Equals & hashCode for ExistingUser
- Loading branch information
Showing
7 changed files
with
384 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* | ||
* Copyright 2024 Vonage | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package com.vonage.client.kt | ||
|
||
import com.vonage.client.users.* | ||
|
||
class Users internal constructor(private val client: UsersClient) { | ||
|
||
fun user(userId: String): ExistingUser = ExistingUser(userId) | ||
|
||
fun user(user: BaseUser): ExistingUser = ExistingUser(user.id) | ||
|
||
inner class ExistingUser internal constructor(val userId: String) { | ||
fun get(): User = client.getUser(userId) | ||
|
||
fun update(properties: User.Builder.() -> Unit): User = | ||
client.updateUser(userId, User.builder().apply(properties).build()) | ||
|
||
fun delete(): Unit = client.deleteUser(userId) | ||
|
||
@Override | ||
override fun equals(other: Any?): Boolean { | ||
if (this === other) return true | ||
if (javaClass != other?.javaClass) return false | ||
other as ExistingUser | ||
return userId == other.userId | ||
} | ||
|
||
@Override | ||
override fun hashCode(): Int { | ||
return userId.hashCode() | ||
} | ||
} | ||
|
||
fun create(properties: User.Builder.() -> Unit): User = | ||
client.createUser(User.builder().apply(properties).build()) | ||
|
||
fun list(filter: (ListUsersRequest.Builder.() -> Unit)? = null): ListUsersResponse { | ||
val request = ListUsersRequest.builder() | ||
if (filter == null) { | ||
request.pageSize(100) | ||
} | ||
else { | ||
request.apply(filter) | ||
} | ||
return client.listUsers(request.build()) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -57,7 +57,12 @@ abstract class AbstractTest { | |
protected val text = "Hello, World!" | ||
protected val country = "GB" | ||
protected val secret = "ABCDEFGH01234abc" | ||
protected val cursor = "7EjDNQrAcipmOnc0HCzpQRkhBULzY44ljGUX4lXKyUIVfiZay5pv9wg=" | ||
protected val vbcExt = "4321" | ||
protected val userName = "Sam_username" | ||
protected val sipUri = "sip:[email protected]" | ||
protected val websocketUri = "wss://example.com/socket" | ||
protected val wsContentType = "audio/l16;rate=8000" | ||
protected val clientRef = "my-personal-reference" | ||
protected val textHexEncoded = "48656c6c6f2c20576f726c6421" | ||
protected val entityId = "1101407360000017170" | ||
|
@@ -84,6 +89,10 @@ abstract class AbstractTest { | |
protected val statusCallbackUrl = "$callbackUrl/status" | ||
protected val moCallbackUrl = "$callbackUrl/inbound-sms" | ||
protected val drCallbackUrl = "$callbackUrl/delivery-receipt" | ||
protected val imageUrl = "$exampleUrlBase/image.jpg" | ||
protected val audioUrl = "$exampleUrlBase/audio.mp3" | ||
protected val videoUrl = "$exampleUrlBase/video.mp4" | ||
protected val fileUrl = "$exampleUrlBase/file.pdf" | ||
|
||
private val port = 8081 | ||
private val wiremock: WireMockServer = WireMockServer( | ||
|
@@ -281,14 +290,15 @@ abstract class AbstractTest { | |
|
||
protected inline fun <reified E: VonageApiResponseException> assertApiResponseException( | ||
url: String, requestMethod: HttpMethod, actualCall: () -> Any, status: Int, | ||
errorType: String? = null, title: String? = null, | ||
errorType: String? = null, title: String? = null, code: String? = null, | ||
detail: String? = null, instance: String? = null): E { | ||
|
||
val responseParams = mutableMapOf<String, Any>() | ||
if (errorType != null) responseParams["type"] = errorType | ||
if (title != null) responseParams["title"] = title | ||
if (detail != null) responseParams["detail"] = detail | ||
if (instance != null) responseParams["instance"] = instance | ||
if (code != null) responseParams["code"] = code | ||
|
||
mockRequest(requestMethod, url).mockReturn(status, responseParams) | ||
val exception = assertThrows<E> { actualCall.invoke() } | ||
|
@@ -298,6 +308,7 @@ abstract class AbstractTest { | |
assertEquals(title, exception.title) | ||
assertEquals(instance, exception.instance) | ||
assertEquals(detail, exception.detail) | ||
assertEquals(code, exception.code) | ||
return exception | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.