mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 13:46:49 +00:00
commit
fe5ad82d86
@ -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
|
||||
)
|
||||
}
|
||||
|
||||
@ -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
|
||||
)
|
||||
|
||||
@ -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 .
|
||||
|
||||
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -458,7 +458,8 @@ object SwaggerDefinitionsJSON {
|
||||
)*/
|
||||
|
||||
val errorMessage = ErrorMessage(
|
||||
error = "String"
|
||||
code = 500,
|
||||
message = "Internal Server Error"
|
||||
)
|
||||
|
||||
val postTransactionImageJSON = PostTransactionImageJSON(
|
||||
|
||||
@ -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 = {
|
||||
|
||||
@ -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
|
||||
)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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]]
|
||||
|
||||
@ -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 +")")
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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])
|
||||
|
||||
@ -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
@ -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)
|
||||
}
|
||||
|
||||
@ -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 _ => ""
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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 _ => ""
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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") {
|
||||
|
||||
@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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 _ => ""
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 )
|
||||
}}
|
||||
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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 )
|
||||
}}
|
||||
|
||||
|
||||
|
||||
@ -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") {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user