deniedResponses return List<DeniedResponse> instead of List<AccessResponse>
This commit is contained in:
@@ -62,8 +62,8 @@ fun AccessResponses.assert() {
|
|||||||
throw AccessDeniedException(this)
|
throw AccessDeniedException(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val AccessResponses.grantedResponses get(): AccessResponses = this.filterIsInstance<GrantedResponse>()
|
val AccessResponses.grantedResponses get(): List<GrantedResponse> = this.filterIsInstance<GrantedResponse>()
|
||||||
val AccessResponses.deniedResponses get(): AccessResponses = this.filterIsInstance<DeniedResponse>()
|
val AccessResponses.deniedResponses get(): List<DeniedResponse> = this.filterIsInstance<DeniedResponse>()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert responses as boolean
|
* Convert responses as boolean
|
||||||
@@ -78,6 +78,9 @@ class AccessDeniedException(val accessResponses: AccessResponses) : Throwable(ac
|
|||||||
*/
|
*/
|
||||||
fun first(): AccessResponse = accessResponses.deniedResponses.first()
|
fun first(): AccessResponse = accessResponses.deniedResponses.first()
|
||||||
|
|
||||||
|
val deniedResponses: List<DeniedResponse>
|
||||||
|
get() = this.accessResponses.deniedResponses
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the error code is present into the responses
|
* Check if the error code is present into the responses
|
||||||
*/
|
*/
|
||||||
@@ -97,12 +100,12 @@ class AccessDeniedException(val accessResponses: AccessResponses) : Throwable(ac
|
|||||||
*/
|
*/
|
||||||
fun getMessages(): List<String> = accessResponses
|
fun getMessages(): List<String> = accessResponses
|
||||||
.deniedResponses
|
.deniedResponses
|
||||||
.map { it.message!! }
|
.map { it.message }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the first message
|
* Get the first message
|
||||||
*/
|
*/
|
||||||
fun getFirstMessage(): String? = accessResponses
|
fun getFirstMessage(): String = accessResponses
|
||||||
.deniedResponses
|
.deniedResponses
|
||||||
.first()
|
.first()
|
||||||
.message
|
.message
|
||||||
@@ -116,8 +119,8 @@ class AccessDeniedException(val accessResponses: AccessResponses) : Throwable(ac
|
|||||||
sealed class AccessResponse(
|
sealed class AccessResponse(
|
||||||
val decision: AccessDecision,
|
val decision: AccessDecision,
|
||||||
val accessControl: AccessKontrol,
|
val accessControl: AccessKontrol,
|
||||||
val message: String?,
|
open val message: String?,
|
||||||
val code: String?
|
open val code: String?
|
||||||
) {
|
) {
|
||||||
/**
|
/**
|
||||||
* Convert response as boolean
|
* Convert response as boolean
|
||||||
@@ -142,8 +145,8 @@ open class GrantedResponse(
|
|||||||
|
|
||||||
open class DeniedResponse(
|
open class DeniedResponse(
|
||||||
accessControl: AccessKontrol,
|
accessControl: AccessKontrol,
|
||||||
message: String,
|
override val message: String,
|
||||||
code: String
|
override val code: String
|
||||||
) : AccessResponse(AccessDecision.DENIED, accessControl, message, code)
|
) : AccessResponse(AccessDecision.DENIED, accessControl, message, code)
|
||||||
|
|
||||||
class GrantedResponses(
|
class GrantedResponses(
|
||||||
@@ -159,7 +162,7 @@ class DeniedResponses(
|
|||||||
accessResponses: List<AccessResponse>
|
accessResponses: List<AccessResponse>
|
||||||
) : AccessResponses by accessResponses,
|
) : AccessResponses by accessResponses,
|
||||||
DeniedResponse(
|
DeniedResponse(
|
||||||
accessResponses.deniedResponses.first().accessControl,
|
accessResponses.deniedResponses.firstOrNull()?.accessControl ?: error("DeniedResponses cannot be empty"),
|
||||||
accessResponses.deniedResponses.firstOrNull()?.message ?: error("DeniedResponses cannot be empty"),
|
accessResponses.deniedResponses.first().message,
|
||||||
accessResponses.deniedResponses.firstOrNull()?.code ?: error("DeniedResponses cannot be empty")
|
accessResponses.deniedResponses.first().code
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ class AccessKontrolTest {
|
|||||||
assertEquals(null, getErrorCode("notExists")?.code)
|
assertEquals(null, getErrorCode("notExists")?.code)
|
||||||
assertEquals("KO2", getMessages().last())
|
assertEquals("KO2", getMessages().last())
|
||||||
assertEquals("KO", getFirstMessage())
|
assertEquals("KO", getFirstMessage())
|
||||||
|
assertEquals("ko", deniedResponses.firstOrNull()?.code)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,6 +127,13 @@ class AccessKontrolTest {
|
|||||||
.run {
|
.run {
|
||||||
assertFalse(decision.toBoolean())
|
assertFalse(decision.toBoolean())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AccessControlSample()
|
||||||
|
.canView(listOf(MyObject("denied"), MyObject("granted")), User(""))
|
||||||
|
.getFirstDecisionResponse()
|
||||||
|
.run {
|
||||||
|
assertFalse(decision.toBoolean())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user