Merge pull request #1193 from constantine2nd/develop

Google's OAuth2
This commit is contained in:
Simon Redfern 2019-01-16 14:55:01 +01:00 committed by GitHub
commit fe5ad82d86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 483 additions and 409 deletions

View File

@ -444,7 +444,7 @@ class Boot extends MdcLoggable {
case(Props.RunModes.Development, r, e) => {
logger.error("Exception being returned to browser when processing " + r.uri.toString, e)
JsonResponse(
Extraction.decompose(ErrorMessage(s"${ErrorMessages.InternalServerError} ${showExceptionAtJson(e)}")),
Extraction.decompose(ErrorMessage(code = 500, message = s"${ErrorMessages.InternalServerError} ${showExceptionAtJson(e)}")),
500
)
}
@ -452,7 +452,7 @@ class Boot extends MdcLoggable {
sendExceptionEmail(e)
logger.error("Exception being returned to browser when processing " + r.uri.toString, e)
JsonResponse(
Extraction.decompose(ErrorMessage(s"${ErrorMessages.InternalServerError}")),
Extraction.decompose(ErrorMessage(code = 500, message = s"${ErrorMessages.InternalServerError}")),
500
)
}

View File

@ -1,37 +1,37 @@
/**
Open Bank Project - API
Copyright (C) 2011-2018, TESOBE Ltd
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Email: contact@tesobe.com
TESOBE Ltd
Osloerstrasse 16/17
Berlin 13359, Germany
This product includes software developed at
TESOBE (http://www.tesobe.com/)
by
Simon Redfern : simon AT tesobe DOT com
Stefan Bethge : stefan AT tesobe DOT com
Everett Sochowski : everett AT tesobe DOT com
Ayoub Benali: ayoub AT tesobe DOT com
*/
* Open Bank Project - API
* Copyright (C) 2011-2018, TESOBE Ltd
* *
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
* *
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
* Email: contact@tesobe.com
* TESOBE Ltd
* Osloerstrasse 16/17
* Berlin 13359, Germany
* *
* This product includes software developed at
* TESOBE (http://www.tesobe.com/)
* by
* Simon Redfern : simon AT tesobe DOT com
* Stefan Bethge : stefan AT tesobe DOT com
* Everett Sochowski : everett AT tesobe DOT com
* Ayoub Benali: ayoub AT tesobe DOT com
*
*/
package code.api
case class ErrorMessage(
error : String
)
case class ErrorMessage(code: Int,
message: String
)

View File

@ -304,7 +304,7 @@ object GatewayLogin extends RestHelper with MdcLoggable {
}
case Full((s, accounts, callContextNew)) if getErrors(s).forall(_.equalsIgnoreCase("")) => // CBS returned response without any error
logger.debug("CBS returned proper response")
Users.users.vend.getOrCreateUserByProviderIdFuture(provider = gateway, idGivenByProvider = username) map {
Users.users.vend.getOrCreateUserByProviderIdFuture(provider = gateway, idGivenByProvider = username, name = None, email = None) map {
case Full(u) =>
val isFirst = getFieldFromPayloadJson(jwtPayload, "is_first")
// Update user account views, only when is_first == true in the GatewayLogin token's payload .

View File

@ -30,6 +30,8 @@ import code.api.util.{APIUtil, CallContext, ErrorMessages, JwtUtil}
import code.model.User
import code.users.Users
import code.util.Helper.MdcLoggable
import com.nimbusds.jwt.JWTClaimsSet
import com.nimbusds.openid.connect.sdk.claims.IDTokenClaimsSet
import net.liftweb.common._
import net.liftweb.http.rest.RestHelper
@ -51,28 +53,6 @@ object OAuth2Handshake extends RestHelper with MdcLoggable {
valueOfAuthReqHeaderField
}
private def verifyJwt(jwt: String) = {
APIUtil.getPropsAsBoolValue("oauth2.jwt.use.ssl", false) match {
case true =>
JwtUtil.verifyRsaSignedJwt(jwt)
case false =>
JwtUtil.verifyHmacSignedJwt(jwt)
}
}
private def validateAccessToken(accessToken: String) = {
APIUtil.getPropsValue("oauth2.jwk_set.url") match {
case Full(url) =>
JwtUtil.validateAccessToken(accessToken, url)
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
ParamFailure(a, b, c, apiFailure : APIFailure)
case Failure(msg, t, c) =>
Failure(msg, t, c)
case _ =>
Failure(ErrorMessages.Oauth2ThereIsNoUrlOfJwkSet)
}
}
/*
Method for Old Style Endpoints
*/
@ -80,17 +60,32 @@ object OAuth2Handshake extends RestHelper with MdcLoggable {
APIUtil.getPropsAsBoolValue("allow_oauth2_login", true) match {
case true =>
val value = getValueOfOAuh2HeaderField(sc)
validateAccessToken(value) match {
case Full(_) =>
val username = JwtUtil.getSubject(value).getOrElse("")
(Users.users.vend.getUserByUserName(username), Some(sc))
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
(ParamFailure(a, b, c, apiFailure : APIFailure), Some(sc))
case Failure(msg, t, c) =>
(Failure(msg, t, c), Some(sc))
case _ =>
(Failure(ErrorMessages.Oauth2IJwtCannotBeVerified), Some(sc))
if (Google.isIssuer(value)) {
Google.validateIdToken(value) match {
case Full(_) =>
val user = Google.getOrCreateResourceUser(value)
(user, Some(sc))
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
(ParamFailure(a, b, c, apiFailure : APIFailure), Some(sc))
case Failure(msg, t, c) =>
(Failure(msg, t, c), Some(sc))
case _ =>
(Failure(ErrorMessages.Oauth2IJwtCannotBeVerified), Some(sc))
}
} else {
MITREId.validateAccessToken(value) match {
case Full(_) =>
val username = JwtUtil.getSubject(value).getOrElse("")
(Users.users.vend.getUserByUserName(username), Some(sc))
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
(ParamFailure(a, b, c, apiFailure : APIFailure), Some(sc))
case Failure(msg, t, c) =>
(Failure(msg, t, c), Some(sc))
case _ =>
(Failure(ErrorMessages.Oauth2IJwtCannotBeVerified), Some(sc))
}
}
case false =>
(Failure(ErrorMessages.Oauth2IsNotAllowed), Some(sc))
}
@ -102,40 +97,123 @@ object OAuth2Handshake extends RestHelper with MdcLoggable {
APIUtil.getPropsAsBoolValue("allow_oauth2_login", true) match {
case true =>
val value = getValueOfOAuh2HeaderField(sc)
validateAccessToken(value) match {
case Full(_) =>
val username = JwtUtil.getSubject(value).getOrElse("")
for {
user <- Users.users.vend.getUserByUserNameFuture(username)
} yield {
(user, Some(sc))
}
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
Future((ParamFailure(a, b, c, apiFailure : APIFailure), Some(sc)))
case Failure(msg, t, c) =>
Future((Failure(msg, t, c), Some(sc)))
case _ =>
Future((Failure(ErrorMessages.Oauth2IJwtCannotBeVerified), Some(sc)))
if (Google.isIssuer(value)) {
Google.validateIdToken(value) match {
case Full(_) =>
for {
user <- Google.getOrCreateResourceUserFuture(value)
} yield {
(user, Some(sc))
}
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
Future((ParamFailure(a, b, c, apiFailure : APIFailure), Some(sc)))
case Failure(msg, t, c) =>
Future((Failure(msg, t, c), Some(sc)))
case _ =>
Future((Failure(ErrorMessages.Oauth2IJwtCannotBeVerified), Some(sc)))
}
} else {
MITREId.validateAccessToken(value) match {
case Full(_) =>
val username = JwtUtil.getSubject(value).getOrElse("")
for {
user <- Users.users.vend.getUserByUserNameFuture(username)
} yield {
(user, Some(sc))
}
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
Future((ParamFailure(a, b, c, apiFailure : APIFailure), Some(sc)))
case Failure(msg, t, c) =>
Future((Failure(msg, t, c), Some(sc)))
case _ =>
Future((Failure(ErrorMessages.Oauth2IJwtCannotBeVerified), Some(sc)))
}
}
case false =>
Future((Failure(ErrorMessages.Oauth2IsNotAllowed), Some(sc)))
}
}
/**
* This function creates user based on "iss" and "sub" fields
* It is mapped in next way:
* iss => ResourceUser.provider_
* sub => ResourceUser.providerId
* @param cc CallContext
* @return Existing or New User
*/
def getOrCreateResourceUserFuture(cc: CallContext): Future[Box[User]] = {
val value = getValueOfOAuh2HeaderField(cc)
val sub = JwtUtil.getSubject(value).getOrElse("")
val iss = JwtUtil.getIssuer(value).getOrElse("")
Users.users.vend.getOrCreateUserByProviderIdFuture(provider = iss, idGivenByProvider = sub)
object MITREId {
def validateAccessToken(accessToken: String): Box[JWTClaimsSet] = {
APIUtil.getPropsValue("oauth2.jwk_set.url") match {
case Full(url) =>
JwtUtil.validateAccessToken(accessToken, url)
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
ParamFailure(a, b, c, apiFailure : APIFailure)
case Failure(msg, t, c) =>
Failure(msg, t, c)
case _ =>
Failure(ErrorMessages.Oauth2ThereIsNoUrlOfJwkSet)
}
}
}
object Google {
private def getClaim(name: String, idToken: String): Option[String] = {
val claim = JwtUtil.getClaim(name = name, jwtToken = idToken).asString()
claim match {
case null => None
case string => Some(string)
}
}
def isIssuer(jwtToken: String): Boolean = {
JwtUtil.getIssuer(jwtToken).map(_.contains("accounts.google.com")).getOrElse(false)
}
def validateIdToken(idToken: String): Box[IDTokenClaimsSet] = {
APIUtil.getPropsValue("oauth2.jwk_set.url") match {
case Full(url) =>
JwtUtil.validateIdToken(idToken, url)
case ParamFailure(a, b, c, apiFailure : APIFailure) =>
ParamFailure(a, b, c, apiFailure : APIFailure)
case Failure(msg, t, c) =>
Failure(msg, t, c)
case _ =>
Failure(ErrorMessages.Oauth2ThereIsNoUrlOfJwkSet)
}
}
/** New Style Endpoints
* This function creates user based on "iss" and "sub" fields
* It is mapped in next way:
* iss => ResourceUser.provider_
* sub => ResourceUser.providerId
* @param idToken
* @return an existing or a new user
*/
def getOrCreateResourceUserFuture(idToken: String): Future[Box[User]] = {
val subject = JwtUtil.getSubject(idToken).getOrElse("")
val issuer = JwtUtil.getIssuer(idToken).getOrElse("")
Users.users.vend.getOrCreateUserByProviderIdFuture(
provider = issuer,
idGivenByProvider = subject,
name = getClaim(name = "name", idToken = idToken).orElse(Some(subject)),
email = getClaim(name = "email", idToken = idToken)
)
}
/** Old Style Endpoints
* This function creates user based on "iss" and "sub" fields
* It is mapped in next way:
* iss => ResourceUser.provider_
* sub => ResourceUser.providerId
* @param idToken
* @return an existing or a new user
*/
def getOrCreateResourceUser(idToken: String): Box[User] = {
val subject = JwtUtil.getSubject(idToken).getOrElse("")
val issuer = JwtUtil.getIssuer(idToken).getOrElse("")
Users.users.vend.getUserByProviderId(provider = issuer, idGivenByProvider = subject).or { // Find a user
Users.users.vend.createResourceUser( // Otherwise create a new one
provider = issuer,
providerId = Some(subject),
name = getClaim(name = "name", idToken = idToken).orElse(Some(subject)),
email = getClaim(name = "email", idToken = idToken),
userId = None
)
}
}
}
}

View File

@ -458,7 +458,8 @@ object SwaggerDefinitionsJSON {
)*/
val errorMessage = ErrorMessage(
error = "String"
code = 500,
message = "Internal Server Error"
)
val postTransactionImageJSON = PostTransactionImageJSON(

View File

@ -428,15 +428,15 @@ object APIUtil extends MdcLoggable {
case _ =>
httpCode
}
JsonResponse(Extraction.decompose(ErrorMessage(message)), getHeaders() ::: headers.list, Nil, code)
JsonResponse(Extraction.decompose(ErrorMessage(message = message, code = code)), getHeaders() ::: headers.list, Nil, code)
}
def notImplementedJsonResponse(message : String = ErrorMessages.NotImplemented, httpCode : Int = 501)(implicit headers: CustomResponseHeaders = CustomResponseHeaders(Nil)) : JsonResponse =
JsonResponse(Extraction.decompose(ErrorMessage(message)), getHeaders() ::: headers.list, Nil, httpCode)
JsonResponse(Extraction.decompose(ErrorMessage(message = message, code = httpCode)), getHeaders() ::: headers.list, Nil, httpCode)
def oauthHeaderRequiredJsonResponse(implicit headers: CustomResponseHeaders = CustomResponseHeaders(Nil)) : JsonResponse =
JsonResponse(Extraction.decompose(ErrorMessage("Authentication via OAuth is required")), getHeaders() ::: headers.list, Nil, 400)
JsonResponse(Extraction.decompose(ErrorMessage(message = "Authentication via OAuth is required", code = 400)), getHeaders() ::: headers.list, Nil, 400)
/** check the currency ISO code from the ISOCurrencyCodes.xml file */
def isValidCurrencyISOCode(currencyCode: String): Boolean = {

View File

@ -45,9 +45,10 @@ case class HostedBy(
email : String,
phone : String
)
case class ErrorMessage(
error : String
)
case class ErrorMessage(code: Int,
message: String
)
case class SuccessMessage(
success : String
)

View File

@ -51,8 +51,8 @@ case class HostedBy(
)
case class RateLimiting(enabled: Boolean, technology: String, service_available: Boolean, is_active: Boolean)
case class ErrorMessage(
error : String
case class ErrorMessage(code: Int,
message : String
)
case class SuccessMessage(
success : String

View File

@ -35,8 +35,8 @@ object RemotedataUsers extends ObpActorInit with Users {
def getUserByProviderIdFuture(provider : String, idGivenByProvider : String) : Future[Box[User]] =
(actor ? cc.getUserByProviderIdFuture(provider, idGivenByProvider)).mapTo[Box[User]]
def getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String) : Future[Box[User]] =
(actor ? cc.getOrCreateUserByProviderIdFuture(provider, idGivenByProvider)).mapTo[Box[User]]
def getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String, name: Option[String], email: Option[String]) : Future[Box[User]] =
(actor ? cc.getOrCreateUserByProviderIdFuture(provider, idGivenByProvider, name, email)).mapTo[Box[User]]
def getUserByUserId(userId : String) : Box[User] = getValueFromFuture(
(actor ? cc.getUserByUserId(userId)).mapTo[Box[User]]

View File

@ -36,9 +36,9 @@ class RemotedataUsersActor extends Actor with ObpActorHelper with MdcLoggable {
logger.debug("getUserByProviderIdFuture(" + provider +"," + idGivenByProvider +")")
sender ! (mapper.getUserByProviderId(provider, idGivenByProvider))
case cc.getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String) =>
logger.debug("getOrCreateUserByProviderIdFuture(" + provider +"," + idGivenByProvider +")")
sender ! (mapper.getOrCreateUserByProviderId(provider, idGivenByProvider))
case cc.getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String, name: Option[String], email: Option[String]) =>
logger.debug("getOrCreateUserByProviderIdFuture(" + provider +"," + idGivenByProvider + name + email +")")
sender ! (mapper.getOrCreateUserByProviderId(provider, idGivenByProvider, name, email))
case cc.getUserByUserId(userId: String) =>
logger.debug("getUserByUserId(" + userId +")")

View File

@ -42,20 +42,20 @@ object LiftUsers extends Users with MdcLoggable{
}
}
def getOrCreateUserByProviderId(provider : String, idGivenByProvider : String) : Box[User] = {
def getOrCreateUserByProviderId(provider : String, idGivenByProvider : String, name: Option[String], email: Option[String]) : Box[User] = {
Users.users.vend.getUserByProviderId(provider = provider, idGivenByProvider = idGivenByProvider).or { // Find a user
Users.users.vend.createResourceUser( // Otherwise create a new one
provider = provider,
providerId = Some(idGivenByProvider),
name = Some(idGivenByProvider),
email = None,
name = name,
email = email,
userId = None
)
}
}
def getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String) : Future[Box[User]] = {
def getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String, name: Option[String], email: Option[String]) : Future[Box[User]] = {
Future {
getOrCreateUserByProviderId(provider, idGivenByProvider)
getOrCreateUserByProviderId(provider, idGivenByProvider, name, email)
}
}

View File

@ -33,7 +33,7 @@ trait Users {
def getUserByProviderId(provider : String, idGivenByProvider : String) : Box[User]
def getUserByProviderIdFuture(provider : String, idGivenByProvider : String) : Future[Box[User]]
def getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String) : Future[Box[User]]
def getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String, name: Option[String], email: Option[String]) : Future[Box[User]]
//resourceuser has two ids: id(Long)and userid_(String), this method use userid_(String)
def getUserByUserId(userId : String) : Box[User]
@ -68,7 +68,7 @@ class RemotedataUsersCaseClasses {
case class getResourceUserByResourceUserIdFuture(id : Long)
case class getUserByProviderId(provider : String, idGivenByProvider : String)
case class getUserByProviderIdFuture(provider : String, idGivenByProvider : String)
case class getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String)
case class getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String, name: Option[String], email: Option[String])
case class getUserByUserId(userId : String)
case class getUserByUserIdFuture(userId : String)
case class getUsersByUserIdsFuture(userId : List[String])

View File

@ -10,6 +10,7 @@ import net.liftweb.mapper.By
import net.liftweb.util.Helpers._
import org.scalatest.BeforeAndAfter
import code.api.util.ErrorMessages._
import code.api.v1_2_1.ErrorMessage
@ -246,11 +247,7 @@ class directloginTest extends ServerSetup with BeforeAndAfter {
}
private def assertResponse(response: APIResponse, expectedErrorMessage: String): Unit = {
response.body match {
case JObject(List(JField(name, JString(value)))) =>
name should equal("error")
value should startWith(expectedErrorMessage)
case _ => fail("Expected an error message")
}
response.body.extract[ErrorMessage].message should startWith(expectedErrorMessage)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -96,7 +96,7 @@ class CustomerTest extends V200ServerSetup with DefaultUsers {
Then("We should get a 400")
secondResponsePost.code should equal(400)
And("We should get a message: " + ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost.body.extract[ErrorMessage].error should equal (ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost.body.extract[ErrorMessage].message should equal (ErrorMessages.CustomerNumberAlreadyExists)
And("User is linked to 1 customer")
UserCustomerLink.userCustomerLink.vend.getUserCustomerLinksByUserId(customerPostJSON1.user_id).size should equal(1)
@ -126,7 +126,7 @@ class CustomerTest extends V200ServerSetup with DefaultUsers {
Then("We should get a 400")
secondResponsePost3.code should equal(400)
And("We should get a message: " + ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost3.body.extract[ErrorMessage].error should equal (ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost3.body.extract[ErrorMessage].message should equal (ErrorMessages.CustomerNumberAlreadyExists)
And("User is linked to 3 customers")
UserCustomerLink.userCustomerLink.vend.getUserCustomerLinksByUserId(customerPostJSON3.user_id).size should equal(3)
}

View File

@ -120,7 +120,7 @@ class AccountTest extends V200ServerSetup with DefaultUsers {
And("We should get a 400")
responsePut.code should equal(400)
And("We should have the error massage")
val error: String = (responsePut.body \ "error") match {
val error: String = (responsePut.body \ "message") match {
case JString(i) => i
case _ => ""
}

View File

@ -68,7 +68,7 @@ class CustomerTest extends V200ServerSetup with DefaultUsers {
Then("We should get a 400")
secondResponsePost.code should equal(400)
And("We should get a message: " + ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost.body.extract[ErrorMessage].error should equal (ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost.body.extract[ErrorMessage].message should equal (ErrorMessages.CustomerNumberAlreadyExists)
And("User is linked to 1 customer")
UserCustomerLink.userCustomerLink.vend.getUserCustomerLinksByUserId(customerPostJSON.user_id).size should equal(1)
@ -98,7 +98,7 @@ class CustomerTest extends V200ServerSetup with DefaultUsers {
Then("We should get a 400")
secondResponsePost4.code should equal(400)
And("We should get a message: " + ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost4.body.extract[ErrorMessage].error should equal (ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost4.body.extract[ErrorMessage].message should equal (ErrorMessages.CustomerNumberAlreadyExists)
And("User is linked to 3 customers")
UserCustomerLink.userCustomerLink.vend.getUserCustomerLinksByUserId(customerPostJSON.user_id).size should equal(3)

View File

@ -30,7 +30,7 @@ class EntitlementTests extends V200ServerSetup with DefaultUsers {
Then("We should get a 400")
responseGet.code should equal(400)
And("We should get a message: " + ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].error should equal (ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].message should equal (ErrorMessages.UserNotLoggedIn)
}
@ -41,7 +41,7 @@ class EntitlementTests extends V200ServerSetup with DefaultUsers {
Then("We should get a 40")
responseGet.code should equal(403)
And("We should get a message: " + s"$CanGetEntitlementsForAnyUserAtAnyBank entitlement required")
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetEntitlementsForAnyUserAtAnyBank)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetEntitlementsForAnyUserAtAnyBank)
}
scenario("We try to get entitlements with credentials - getEntitlements") {
@ -63,7 +63,7 @@ class EntitlementTests extends V200ServerSetup with DefaultUsers {
Then("We should get a 400")
responseDelete.code should equal(400)
And("We should get a message: " + ErrorMessages.UserNotSuperAdmin)
responseDelete.body.extract[ErrorMessage].error should equal (ErrorMessages.UserNotSuperAdmin)
responseDelete.body.extract[ErrorMessage].message should equal (ErrorMessages.UserNotSuperAdmin)
}
}

View File

@ -356,7 +356,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
response.code should equal(400)
//created a transaction request, check some return values. As type is SANDBOX_TAN and value is < 1000, we expect no challenge
val error: String = (response.body \ "error") match {
val error: String = (response.body \ "message") match {
case JString(i) => i
case _ => ""
}
@ -416,7 +416,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
response.code should equal(400)
//created a transaction request, check some return values. As type is SANDBOX_TAN and value is < 1000, we expect no challenge
val error: String = (response.body \ "error") match {
val error: String = (response.body \ "message") match {
case JString(i) => i
case _ => ""
}

View File

@ -42,7 +42,7 @@ class CreateTransactionTypeTest extends V210ServerSetup with DefaultUsers {
Then("We should get a 400")
responsePut.code should equal(400)
And("We should get a message: " + ErrorMessages.InsufficientAuthorisationToCreateTransactionType)
responsePut.body.extract[ErrorMessage].error should equal (ErrorMessages.InsufficientAuthorisationToCreateTransactionType)
responsePut.body.extract[ErrorMessage].message should equal (ErrorMessages.InsufficientAuthorisationToCreateTransactionType)
}
scenario("We try to get all roles with Authentication - Create Transaction Type...") {
@ -113,7 +113,7 @@ class CreateTransactionTypeTest extends V210ServerSetup with DefaultUsers {
And("We should get a 400")
responsePut2.code should equal(400)
And("We should get a message: " + ErrorMessages.CreateTransactionTypeInsertError)
responsePut2.body.extract[ErrorMessage].error should equal (ErrorMessages.CreateTransactionTypeInsertError)
responsePut2.body.extract[ErrorMessage].message should equal (ErrorMessages.CreateTransactionTypeInsertError)
Then("insert new data and We make the request")
@ -131,7 +131,7 @@ class CreateTransactionTypeTest extends V210ServerSetup with DefaultUsers {
And("We should get a 400")
responsePut3.code should equal(400)
And("We should get a message: " + ErrorMessages.CreateTransactionTypeUpdateError)
responsePut3.body.extract[ErrorMessage].error should equal (ErrorMessages.CreateTransactionTypeUpdateError)
responsePut3.body.extract[ErrorMessage].message should equal (ErrorMessages.CreateTransactionTypeUpdateError)
}
}
/**

View File

@ -82,7 +82,7 @@ class CustomerTest extends V210ServerSetup with DefaultUsers {
Then("We should get a 400")
secondResponsePost.code should equal(400)
And("We should get a message: " + ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost.body.extract[ErrorMessage].error should equal (ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost.body.extract[ErrorMessage].message should equal (ErrorMessages.CustomerNumberAlreadyExists)
And("User is linked to 1 customer")
UserCustomerLink.userCustomerLink.vend.getUserCustomerLinksByUserId(customerPostJSON.user_id).size should equal(1)
@ -112,7 +112,7 @@ class CustomerTest extends V210ServerSetup with DefaultUsers {
Then("We should get a 400")
secondResponsePost4.code should equal(400)
And("We should get a message: " + ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost4.body.extract[ErrorMessage].error should equal (ErrorMessages.CustomerNumberAlreadyExists)
secondResponsePost4.body.extract[ErrorMessage].message should equal (ErrorMessages.CustomerNumberAlreadyExists)
And("User is linked to 3 customers")
UserCustomerLink.userCustomerLink.vend.getUserCustomerLinksByUserId(customerPostJSON.user_id).size should equal(3)
}

View File

@ -24,7 +24,7 @@ class EntitlementTests extends V210ServerSetup with DefaultUsers {
Then("We should get a 400")
responseGet.code should equal(400)
And("We should get a message: " + ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].error should equal (ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].message should equal (ErrorMessages.UserNotLoggedIn)
}
@ -46,7 +46,7 @@ class EntitlementTests extends V210ServerSetup with DefaultUsers {
Then("We should get a 400")
responseGet.code should equal(400)
And("We should get a message: " + ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].error should equal (ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].message should equal (ErrorMessages.UserNotLoggedIn)
}
@ -61,7 +61,7 @@ class EntitlementTests extends V210ServerSetup with DefaultUsers {
Nil
val requiredEntitlementsTxt = requiredEntitlements.mkString(" or ")
And("We should get a message: " + s"$requiredEntitlementsTxt entitlements required")
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + requiredEntitlementsTxt)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + requiredEntitlementsTxt)
}
scenario("We try to get entitlements with credentials - getEntitlementsByBankAndUser") {

View File

@ -2,7 +2,7 @@ package code.api.v2_1_0
import java.util.UUID
import code.api.ChargePolicy
import code.api.{ChargePolicy, ErrorMessage}
import code.api.util.APIUtil.OAuth._
import code.api.util.ApiRole.CanCreateAnyTransactionRequest
import code.api.util.ErrorMessages._
@ -302,8 +302,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
response.code should equal(400)
Then("We should have the error message")
val error = for {JObject(o) <- response.body; JField("error", JString(error)) <- o} yield error
error should contain(ErrorMessages.UserNotLoggedIn)
response.body.extract[ErrorMessage].message should startWith(ErrorMessages.UserNotLoggedIn)
}
}
@ -324,7 +323,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
response.code should equal(400)
Then("We should have the error: " + ErrorMessages.InsufficientAuthorisationToCreateTransactionRequest)
val error: String = (response.body \ "error").values.toString
val error: String = (response.body \ "message").values.toString
error should equal(ErrorMessages.InsufficientAuthorisationToCreateTransactionRequest)
}
}
@ -368,10 +367,9 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
Then("we should get a 400 created code")
response.code should equal(400)
Then("We should have the error message")
val error: List[String] = for {JObject(o) <- response.body; JField("error", JString(error)) <- o} yield error
error(0) should include(ErrorMessages.InvalidTransactionRequestType)
response.body.extract[ErrorMessage].message should startWith(ErrorMessages.InvalidTransactionRequestType)
}
}

View File

@ -32,7 +32,7 @@ class UpdateConsumerRedirectUrlTest extends V210ServerSetup with DefaultUsers {
println(responsePut.body)
responsePut.code should equal(403)
val error = (responsePut.body \ "error" ) match {
val error = (responsePut.body \ "message" ) match {
case JString(i) => i
case _ => ""
}
@ -54,7 +54,7 @@ class UpdateConsumerRedirectUrlTest extends V210ServerSetup with DefaultUsers {
Then("We should get a 400")
responsePut.code should equal(400)
val error = (responsePut.body \ "error" ) match {
val error = (responsePut.body \ "message" ) match {
case JString(i) => i
case _ => ""
}

View File

@ -25,7 +25,7 @@ class UserTests extends V210ServerSetup with User1AllPrivileges {
Then("We should get a 400")
responseGet.code should equal(400)
And("We should get a message: " + ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].error should equal (ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].message should equal (ErrorMessages.UserNotLoggedIn)
}
@ -37,7 +37,7 @@ class UserTests extends V210ServerSetup with User1AllPrivileges {
Then("We should get a 200")
responseGet.code should equal(403)
And("We should get a message: " + ErrorMessages.UserHasMissingRoles)
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetAnyUser)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetAnyUser)
}

View File

@ -193,7 +193,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("We will not get the list of the available views on a bank account due to insufficient privileges", API2_2, GetViews) {
@ -205,7 +205,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
}
feature("Create a view on a bank account - v2.2.0"){
@ -235,7 +235,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("We will not create a view on a bank account due to insufficient privileges", API2_2, PostView) {
@ -248,7 +248,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("We will not create a view because the bank account does not exist", API2_2, PostView) {
@ -260,7 +260,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("We will not create a view because the view already exists", API2_2, PostView) {
@ -274,7 +274,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("can not create the System View") {
@ -286,7 +286,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
}
@ -379,7 +379,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
reply.code should equal(400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("we will not update a view on a bank account due to insufficient privileges", API2_2, PutView) {
@ -397,7 +397,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
reply.code should equal(400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("we can not update a System view on a bank account") {
@ -417,7 +417,7 @@ class API2_2_0Test extends User1AllPrivileges with V220ServerSetup with DefaultU
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
}

View File

@ -1,5 +1,6 @@
package code.api.v2_2_0
import code.api.ErrorMessage
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
import code.api.util.APIUtil.OAuth._
import code.api.util.ErrorMessages
@ -97,8 +98,7 @@ class CreateCounterpartyTest extends V220ServerSetup with DefaultUsers {
Then("We should get a 400")
responsePost.code should equal(400)
val error = for { JObject(o) <- responsePost.body; JField("error", JString(error)) <- o } yield error
error.toString contains (ErrorMessages.AccountNotFound) should be (true)
responsePost.body.extract[ErrorMessage].message should startWith(ErrorMessages.AccountNotFound)
}
scenario("counterparty is not unique for name/bank_id/account_id/view_id") {
@ -120,9 +120,8 @@ class CreateCounterpartyTest extends V220ServerSetup with DefaultUsers {
Then("We should get a 400 and check the error massage")
responsePost.code should equal(400)
val error = for { JObject(o) <- responsePost.body; JField("error", JString(error)) <- o } yield error
error.toString contains (ErrorMessages.CounterpartyAlreadyExists) should be (true)
responsePost.body.extract[ErrorMessage].message should startWith(ErrorMessages.CounterpartyAlreadyExists)
}
}

View File

@ -39,7 +39,7 @@ class AccountTest extends V300ServerSetup {
And("We should get a 403")
responseGet.code should equal(403)
compactRender(responseGet.body \ "error").replaceAll("\"", "") should equal(FirehoseViewsNotAllowedOnThisInstance +" or " + UserHasMissingRoles + CanUseFirehoseAtAnyBank )
compactRender(responseGet.body \ "message").replaceAll("\"", "") should equal(FirehoseViewsNotAllowedOnThisInstance +" or " + UserHasMissingRoles + CanUseFirehoseAtAnyBank )
}}

View File

@ -260,7 +260,7 @@ class BranchesTest extends V300ServerSetup with DefaultUsers {
Then("We should get a 400 and correct response jons format")
response300.code should equal(400)
response300.body.extract[BranchesJsonV300]
json.compactRender(response300.body \ "error").replaceAll("\"", "") should include (ErrorMessages.BranchesNotFound)
json.compactRender(response300.body \ "message").replaceAll("\"", "") should include (ErrorMessages.BranchesNotFound)
}
}

View File

@ -75,7 +75,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterSortDirectionError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterSortDirectionError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterSortDirectionError)
}
scenario("we get all the transactions sorted by ASC", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -157,7 +157,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterLimitError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterLimitError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterLimitError)
}
scenario("we don't get transactions due to wrong value (0) for limit parameter", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -170,7 +170,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterLimitError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterLimitError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterLimitError)
}
scenario("we don't get transactions due to wrong value (-100) for limit parameter", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -183,7 +183,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterLimitError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterLimitError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterLimitError)
}
scenario("we get only 5 transactions due to the limit parameter value", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -210,7 +210,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterDateFormatError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterDateFormatError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterDateFormatError)
}
scenario("we get transactions from a previous date with the right format", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -283,7 +283,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterDateFormatError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterDateFormatError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterDateFormatError)
}
scenario("we get transactions from a previous (to_date) date with the right format", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -348,7 +348,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterOffersetError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterOffersetError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterOffersetError)
}
scenario("we don't get transactions due to the (2000) for offset parameter", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -375,7 +375,7 @@ class TransactionsTest extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("error should be " + ErrorMessages.FilterOffersetError)
reply.body.extract[ErrorMessage].error contains (ErrorMessages.FilterOffersetError)
reply.body.extract[ErrorMessage].message contains (ErrorMessages.FilterOffersetError)
}
scenario("we get only 5 transactions due to the offset parameter value", API300, GetTransactions, GetTransactionsWithParams) {
Given("We will use an access token")
@ -403,7 +403,7 @@ class TransactionsTest extends V300ServerSetup {
And("We should get a 403")
responseGet.code should equal(403)
compactRender(responseGet.body \ "error").replaceAll("\"", "") should equal(FirehoseViewsNotAllowedOnThisInstance +" or " + UserHasMissingRoles + CanUseFirehoseAtAnyBank )
compactRender(responseGet.body \ "message").replaceAll("\"", "") should equal(FirehoseViewsNotAllowedOnThisInstance +" or " + UserHasMissingRoles + CanUseFirehoseAtAnyBank )
}}

View File

@ -26,7 +26,7 @@ class UserTest extends V300ServerSetup with DefaultUsers {
Then("We should get a 400")
responseGet.code should equal(400)
And("We should get a message: " + ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].error should equal (ErrorMessages.UserNotLoggedIn)
responseGet.body.extract[ErrorMessage].message should equal (ErrorMessages.UserNotLoggedIn)
}
@ -38,7 +38,7 @@ class UserTest extends V300ServerSetup with DefaultUsers {
Then("We should get a 200")
responseGet.code should equal(403)
And("We should get a message: " + UserHasMissingRoles + CanGetAnyUser)
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetAnyUser)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetAnyUser)
}
@ -69,7 +69,7 @@ class UserTest extends V300ServerSetup with DefaultUsers {
And("We should get a 403")
responseGet.code should equal(403)
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetAnyUser)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetAnyUser)
}
scenario("We try to get all user data without required role " + CanGetAnyUser){
@ -80,7 +80,7 @@ class UserTest extends V300ServerSetup with DefaultUsers {
And("We should get a 403")
responseGet.code should equal(403)
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetAnyUser)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetAnyUser)
}
scenario("We try to get user data by USER_ID without required role " + CanGetAnyUser){
@ -91,7 +91,7 @@ class UserTest extends V300ServerSetup with DefaultUsers {
And("We should get a 403")
responseGet.code should equal(403)
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetAnyUser)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetAnyUser)
}
scenario("We try to get user data by USERNAME without required role " + CanGetAnyUser){
@ -102,7 +102,7 @@ class UserTest extends V300ServerSetup with DefaultUsers {
And("We should get a 403")
responseGet.code should equal(403)
responseGet.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetAnyUser)
responseGet.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetAnyUser)
}
scenario("We create an user and get it by EMAIL and USER_ID") {

View File

@ -117,7 +117,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("No Views") {
@ -130,7 +130,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
}
@ -162,7 +162,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("no views") {
@ -174,7 +174,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("no existing account") {
@ -185,7 +185,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("view already exists") {
@ -198,7 +198,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("can not create the System View") {
@ -210,7 +210,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
}
@ -303,7 +303,7 @@ class ViewsTests extends V300ServerSetup {
reply.code should equal(400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("we will not update a view on a bank account due to insufficient privileges") {
@ -320,7 +320,7 @@ class ViewsTests extends V300ServerSetup {
reply.code should equal(400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
scenario("we can not update a System view on a bank account") {
@ -341,7 +341,7 @@ class ViewsTests extends V300ServerSetup {
Then("we should get a 400 code")
reply.code should equal (400)
And("we should get an error message")
reply.body.extract[ErrorMessage].error.nonEmpty should equal (true)
reply.body.extract[ErrorMessage].message.nonEmpty should equal (true)
}
}

View File

@ -34,7 +34,7 @@ class WarehouseTest extends V300ServerSetup with DefaultUsers {
And("We should get a 403")
responsePost.code should equal(403)
compactRender(responsePost.body \ "error").replaceAll("\"", "") should equal(UserHasMissingRoles + CanSearchWarehouse)
compactRender(responsePost.body \ "message").replaceAll("\"", "") should equal(UserHasMissingRoles + CanSearchWarehouse)
}
}

View File

@ -39,7 +39,7 @@ class WarehouseTestAsync extends V300ServerSetupAsync with DefaultUsers {
responsePost map {
r =>
r.code should equal(403)
compactRender(r.body \ "error").replaceAll("\"", "") should equal(UserHasMissingRoles + CanSearchWarehouse)
compactRender(r.body \ "message").replaceAll("\"", "") should equal(UserHasMissingRoles + CanSearchWarehouse)
}
}

View File

@ -81,7 +81,7 @@ class ConsumerTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will Get Consumers for current user", ApiEndpoint2, VersionOfApi) {
When("We make a request v3.1.0")

View File

@ -76,7 +76,7 @@ class CustomerAddressTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will call the Add endpoint without a proper role", ApiEndpoint1, VersionOfApi) {
When("We make a request v3.1.0")
@ -85,7 +85,7 @@ class CustomerAddressTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanCreateCustomer)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanCreateCustomer)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanCreateCustomer)
}
scenario("We will call the Get endpoint without a user credentials", ApiEndpoint2, VersionOfApi) {
@ -95,7 +95,7 @@ class CustomerAddressTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will call the Get endpoint without a proper role", ApiEndpoint2, VersionOfApi) {
When("We make a request v3.1.0")
@ -104,7 +104,7 @@ class CustomerAddressTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanGetCustomer)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetCustomer)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetCustomer)
}
scenario("We will call the Delete endpoint without a user credentials", ApiEndpoint3, VersionOfApi) {
@ -114,7 +114,7 @@ class CustomerAddressTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will call the Delete endpoint without a proper role", ApiEndpoint3, VersionOfApi) {
When("We make a request v3.1.0")
@ -123,7 +123,7 @@ class CustomerAddressTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanCreateCustomer)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanCreateCustomer)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanCreateCustomer)
}
scenario("We will call the Add, Get and Delete endpoints with user credentials and role", ApiEndpoint1, ApiEndpoint2, ApiEndpoint3, VersionOfApi) {
@ -134,7 +134,7 @@ class CustomerAddressTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].error should startWith (CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].message should startWith (CustomerNotFoundByCustomerId)
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanCreateCustomer.toString)
When("We try to create the customer v3.1.0")

View File

@ -75,7 +75,7 @@ class CustomerTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
@ -88,7 +88,7 @@ class CustomerTest extends V310ServerSetup {
response310.code should equal(403)
val errorMsg = UserHasMissingRoles + canCreateCustomer + " or " + canCreateCustomerAtAnyBank
And("error should be " + errorMsg)
response310.body.extract[ErrorMessage].error should equal (errorMsg)
response310.body.extract[ErrorMessage].message should equal (errorMsg)
}
scenario("We will call the endpoint with a user credentials and a proper role", ApiEndpoint3, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanCreateCustomer.toString)
@ -121,7 +121,7 @@ class CustomerTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanGetCustomer)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetCustomer)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetCustomer)
}
scenario("We will call the endpoint with the proper Role " + canGetCustomer, ApiEndpoint, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomer.toString)
@ -131,7 +131,7 @@ class CustomerTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].error should startWith (CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].message should startWith (CustomerNotFoundByCustomerId)
}
}
@ -143,7 +143,7 @@ class CustomerTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
@ -155,7 +155,7 @@ class CustomerTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanGetCustomer)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetCustomer)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetCustomer)
}
scenario("We will call the endpoint with the proper Role " + canGetCustomer, ApiEndpoint2, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomer.toString)
@ -165,7 +165,7 @@ class CustomerTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + CustomerNotFound)
response310.body.extract[ErrorMessage].error should startWith (CustomerNotFound)
response310.body.extract[ErrorMessage].message should startWith (CustomerNotFound)
}
}

View File

@ -59,7 +59,7 @@ class FundsAvailableTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
@ -75,7 +75,7 @@ class FundsAvailableTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanCheckFundsAvailable)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanCheckFundsAvailable)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanCheckFundsAvailable)
}
scenario("We will check available funds with a proper Role " + canCheckFundsAvailable + " but without params", ApiEndpoint, VersionOfApi) {
@ -90,19 +90,19 @@ class FundsAvailableTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + MissingQueryParams)
response310.body.extract[ErrorMessage].error should startWith (MissingQueryParams)
response310.body.extract[ErrorMessage].message should startWith (MissingQueryParams)
val response310_amount = makeGetRequest(request310 <<? Map("amount" -> "1"))
Then("We should get a 400")
response310_amount.code should equal(400)
And("error should be " + MissingQueryParams)
response310_amount.body.extract[ErrorMessage].error should startWith (MissingQueryParams)
response310_amount.body.extract[ErrorMessage].message should startWith (MissingQueryParams)
val response310_ccy = makeGetRequest(request310 <<? Map("currency" -> "EUR"))
Then("We should get a 400")
response310_ccy.code should equal(400)
And("error should be " + MissingQueryParams)
response310_ccy.body.extract[ErrorMessage].error should startWith (MissingQueryParams)
response310_ccy.body.extract[ErrorMessage].message should startWith (MissingQueryParams)
}
scenario("We will check available funds with a proper Role " + canCheckFundsAvailable + " and params", ApiEndpoint, VersionOfApi) {
@ -122,14 +122,14 @@ class FundsAvailableTest extends V310ServerSetup {
Then("We should get a 400")
response310_invalic_ccy.code should equal(400)
And("error should be " + InvalidISOCurrencyCode)
response310_invalic_ccy.body.extract[ErrorMessage].error should equal(InvalidISOCurrencyCode)
response310_invalic_ccy.body.extract[ErrorMessage].message should equal(InvalidISOCurrencyCode)
When("We make a request v3.1.0 with a Role " + canCheckFundsAvailable + " and all params but amount is invalid")
val response310_amount_ccy = makeGetRequest(request310 <<? Map("currency" -> "EUR", "amount" -> "bb"))
Then("We should get a 400")
response310_amount_ccy.code should equal(400)
And("error should be " + InvalidAmount)
response310_amount_ccy.body.extract[ErrorMessage].error should startWith (InvalidAmount)
response310_amount_ccy.body.extract[ErrorMessage].message should startWith (InvalidAmount)
}
}

View File

@ -53,7 +53,7 @@ class GetAdapterInfoTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + NotImplemented)
response310.body.extract[ErrorMessage].error should include (NotImplemented + "getAdapterInfoFuture")
response310.body.extract[ErrorMessage].message should include (NotImplemented + "getAdapterInfoFuture")
}
}

View File

@ -77,7 +77,7 @@ class RateLimitTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will try to set calls limit per minute without a proper Role " + ApiRole.canSetCallLimits, ApiEndpoint, VersionOfApi) {
When("We make a request v3.1.0 without a Role " + ApiRole.canSetCallLimits)
@ -88,7 +88,7 @@ class RateLimitTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanSetCallLimits)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanSetCallLimits)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanSetCallLimits)
}
scenario("We will try to set calls limit per minute with a proper Role " + ApiRole.canSetCallLimits, ApiEndpoint, VersionOfApi) {
When("We make a request v3.1.0 with a Role " + ApiRole.canSetCallLimits)
@ -139,7 +139,7 @@ class RateLimitTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will try to get calls limit per minute without a proper Role " + ApiRole.canReadCallLimits, ApiEndpoint2, VersionOfApi) {
When("We make a request v3.1.0 without a Role " + ApiRole.canReadCallLimits)
@ -150,7 +150,7 @@ class RateLimitTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanReadCallLimits)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanReadCallLimits)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanReadCallLimits)
}
scenario("We will try to get calls limit per minute with a proper Role " + ApiRole.canReadCallLimits, ApiEndpoint2, VersionOfApi) {
When("We make a request v3.1.0 with a Role " + ApiRole.canReadCallLimits)

View File

@ -56,7 +56,7 @@ class RefreshUserTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanRefreshUser)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanRefreshUser)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanRefreshUser)
}

View File

@ -63,7 +63,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
feature("Get the Tax Residence of the Customer specified by CUSTOMER_ID v3.1.0 - Unauthorized access") {
@ -74,7 +74,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
feature("Delete the Tax Residence of the Customer specified by a TAX_RESIDENCE_ID v3.1.0 - Unauthorized access") {
@ -85,7 +85,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
@ -98,7 +98,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanCreateTaxResidence)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanCreateTaxResidence)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanCreateTaxResidence)
}
scenario("We will call the endpoint with the proper Role " + canCreateTaxResidence, ApiEndpoint1, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanCreateTaxResidence.toString)
@ -108,7 +108,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].error should startWith (CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].message should startWith (CustomerNotFoundByCustomerId)
}
scenario("We will call the endpoint with the proper Role " + canCreateTaxResidence + " and an existing customer", ApiEndpoint1, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanCreateCustomer.toString)
@ -160,7 +160,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanGetTaxResidence)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetTaxResidence)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetTaxResidence)
}
scenario("We will call the endpoint with the proper Role " + canGetTaxResidence, ApiEndpoint2, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetTaxResidence.toString)
@ -170,7 +170,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].error should startWith (CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].message should startWith (CustomerNotFoundByCustomerId)
}
}
@ -183,7 +183,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanDeleteTaxResidence)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanDeleteTaxResidence)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanDeleteTaxResidence)
}
scenario("We will call the endpoint with the proper Role " + canDeleteTaxResidence, ApiEndpoint3, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanDeleteTaxResidence.toString)
@ -193,7 +193,7 @@ class TaxResidenceTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].error should startWith (CustomerNotFoundByCustomerId)
response310.body.extract[ErrorMessage].message should startWith (CustomerNotFoundByCustomerId)
}
}

View File

@ -58,7 +58,7 @@ class TransactionRequestTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will Get Transaction Requests - user is logged in", ApiEndpoint1, VersionOfApi) {
When("We make a request v3.1.0")

View File

@ -59,7 +59,7 @@ class TransactionTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will Get Transaction by Id - user is logged in", ApiEndpoint1, VersionOfApi) {
When("We make a request v3.1.0")

View File

@ -64,7 +64,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will call the Add endpoint without a proper role", ApiEndpoint1, VersionOfApi) {
When("We make a request v3.1.0")
@ -73,7 +73,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanCreateUserAuthContext)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanCreateUserAuthContext)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanCreateUserAuthContext)
}
scenario("We will call the Get endpoint without a user credentials", ApiEndpoint2, VersionOfApi) {
@ -83,7 +83,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will call the Get endpoint without a proper role", ApiEndpoint2, VersionOfApi) {
When("We make a request v3.1.0")
@ -92,7 +92,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanGetUserAuthContext)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetUserAuthContext)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetUserAuthContext)
}
scenario("We will call the deleteUserAuthContexts endpoint without a user credentials", ApiEndpoint3, VersionOfApi) {
@ -102,7 +102,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will call the deleteUserAuthContexts endpoint without a proper role", ApiEndpoint3, VersionOfApi) {
When("We make a request v3.1.0")
@ -111,7 +111,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanDeleteUserAuthContext)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanDeleteUserAuthContext)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanDeleteUserAuthContext)
}
scenario("We will call the deleteUserAuthContextById endpoint without a user credentials", ApiEndpoint4, VersionOfApi) {
@ -121,7 +121,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
scenario("We will call the deleteUserAuthContextById endpoint without a proper role", ApiEndpoint4, VersionOfApi) {
When("We make a request v3.1.0")
@ -130,7 +130,7 @@ class UserAuthContextTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanDeleteUserAuthContext)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanDeleteUserAuthContext)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanDeleteUserAuthContext)
}
scenario("We will call the Add, Get and Delete endpoints with user credentials and role", ApiEndpoint1, ApiEndpoint2, ApiEndpoint3, ApiEndpoint4, VersionOfApi) {

View File

@ -65,7 +65,7 @@ class WebhooksTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
@ -79,7 +79,7 @@ class WebhooksTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanCreateWebhook)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanCreateWebhook)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanCreateWebhook)
}
scenario("We will try to create the web hook with a proper Role " + canCreateWebhook + " but without proper trigger name", ApiEndpoint2, VersionOfApi) {
@ -92,7 +92,7 @@ class WebhooksTest extends V310ServerSetup {
response310.code should equal(400)
val failMsg = IncorrectTriggerName + postJsonIncorrectTriggerName.trigger_name + ". Possible values are " + ApiTrigger.availableTriggers.sorted.mkString(", ")
And("error should be " + failMsg)
response310.body.extract[ErrorMessage].error should include (failMsg)
response310.body.extract[ErrorMessage].message should include (failMsg)
}
scenario("We will try to create the web hook with a proper Role " + canCreateWebhook, ApiEndpoint2, VersionOfApi) {
@ -117,7 +117,7 @@ class WebhooksTest extends V310ServerSetup {
Then("We should get a 400")
response310.code should equal(400)
And("error should be " + UserNotLoggedIn)
response310.body.extract[ErrorMessage].error should equal (UserNotLoggedIn)
response310.body.extract[ErrorMessage].message should equal (UserNotLoggedIn)
}
}
@ -130,7 +130,7 @@ class WebhooksTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanGetWebhooks)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanGetWebhooks)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanGetWebhooks)
}
scenario("We will try to get web hooks with a proper Role " + canGetWebhooks, ApiEndpoint1, VersionOfApi) {
val bankId = randomBankId
@ -154,7 +154,7 @@ class WebhooksTest extends V310ServerSetup {
Then("We should get a 403")
response310.code should equal(403)
And("error should be " + UserHasMissingRoles + CanUpdateWebhook)
response310.body.extract[ErrorMessage].error should equal (UserHasMissingRoles + CanUpdateWebhook)
response310.body.extract[ErrorMessage].message should equal (UserHasMissingRoles + CanUpdateWebhook)
}
scenario("We will try to Update an Account Web Hook with a proper Role " + canUpdateWebhook, ApiEndpoint3, VersionOfApi) {
val bankId = randomBankId