diff --git a/pom.xml b/pom.xml
index cc2180df95..cb9c8afc39 100644
--- a/pom.xml
+++ b/pom.xml
@@ -334,6 +334,11 @@
java-jwt
3.3.0
+
+ com.nimbusds
+ nimbus-jose-jwt
+ 4.23
+
diff --git a/src/main/scala/bootstrap/liftweb/Boot.scala b/src/main/scala/bootstrap/liftweb/Boot.scala
index b54f0c9800..7de264775c 100644
--- a/src/main/scala/bootstrap/liftweb/Boot.scala
+++ b/src/main/scala/bootstrap/liftweb/Boot.scala
@@ -184,7 +184,8 @@ class Boot extends MdcLoggable {
print("Enter the Password for the SSL Certificate Stores: ")
//As most IDEs do not provide a Console, we fall back to readLine
- code.api.util.APIUtil.initPasswd = if (Props.get("kafka.use.ssl").getOrElse("") == "true") {
+ code.api.util.APIUtil.initPasswd = if (Props.get("kafka.use.ssl").getOrElse("") == "true" ||
+ Props.get("jwt.use.ssl").getOrElse("") == "true") {
try {
System.console.readPassword().toString
} catch {
@@ -223,7 +224,7 @@ class Boot extends MdcLoggable {
LiftRules.statelessDispatch.append(OAuthHandshake)
// JWT auth endpoints
- if(Props.getBool("allow_direct_login", true)) {
+ if(APIUtil.getPropsAsBoolValue("allow_direct_login", true)) {
LiftRules.statelessDispatch.append(DirectLogin)
}
@@ -233,7 +234,7 @@ class Boot extends MdcLoggable {
// OpenIdConnect endpoint and validator
- if(Props.getBool("allow_openidconnect", false)) {
+ if(APIUtil.getPropsAsBoolValue("allow_openidconnect", false)) {
LiftRules.dispatch.append(OpenIdConnect)
}
@@ -269,7 +270,7 @@ class Boot extends MdcLoggable {
// LiftRules.statelessDispatch.append(Metrics) TODO: see metric menu entry below
//add sandbox api calls only if we're running in sandbox mode
- if(Props.getBool("allow_sandbox_data_import", false)) {
+ if(APIUtil.getPropsAsBoolValue("allow_sandbox_data_import", false)) {
LiftRules.statelessDispatch.append(SandboxApiCalls)
} else {
logger.info("Not adding sandbox api calls")
@@ -279,7 +280,7 @@ class Boot extends MdcLoggable {
Schedule.schedule(()=> OAuthAuthorisation.dataBaseCleaner, 2 minutes)
val accountCreation = {
- if(Props.getBool("allow_sandbox_account_creation", false)){
+ if(APIUtil.getPropsAsBoolValue("allow_sandbox_account_creation", false)){
//user must be logged in, as a created account needs an owner
// Not mentioning test and sandbox for App store purposes right now.
List(Menu("Sandbox Account Creation", "Create Bank Account") / "create-sandbox-account" >> AuthUser.loginFirst)
@@ -293,7 +294,7 @@ class Boot extends MdcLoggable {
KafkaHelperActors.startLocalKafkaHelperWorkers(actorSystem)
}
- if (!Props.getBool("remotedata.enable", false)) {
+ if (!APIUtil.getPropsAsBoolValue("remotedata.enable", false)) {
try {
logger.info(s"RemotedataActors.startLocalRemotedataWorkers( ${actorSystem} ) starting")
RemotedataActors.startActors(actorSystem)
@@ -305,7 +306,7 @@ class Boot extends MdcLoggable {
// API Metrics (logs of API calls)
// If set to true we will write each URL with params to a datastore / log file
- if (Props.getBool("write_metrics", false)) {
+ if (APIUtil.getPropsAsBoolValue("write_metrics", false)) {
logger.info("writeMetrics is true. We will write API metrics")
} else {
logger.info("writeMetrics is false. We will NOT write API metrics")
@@ -370,7 +371,7 @@ class Boot extends MdcLoggable {
S.addAround(DB.buildLoanWrapper)
try {
- val useMessageQueue = Props.getBool("messageQueue.createBankAccounts", false)
+ val useMessageQueue = APIUtil.getPropsAsBoolValue("messageQueue.createBankAccounts", false)
if(useMessageQueue)
BankAccountCreationListener.startListen
} catch {
@@ -396,15 +397,15 @@ class Boot extends MdcLoggable {
}
}
- if ( !Props.getLong("transaction_status_scheduler_delay").isEmpty ) {
- val delay = Props.getLong("transaction_status_scheduler_delay").openOrThrowException("Incorrect value for transaction_status_scheduler_delay, please provide number of seconds.")
+ if ( !APIUtil.getPropsAsLongValue("transaction_status_scheduler_delay").isEmpty ) {
+ val delay = APIUtil.getPropsAsLongValue("transaction_status_scheduler_delay").openOrThrowException("Incorrect value for transaction_status_scheduler_delay, please provide number of seconds.")
TransactionStatusScheduler.start(delay)
}
APIUtil.akkaSanityCheck() match {
case Full(c) if c == true => logger.info(s"remotedata.secret matched = $c")
case Full(c) if c == false => throw new Exception(ErrorMessages.RemoteDataSecretMatchError)
- case Empty => Props.getBool("use_akka", false) match {
+ case Empty => APIUtil.getPropsAsBoolValue("use_akka", false) match {
case true => throw new Exception(ErrorMessages.RemoteDataSecretObtainError)
case false => logger.info("Akka middleware layer is disabled.")
}
diff --git a/src/main/scala/code/accountholder/AccountHolders.scala b/src/main/scala/code/accountholder/AccountHolders.scala
index d8dbe90f0a..0011dfeaaa 100644
--- a/src/main/scala/code/accountholder/AccountHolders.scala
+++ b/src/main/scala/code/accountholder/AccountHolders.scala
@@ -2,9 +2,10 @@ package code.accountholder
+import code.api.util.APIUtil
import code.model._
import net.liftweb.util.{Props, SimpleInjector}
-import code.remotedata.{RemotedataAccountHolders}
+import code.remotedata.RemotedataAccountHolders
import net.liftweb.common.Box
@@ -13,7 +14,7 @@ object AccountHolders extends SimpleInjector {
val accountHolders = new Inject(buildOne _) {}
def buildOne: AccountHolders =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MapperAccountHolders
case true => RemotedataAccountHolders // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/actorsystem/ObpActorInit.scala b/src/main/scala/code/actorsystem/ObpActorInit.scala
index a76d5d3be9..8ac522b00c 100644
--- a/src/main/scala/code/actorsystem/ObpActorInit.scala
+++ b/src/main/scala/code/actorsystem/ObpActorInit.scala
@@ -2,6 +2,7 @@ package code.actorsystem
import akka.util.Timeout
import code.api.APIFailure
+import code.api.util.APIUtil
import code.util.Helper.MdcLoggable
import net.liftweb.common._
import net.liftweb.util.Props
@@ -12,7 +13,7 @@ import scala.concurrent.{Await, Future}
trait ObpActorInit extends MdcLoggable{
// Default is 3 seconds, which should be more than enough for slower systems
- val ACTOR_TIMEOUT: Long = Props.getLong("remotedata.timeout").openOr(3)
+ val ACTOR_TIMEOUT: Long = APIUtil.getPropsAsLongValue("remotedata.timeout").openOr(3)
val actorName = CreateActorNameFromClassName(this.getClass.getName)
val actor = ObpLookupSystem.getRemotedataActor(actorName)
diff --git a/src/main/scala/code/actorsystem/ObpLookupSystem.scala b/src/main/scala/code/actorsystem/ObpLookupSystem.scala
index 3176c7f172..90ae8576ba 100644
--- a/src/main/scala/code/actorsystem/ObpLookupSystem.scala
+++ b/src/main/scala/code/actorsystem/ObpLookupSystem.scala
@@ -1,6 +1,7 @@
package code.actorsystem
import akka.actor.ActorSystem
+import code.api.util.APIUtil
import code.util.Helper
import code.util.Helper.MdcLoggable
import com.typesafe.config.ConfigFactory
@@ -41,7 +42,7 @@ trait ObpLookupSystem extends MdcLoggable {
def getRemotedataActor(actorName: String) = {
- val actorPath: String = Props.getBool("remotedata.enable", false) match {
+ val actorPath: String = APIUtil.getPropsAsBoolValue("remotedata.enable", false) match {
case true =>
val hostname = ObpActorConfig.remoteHostname
val port = ObpActorConfig.remotePort
diff --git a/src/main/scala/code/api/GatewayLogin.scala b/src/main/scala/code/api/GatewayLogin.scala
index 83ddcdfe9c..2ccf74b21f 100755
--- a/src/main/scala/code/api/GatewayLogin.scala
+++ b/src/main/scala/code/api/GatewayLogin.scala
@@ -28,7 +28,7 @@ package code.api
import java.io.UnsupportedEncodingException
-import code.api.util.{CertificateUtil, CryptoSystem, ErrorMessages}
+import code.api.util.{APIUtil, CertificateUtil, CryptoSystem, ErrorMessages}
import code.bankconnectors.{Connector, InboundAccountCommon}
import code.consumer.Consumers
import code.model.dataAccess.AuthUser
@@ -86,7 +86,7 @@ object GatewayLogin extends RestHelper with MdcLoggable {
var jwt: String = ""
try {
- val algorithm = Props.getBool("jwt.use.ssl", false) match {
+ val algorithm = APIUtil.getPropsAsBoolValue("jwt.use.ssl", false) match {
case true =>
Algorithm.RSA256(CertificateUtil.publicKey, CertificateUtil.privateKey)
case false =>
@@ -107,7 +107,12 @@ object GatewayLogin extends RestHelper with MdcLoggable {
//Invalid Signing configuration / Couldn't convert Claims.
logger.error(exception)
}
- jwt
+ APIUtil.getPropsAsBoolValue("jwt.use.ssl", false) match {
+ case true =>
+ CertificateUtil.encryptJwtWithRsa(jwt)
+ case false =>
+ jwt
+ }
}
def parseJwt(parameters: Map[String, String]): Box[String] = {
@@ -134,7 +139,7 @@ object GatewayLogin extends RestHelper with MdcLoggable {
def validateJwtToken(token: String): Box[DecodedJWT] = {
try {
val jwtDecoded = JWT.decode(token)
- val algorithm = Props.getBool("jwt.use.ssl", false) match {
+ val algorithm = APIUtil.getPropsAsBoolValue("jwt.use.ssl", false) match {
case true =>
Algorithm.RSA256(CertificateUtil.publicKey, CertificateUtil.privateKey)
case false =>
diff --git a/src/main/scala/code/api/OBPRestHelper.scala b/src/main/scala/code/api/OBPRestHelper.scala
index 9e1c5fc2ff..59b8c76331 100644
--- a/src/main/scala/code/api/OBPRestHelper.scala
+++ b/src/main/scala/code/api/OBPRestHelper.scala
@@ -113,7 +113,7 @@ trait OBPRestHelper extends RestHelper with MdcLoggable {
errorJsonResponse(apiFailure.msg, apiFailure.responseCode)
}
case obj@Failure(msg, _, c) => {
- val failuresMsg = Props.getBool("display_internal_errors").openOr(false) match {
+ val failuresMsg = APIUtil.getPropsAsBoolValue("display_internal_errors", false) match {
case true => // Show all error in a chain
obj.messageChain
case false => // Do not display internal errors
@@ -216,7 +216,7 @@ trait OBPRestHelper extends RestHelper with MdcLoggable {
case Failure(msg, t, c) => Failure(msg, t, c)
case _ => Failure("oauth error")
}
- } else if (Props.getBool("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
+ } else if (APIUtil.getPropsAsBoolValue("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
DirectLogin.getUser match {
case Full(u) => fn(cc.copy(user = Full(u)))// Authentication is successful
case _ => {
@@ -224,7 +224,7 @@ trait OBPRestHelper extends RestHelper with MdcLoggable {
Full(errorJsonResponse(message, httpCode))
}
}
- } else if (Props.getBool("allow_gateway_login", false) && hasGatewayHeader(authorization)) {
+ } else if (APIUtil.getPropsAsBoolValue("allow_gateway_login", false) && hasGatewayHeader(authorization)) {
logger.info("allow_gateway_login-getRemoteIpAddress: " + getRemoteIpAddress() )
Props.get("gateway.host") match {
case Full(h) if h.split(",").toList.exists(_.equalsIgnoreCase(getRemoteIpAddress()) == true) => // Only addresses from white list can use this feature
diff --git a/src/main/scala/code/api/directlogin.scala b/src/main/scala/code/api/directlogin.scala
index 715103fb94..50c7c60f90 100644
--- a/src/main/scala/code/api/directlogin.scala
+++ b/src/main/scala/code/api/directlogin.scala
@@ -250,7 +250,7 @@ object DirectLogin extends RestHelper with MdcLoggable {
//check if the application is registered and active
else if (
requestType == "authorizationToken" &&
- Props.getBool("direct_login_consumer_key_mandatory", true) &&
+ APIUtil.getPropsAsBoolValue("direct_login_consumer_key_mandatory", true) &&
! APIUtil.registeredApplication(parameters.getOrElse("consumer_key", ""))) {
logger.error("application: " + parameters.getOrElse("consumer_key", "") + " not found")
@@ -364,7 +364,7 @@ object DirectLogin extends RestHelper with MdcLoggable {
if (requestType == "protectedResource") {
validAccessTokenFuture(parameters.getOrElse("token", ""))
} else if (requestType == "authorizationToken" &&
- Props.getBool("direct_login_consumer_key_mandatory", true))
+ APIUtil.getPropsAsBoolValue("direct_login_consumer_key_mandatory", true))
{
APIUtil.registeredApplicationFuture(parameters.getOrElse("consumer_key", ""))
} else {
@@ -392,7 +392,7 @@ object DirectLogin extends RestHelper with MdcLoggable {
}
//check if the application is registered and active
else if ( requestType == "authorizationToken" &&
- Props.getBool("direct_login_consumer_key_mandatory", true) &&
+ APIUtil.getPropsAsBoolValue("direct_login_consumer_key_mandatory", true) &&
!valid)
{
logger.error("application: " + parameters.getOrElse("consumer_key", "") + " not found")
diff --git a/src/main/scala/code/api/util/APIUtil.scala b/src/main/scala/code/api/util/APIUtil.scala
index 632fa48f31..5c7f07e4b3 100644
--- a/src/main/scala/code/api/util/APIUtil.scala
+++ b/src/main/scala/code/api/util/APIUtil.scala
@@ -432,7 +432,7 @@ object APIUtil extends MdcLoggable {
def logAPICall(callContext: Option[CallContext]) = {
callContext match {
case Some(cc) =>
- if(Props.getBool("write_metrics", false)) {
+ if(getPropsAsBoolValue("write_metrics", false)) {
val u: User = cc.user.orNull
val userId = if (u != null) u.userId else "null"
val userName = if (u != null) u.name else "null"
@@ -456,7 +456,7 @@ object APIUtil extends MdcLoggable {
case Full(c) => Full(c)
case _ => Empty
}
- } else if (Props.getBool("allow_direct_login", true) && hasDirectLoginHeader(cc.authorization)) {
+ } else if (getPropsAsBoolValue("allow_direct_login", true) && hasDirectLoginHeader(cc.authorization)) {
DirectLogin.getConsumer(cc) match {
case Full(c) => Full(c)
case _ => Empty
@@ -493,14 +493,14 @@ object APIUtil extends MdcLoggable {
def logAPICall(date: TimeSpan, duration: Long, rd: Option[ResourceDoc]) = {
val authorization = S.request.map(_.header("Authorization")).flatten
- if(Props.getBool("write_metrics", false)) {
+ if(getPropsAsBoolValue("write_metrics", false)) {
val user =
if (hasAnOAuthHeader(authorization)) {
getUser match {
case Full(u) => Full(u)
case _ => Empty
}
- } else if (Props.getBool("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
+ } else if (getPropsAsBoolValue("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
DirectLogin.getUser match {
case Full(u) => Full(u)
case _ => Empty
@@ -515,7 +515,7 @@ object APIUtil extends MdcLoggable {
case Full(c) => Full(c)
case _ => Empty
}
- } else if (Props.getBool("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
+ } else if (getPropsAsBoolValue("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
DirectLogin.getConsumer match {
case Full(c) => Full(c)
case _ => Empty
@@ -1464,7 +1464,7 @@ Returns a string showed to the developer
val result = blockOfCode
// call-by-name
val t1 = System.currentTimeMillis()
- if (Props.getBool("write_metrics", false)){
+ if (getPropsAsBoolValue("write_metrics", false)){
val correlationId = getCorrelationId()
Future {
ConnectorMetricsProvider.metrics.vend.saveConnectorMetric(nameOfConnector, nameOfFunction, correlationId, now, t1 - t0)
@@ -1474,7 +1474,7 @@ Returns a string showed to the developer
}
def akkaSanityCheck (): Box[Boolean] = {
- Props.getBool("use_akka", false) match {
+ getPropsAsBoolValue("use_akka", false) match {
case true =>
val remotedataSecret = Props.get("remotedata.secret").openOrThrowException("Cannot obtain property remotedata.secret")
SanityCheck.sanityCheck.vend.remoteAkkaSanityCheck(remotedataSecret)
@@ -1924,9 +1924,9 @@ Versions are groups of endpoints in a file
val res =
if (hasAnOAuthHeader(authorization)) {
getUserFromOAuthHeaderFuture(cc)
- } else if (Props.getBool("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
+ } else if (getPropsAsBoolValue("allow_direct_login", true) && hasDirectLoginHeader(authorization)) {
DirectLogin.getUserFromDirectLoginHeaderFuture(cc)
- } else if (Props.getBool("allow_gateway_login", false) && hasGatewayHeader(authorization)) {
+ } else if (getPropsAsBoolValue("allow_gateway_login", false) && hasGatewayHeader(authorization)) {
Props.get("gateway.host") match {
case Full(h) if h.split(",").toList.exists(_.equalsIgnoreCase(getRemoteIpAddress()) == true) => // Only addresses from white list can use this feature
val (httpCode, message, parameters) = GatewayLogin.validator(s.request)
@@ -2015,7 +2015,7 @@ Versions are groups of endpoints in a file
case ParamFailure(msg,_,_,_) =>
throw new Exception(msg)
case obj@Failure(msg, _, c) =>
- val failuresMsg = Props.getBool("display_internal_errors").openOr(false) match {
+ val failuresMsg = getPropsAsBoolValue("display_internal_errors", false) match {
case true => // Show all error in a chain
obj.messageChain
case false => // Do not display internal errors
@@ -2093,25 +2093,46 @@ Versions are groups of endpoints in a file
/**
* This function is implemented in order to support encrypted values in props file.
* Please note that some value is considered as encrypted if has an encryption mark property in addition to regular props value in props file e.g
- * db.url=SOME_ENCRYPTED_VALUE
+ * db.url=Helpers.base64Encode(SOME_ENCRYPTED_VALUE)
* db.url.is_encrypted=true
* getDecryptedPropsValue("db.url") = jdbc:postgresql://localhost:5432/han_obp_api_9?user=han_obp_api&password=mypassword
+ * Encrypt/Decrypt workflow:
+ * Encrypt: Array[Byte] -> Helpers.base64Encode(encrypted) -> Props file: String -> Helpers.base64Decode(encryptedValue) -> Decrypt: Array[Byte]
* @param nameOfProperty Name of property which value should be decrypted
* @return Decrypted value of a property
*/
def getPropsValue(nameOfProperty: String): Box[String] = {
(Props.get(nameOfProperty), Props.get(nameOfProperty + ".is_encrypted")) match {
- case (Full(encryptedValue), Full(isEncrypted)) if isEncrypted == "true" =>
- val decryptedValue: Array[Byte] = decrypt(privateKey, encryptedValue.getBytes(StandardCharsets.UTF_8), CryptoSystem.RSA)
- Full(decryptedValue.toString)
+ case (Full(base64PropsValue), Full(isEncrypted)) if isEncrypted == "true" =>
+ val decryptedValueAsArray = decrypt(privateKey, Helpers.base64Decode(base64PropsValue), CryptoSystem.RSA)
+ val decryptedValueAsString = new String(decryptedValueAsArray)
+ Full(decryptedValueAsString)
case (Full(property), Full(isEncrypted)) if isEncrypted == "false" =>
Full(property)
case (Full(property), Empty) =>
Full(property)
+ case (Empty, Empty) =>
+ Empty
case _ =>
logger.error(cannotDecryptValueOfProperty + nameOfProperty)
Failure(cannotDecryptValueOfProperty + nameOfProperty)
}
}
+ def getPropsAsBoolValue(nameOfProperty: String, defaultValue: Boolean): Boolean = {
+ getPropsValue(nameOfProperty) map(toBoolean) openOr(defaultValue)
+ }
+ def getPropsAsIntValue(nameOfProperty: String): Box[Int] = {
+ getPropsValue(nameOfProperty) map(toInt)
+ }
+ def getPropsAsIntValue(nameOfProperty: String, defaultValue: Int): Int = {
+ getPropsAsIntValue(nameOfProperty) openOr(defaultValue)
+ }
+ def getPropsAsLongValue(nameOfProperty: String): Box[Long] = {
+ getPropsValue(nameOfProperty) flatMap(asLong)
+ }
+ def getPropsAsLongValue(nameOfProperty: String, defaultValue: Long): Long = {
+ getPropsAsLongValue(nameOfProperty) openOr(defaultValue)
+ }
+
}
diff --git a/src/main/scala/code/api/util/CertificateUtil.scala b/src/main/scala/code/api/util/CertificateUtil.scala
index 78700cd2b5..723087edf8 100644
--- a/src/main/scala/code/api/util/CertificateUtil.scala
+++ b/src/main/scala/code/api/util/CertificateUtil.scala
@@ -6,7 +6,11 @@ import java.security.{PublicKey, _}
import javax.crypto.Cipher
import code.api.util.CryptoSystem.CryptoSystem
-import net.liftweb.util.Props
+import com.nimbusds.jose.crypto.RSAEncrypter
+import com.nimbusds.jose.{EncryptionMethod, JOSEObject, JWEAlgorithm, JWEHeader}
+import com.nimbusds.jwt.EncryptedJWT
+import code.util.Helper.MdcLoggable
+import net.liftweb.util.{Helpers, Props}
object CryptoSystem extends Enumeration {
@@ -14,14 +18,14 @@ object CryptoSystem extends Enumeration {
val RSA = Value
}
-object CertificateUtil {
+object CertificateUtil extends MdcLoggable {
- lazy val (publicKey: RSAPublicKey, privateKey: RSAPrivateKey) = Props.getBool("jwt.use.ssl", false) match {
+ lazy val (publicKey: RSAPublicKey, privateKey: RSAPrivateKey) = APIUtil.getPropsAsBoolValue("jwt.use.ssl", false) match {
case true =>
getKeyPair(
jkspath = Props.get("keystore.path").getOrElse(""),
- jkspasswd = Props.get("keystore.password").getOrElse(""),
- keypasswd = Props.get("keystore.passphrase").getOrElse(""),
+ jkspasswd = Props.get("keystore.password").getOrElse(APIUtil.initPasswd),
+ keypasswd = Props.get("keystore.passphrase").getOrElse(APIUtil.initPasswd),
alias = Props.get("keystore.alias").getOrElse("")
)
case false =>
@@ -95,20 +99,73 @@ object CertificateUtil {
cipher.doFinal(encrypted)
}
+ def getClaimSet(jwt: String) = {
+ import com.nimbusds.jose.util.Base64URL
+ import com.nimbusds.jwt.PlainJWT
+ // {"alg":"none"}// {"alg":"none"}
+ val header = "eyJhbGciOiJub25lIn0"
+ val parts: Array[Base64URL] = JOSEObject.split(jwt)
+ val plainJwt = new PlainJWT(new Base64URL(header), (parts(1)))
+ plainJwt.getJWTClaimsSet
+ }
+ def encryptJwtWithRsa(jwt: String) = {
+ // Request JWT encrypted with RSA-OAEP-256 and 128-bit AES/GCM
+ val header = new JWEHeader(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128GCM)
+ // Create an encrypter with the specified public RSA key
+ val encrypter = new RSAEncrypter(publicKey)
+ // Create the encrypted JWT object
+ val encryptedJWT = new EncryptedJWT(header, CertificateUtil.getClaimSet(jwt))
+ // Do the actual encryption
+ encryptedJWT.encrypt(encrypter)
+ logger.debug("encryptedJWT.serialize(): " + encryptedJWT.serialize())
+ // Return JWT
+ encryptedJWT.serialize()
+ }
+ def decryptJwtWithRsa(jwt: String) = {
+ import com.nimbusds.jose.crypto.RSADecrypter
+ import com.nimbusds.jwt.EncryptedJWT
+ // Parse back
+ val jwtParsed = EncryptedJWT.parse(jwt)
+ System.out.println("decryptJwtWithRsa: " + jwtParsed.serialize())
+ // Create a decrypter with the specified private RSA key
+ val decrypter = new RSADecrypter(privateKey)
+ jwtParsed.decrypt(decrypter)
+ logger.debug("jwt: " + jwt)
+ logger.debug("getState: " + jwtParsed.getState)
+ logger.debug("getJWTClaimsSet: " + jwtParsed.getJWTClaimsSet)
+ logger.debug("getCipherText: " + jwtParsed.getCipherText)
+ logger.debug("getAuthTag: " + jwtParsed.getAuthTag)
+ jwtParsed.serialize()
+ }
+
@throws[Exception]
def main(args: Array[String]): Unit = {
+ print("Enter the Password for the SSL Certificate Stores: ")
+ //As most IDEs do not provide a Console, we fall back to readLine
+ code.api.util.APIUtil.initPasswd =
+ if (Props.get("kafka.use.ssl").getOrElse("") == "true" ||
+ Props.get("jwt.use.ssl").getOrElse("") == "true")
+ {
+ try {
+ System.console.readPassword().toString
+ } catch {
+ case e: NullPointerException => scala.io.StdIn.readLine()
+ }
+ } else {"notused"}
+
System.out.println("Public key:" + publicKey.getEncoded)
System.out.println("Private key:" + privateKey.getEncoded)
// 1.1 Encrypt the token with public key
val encryptedWithPublicReceived = encrypt(publicKey, "This is a secret message we should receive", CryptoSystem.RSA)
System.out.println("Encrypted token with public key:")
- System.out.println(new String(encryptedWithPublicReceived)) // <>
+ val encryptedString = Helpers.base64Encode(encryptedWithPublicReceived)
+ System.out.println(encryptedString) // <>
// 1.2 Decrypt the token with private key
- val decryptedToken = decrypt(privateKey, encryptedWithPublicReceived, CryptoSystem.RSA)
+ val decryptedToken = decrypt(privateKey, Helpers.base64Decode(encryptedString), CryptoSystem.RSA)
System.out.println("Decrypted token with private key:") // This is a secret message
System.out.println(new String(decryptedToken)) // This is a secret message
diff --git a/src/main/scala/code/api/v1_2_1/APIMethods121.scala b/src/main/scala/code/api/v1_2_1/APIMethods121.scala
index c8d5e249cd..911abcf565 100644
--- a/src/main/scala/code/api/v1_2_1/APIMethods121.scala
+++ b/src/main/scala/code/api/v1_2_1/APIMethods121.scala
@@ -2882,7 +2882,7 @@ Authentication via OAuth is required. The user must either have owner privileges
lazy val makePayment : OBPEndpoint = {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transactions" :: Nil JsonPost json -> _ => {
sc
- if (Props.getBool("payments_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("payments_enabled", false)) {
for {
u <- cc.user ?~ UserNotLoggedIn
makeTransJson <- tryo{json.extract[MakePaymentJson]} ?~ {InvalidJsonFormat}
diff --git a/src/main/scala/code/api/v1_4_0/APIMethods140.scala b/src/main/scala/code/api/v1_4_0/APIMethods140.scala
index 1d97ca646b..b916f61ac4 100644
--- a/src/main/scala/code/api/v1_4_0/APIMethods140.scala
+++ b/src/main/scala/code/api/v1_4_0/APIMethods140.scala
@@ -167,7 +167,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
}
- val getBranchesIsPublic = Props.getBool("apiOptions.getBranchesIsPublic", true)
+ val getBranchesIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getBranchesIsPublic", true)
resourceDocs += ResourceDoc(
getBranches,
@@ -234,7 +234,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
}
- val getAtmsIsPublic = Props.getBool("apiOptions.getAtmsIsPublic", true)
+ val getAtmsIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getAtmsIsPublic", true)
resourceDocs += ResourceDoc(
getAtms,
@@ -302,7 +302,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
}
- val getProductsIsPublic = Props.getBool("apiOptions.getProductsIsPublic", true)
+ val getProductsIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getProductsIsPublic", true)
resourceDocs += ResourceDoc(
@@ -445,7 +445,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-request-types" ::
Nil JsonGet _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
u <- cc.user ?~ ErrorMessages.UserNotLoggedIn
fromBank <- Bank(bankId) ?~! {ErrorMessages.BankNotFound}
@@ -488,7 +488,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
lazy val getTransactionRequests: OBPEndpoint = {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-requests" :: Nil JsonGet _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
u <- cc.user ?~ ErrorMessages.UserNotLoggedIn
fromBank <- Bank(bankId) ?~! {ErrorMessages.BankNotFound}
@@ -554,7 +554,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-request-types" ::
TransactionRequestType(transactionRequestType) :: "transaction-requests" :: Nil JsonPost json -> _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
/* TODO:
* check if user has access using the view that is given (now it checks if user has access to owner view), will need some new permissions for transaction requests
@@ -622,7 +622,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-request-types" ::
TransactionRequestType(transactionRequestType) :: "transaction-requests" :: TransactionRequestId(transReqId) :: "challenge" :: Nil JsonPost json -> _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
u <- cc.user ?~ ErrorMessages.UserNotLoggedIn
fromBank <- Bank(bankId) ?~! {ErrorMessages.BankNotFound}
diff --git a/src/main/scala/code/api/v2_0_0/APIMethods200.scala b/src/main/scala/code/api/v2_0_0/APIMethods200.scala
index 864b7446d9..053abf27f0 100644
--- a/src/main/scala/code/api/v2_0_0/APIMethods200.scala
+++ b/src/main/scala/code/api/v2_0_0/APIMethods200.scala
@@ -7,7 +7,7 @@ import code.TransactionTypes.TransactionType
import code.api.APIFailure
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
import code.api.util.APIUtil._
-import code.api.util.{ApiRole, ErrorMessages}
+import code.api.util.{APIUtil, ApiRole, ErrorMessages}
import code.api.v1_2_1.OBPAPI1_2_1._
import code.api.v1_2_1.{AmountOfMoneyJsonV121 => AmountOfMoneyJSON121, JSONFactory => JSONFactory121}
import code.api.v1_4_0.JSONFactory1_4_0
@@ -35,6 +35,7 @@ import net.liftweb.json.JsonAST.JValue
import net.liftweb.mapper.By
import net.liftweb.util.Helpers.tryo
import net.liftweb.util.Props
+
import scala.concurrent.ExecutionContext.Implicits.global
import scala.collection.immutable.Nil
import scala.collection.mutable.ArrayBuffer
@@ -1144,7 +1145,7 @@ trait APIMethods200 {
- val getTransactionTypesIsPublic = Props.getBool("apiOptions.getTransactionTypesIsPublic", true)
+ val getTransactionTypesIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getTransactionTypesIsPublic", true)
resourceDocs += ResourceDoc(
@@ -1271,7 +1272,7 @@ trait APIMethods200 {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-request-types" ::
TransactionRequestType(transactionRequestType) :: "transaction-requests" :: Nil JsonPost json -> _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
/* TODO:
* check if user has access using the view that is given (now it checks if user has access to owner view), will need some new permissions for transaction requests
@@ -1348,7 +1349,7 @@ trait APIMethods200 {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-request-types" ::
TransactionRequestType(transactionRequestType) :: "transaction-requests" :: TransactionRequestId(transReqId) :: "challenge" :: Nil JsonPost json -> _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
_ <- cc.user ?~! ErrorMessages.UserNotLoggedIn
_ <- tryo(assert(isValidID(accountId.value)))?~! ErrorMessages.InvalidAccountIdFormat
@@ -1437,7 +1438,7 @@ trait APIMethods200 {
lazy val getTransactionRequests: OBPEndpoint = {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-requests" :: Nil JsonGet _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
u <- cc.user ?~! UserNotLoggedIn
_ <- Bank(bankId) ?~! BankNotFound
@@ -1562,7 +1563,7 @@ trait APIMethods200 {
lazy val createMeeting: OBPEndpoint = {
case "banks" :: BankId(bankId) :: "meetings" :: Nil JsonPost json -> _ => {
cc =>
- if (Props.getBool("meeting.tokbox_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("meeting.tokbox_enabled", false)) {
for {
// TODO use these keys to get session and tokens from tokbox
_ <- Props.get("meeting.tokbox_api_key") ~> APIFailure(MeetingApiKeyNotConfigured, 403)
@@ -1619,7 +1620,7 @@ trait APIMethods200 {
lazy val getMeetings: OBPEndpoint = {
case "banks" :: BankId(bankId) :: "meetings" :: Nil JsonGet _ => {
cc =>
- if (Props.getBool("meeting.tokbox_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("meeting.tokbox_enabled", false)) {
for {
_ <- cc.user ?~! ErrorMessages.UserNotLoggedIn
_ <- Bank(bankId) ?~! BankNotFound
@@ -1677,7 +1678,7 @@ trait APIMethods200 {
lazy val getMeeting: OBPEndpoint = {
case "banks" :: BankId(bankId) :: "meetings" :: meetingId :: Nil JsonGet _ => {
cc =>
- if (Props.getBool("meeting.tokbox_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("meeting.tokbox_enabled", false)) {
for {
u <- cc.user ?~! UserNotLoggedIn
_ <- Bank(bankId) ?~! BankNotFound
diff --git a/src/main/scala/code/api/v2_1_0/APIMethods210.scala b/src/main/scala/code/api/v2_1_0/APIMethods210.scala
index 6bbc2684a6..ef6c5a67b7 100644
--- a/src/main/scala/code/api/v2_1_0/APIMethods210.scala
+++ b/src/main/scala/code/api/v2_1_0/APIMethods210.scala
@@ -4,7 +4,7 @@ import java.text.SimpleDateFormat
import java.util.{Date, Locale}
import code.TransactionTypes.TransactionType
-import code.api.util.ApiRole
+import code.api.util.{APIUtil, ApiRole}
import code.api.util.ErrorMessages.TransactionDisabled
import code.api.v1_2_1.AmountOfMoneyJsonV121
import code.api.v1_3_0.{JSONFactory1_3_0, _}
@@ -127,7 +127,7 @@ trait APIMethods210 {
}
- val getTransactionRequestTypesIsPublic = Props.getBool("apiOptions.getTransactionRequestTypesIsPublic", true)
+ val getTransactionRequestTypesIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getTransactionRequestTypesIsPublic", true)
resourceDocs += ResourceDoc(
getTransactionRequestTypesSupportedByBank,
@@ -404,7 +404,7 @@ trait APIMethods210 {
TransactionRequestType(transactionRequestType) :: "transaction-requests" :: Nil JsonPost json -> _ => {
cc =>
for {
- _ <- booleanToBox(Props.getBool("transactionRequests_enabled", false)) ?~ TransactionDisabled
+ _ <- booleanToBox(APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) ?~ TransactionDisabled
u <- cc.user ?~ UserNotLoggedIn
_ <- tryo(assert(isValidID(accountId.value))) ?~! InvalidAccountIdFormat
_ <- tryo(assert(isValidID(bankId.value))) ?~! InvalidBankIdFormat
@@ -560,7 +560,7 @@ trait APIMethods210 {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-request-types" ::
TransactionRequestType(transactionRequestType) :: "transaction-requests" :: TransactionRequestId(transReqId) :: "challenge" :: Nil JsonPost json -> _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
// Check we have a User
u: User <- cc.user ?~ UserNotLoggedIn
@@ -674,7 +674,7 @@ trait APIMethods210 {
lazy val getTransactionRequests: OBPEndpoint = {
case "banks" :: BankId(bankId) :: "accounts" :: AccountId(accountId) :: ViewId(viewId) :: "transaction-requests" :: Nil JsonGet _ => {
cc =>
- if (Props.getBool("transactionRequests_enabled", false)) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false)) {
for {
u <- cc.user ?~ UserNotLoggedIn
_ <- Bank(bankId) ?~! {BankNotFound}
@@ -1011,7 +1011,7 @@ trait APIMethods210 {
}
}
- val getTransactionTypesIsPublic = Props.getBool("apiOptions.getTransactionTypesIsPublic", true)
+ val getTransactionTypesIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getTransactionTypesIsPublic", true)
resourceDocs += ResourceDoc(
createTransactionType,
@@ -1064,7 +1064,7 @@ trait APIMethods210 {
}
- val getAtmsIsPublic = Props.getBool("apiOptions.getAtmsIsPublic", true)
+ val getAtmsIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getAtmsIsPublic", true)
resourceDocs += ResourceDoc(
getAtm,
@@ -1108,7 +1108,7 @@ trait APIMethods210 {
}
}
- val getBranchesIsPublic = Props.getBool("apiOptions.getBranchesIsPublic", true)
+ val getBranchesIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getBranchesIsPublic", true)
resourceDocs += ResourceDoc(
getBranch,
@@ -1156,7 +1156,7 @@ trait APIMethods210 {
}
}
- val getProductsIsPublic = Props.getBool("apiOptions.getProductsIsPublic", true)
+ val getProductsIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getProductsIsPublic", true)
resourceDocs += ResourceDoc(
@@ -1542,7 +1542,7 @@ trait APIMethods210 {
for {
u <- cc.user ?~ UserNotLoggedIn
_ <- booleanToBox(
- hasEntitlement("", u.userId, ApiRole.canUpdateConsumerRedirectUrl) || Props.getBool("consumers_enabled_by_default", false),
+ hasEntitlement("", u.userId, ApiRole.canUpdateConsumerRedirectUrl) || APIUtil.getPropsAsBoolValue("consumers_enabled_by_default", false),
UserHasMissingRoles + CanUpdateConsumerRedirectUrl
)
postJson <- tryo {json.extract[ConsumerRedirectUrlJSON]} ?~! InvalidJsonFormat
@@ -1551,7 +1551,7 @@ trait APIMethods210 {
//only the developer that created the Consumer should be able to edit it
_ <- tryo(assert(consumer.createdByUserId.equals(cc.user.openOrThrowException(attemptedToOpenAnEmptyBox).userId)))?~! UserNoPermissionUpdateConsumer
//update the redirectURL and isactive (set to false when change redirectUrl) field in consumer table
- updatedConsumer <- Consumers.consumers.vend.updateConsumer(consumer.id.get, None, None, Some(Props.getBool("consumers_enabled_by_default", false)), None, None, None, None, Some(postJson.redirect_url), None) ?~! UpdateConsumerError
+ updatedConsumer <- Consumers.consumers.vend.updateConsumer(consumer.id.get, None, None, Some(APIUtil.getPropsAsBoolValue("consumers_enabled_by_default", false)), None, None, None, None, Some(postJson.redirect_url), None) ?~! UpdateConsumerError
} yield {
val json = JSONFactory210.createConsumerJSON(updatedConsumer)
createdJsonResponse(Extraction.decompose(json))
diff --git a/src/main/scala/code/api/v3_0_0/APIMethods300.scala b/src/main/scala/code/api/v3_0_0/APIMethods300.scala
index 0cff626941..eb695c3b5e 100644
--- a/src/main/scala/code/api/v3_0_0/APIMethods300.scala
+++ b/src/main/scala/code/api/v3_0_0/APIMethods300.scala
@@ -5,7 +5,7 @@ import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
import code.api.util.APIUtil.{canGetAtm, _}
import code.api.util.ApiRole._
import code.api.util.ErrorMessages._
-import code.api.util.{ApiRole, CallContext, ErrorMessages}
+import code.api.util.{APIUtil, ApiRole, CallContext, ErrorMessages}
import code.api.v2_0_0.JSONFactory200
import code.api.v3_0_0.JSONFactory300._
import code.atms.Atms.AtmId
@@ -962,7 +962,7 @@ trait APIMethods300 {
- val getBranchesIsPublic = Props.getBool("apiOptions.getBranchesIsPublic", true)
+ val getBranchesIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getBranchesIsPublic", true)
resourceDocs += ResourceDoc(
getBranch,
@@ -1096,7 +1096,7 @@ trait APIMethods300 {
}
}
- val getAtmsIsPublic = Props.getBool("apiOptions.getAtmsIsPublic", true)
+ val getAtmsIsPublic = APIUtil.getPropsAsBoolValue("apiOptions.getAtmsIsPublic", true)
resourceDocs += ResourceDoc(
getAtm,
diff --git a/src/main/scala/code/bankconnectors/Connector.scala b/src/main/scala/code/bankconnectors/Connector.scala
index d5ca1caacb..c913ca1145 100644
--- a/src/main/scala/code/bankconnectors/Connector.scala
+++ b/src/main/scala/code/bankconnectors/Connector.scala
@@ -569,7 +569,7 @@ trait Connector extends MdcLoggable{
// i.e. if we are certain that saveTransaction will be honored immediately by the backend, then transaction_status_scheduler_delay
// can be empty in the props file. Otherwise, the status will be set to STATUS_PENDING
// and getTransactionRequestStatusesImpl needs to be run periodically to update the transaction request status.
- if (Props.getLong("transaction_status_scheduler_delay").isEmpty )
+ if (APIUtil.getPropsAsLongValue("transaction_status_scheduler_delay").isEmpty )
TransactionRequestStatus.COMPLETED
else
TransactionRequestStatus.PENDING
diff --git a/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala b/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala
index b5df4e19de..42ef1925a5 100644
--- a/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala
+++ b/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala
@@ -25,9 +25,10 @@ Berlin 13359, Germany
import java.text.SimpleDateFormat
import java.util.{Date, Locale, UUID}
+
import code.api.util.ErrorMessages._
import code.accountholder.AccountHolders
-import code.api.util.{ErrorMessages, CallContext}
+import code.api.util.{APIUtil, CallContext, ErrorMessages}
import code.api.v2_1_0.TransactionRequestCommonBodyJSON
import code.bankconnectors.vJune2017.AccountRule
import code.bankconnectors.vMar2017.{InboundAdapterInfoInternal, KafkaMappedConnector_vMar2017}
@@ -480,9 +481,9 @@ object KafkaMappedConnector extends Connector with KafkaHelper with MdcLoggable
account <- getBankAccountType(bankId, accountId)
} {
spawn{
- val useMessageQueue = Props.getBool("messageQueue.updateBankAccountsTransaction", false)
+ val useMessageQueue = APIUtil.getPropsAsBoolValue("messageQueue.updateBankAccountsTransaction", false)
val outDatedTransactions = Box!!account.lastUpdate match {
- case Full(l) => now after time(l.getTime + hours(Props.getInt("messageQueue.updateTransactionsInterval", 1)))
+ case Full(l) => now after time(l.getTime + hours(APIUtil.getPropsAsIntValue("messageQueue.updateTransactionsInterval", 1)))
case _ => true
}
//if(outDatedTransactions && useMessageQueue) {
@@ -502,7 +503,7 @@ object KafkaMappedConnector extends Connector with KafkaHelper with MdcLoggable
// Get one counterparty by the Counterparty Id
override def getCounterpartyByCounterpartyId(counterpartyId: CounterpartyId): Box[CounterpartyTrait] = {
- if (Props.getBool("get_counterparties_from_OBP_DB", true)) {
+ if (APIUtil.getPropsAsBoolValue("get_counterparties_from_OBP_DB", true)) {
Counterparties.counterparties.vend.getCounterparty(counterpartyId.value)
} else {
val req = Map(
@@ -527,7 +528,7 @@ object KafkaMappedConnector extends Connector with KafkaHelper with MdcLoggable
override def getCounterpartyByIban(iban: String): Box[CounterpartyTrait] = {
- if (Props.getBool("get_counterparties_from_OBP_DB", true)) {
+ if (APIUtil.getPropsAsBoolValue("get_counterparties_from_OBP_DB", true)) {
Counterparties.counterparties.vend.getCounterpartyByIban(iban)
} else {
val req = Map(
diff --git a/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala b/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala
index 8658ce3f90..9bfb731486 100644
--- a/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala
+++ b/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala
@@ -666,9 +666,9 @@ object KafkaMappedConnector_JVMcompatible extends Connector with KafkaHelper wit
account <- getBankAccountType(bankId, accountId)
} {
spawn{
- val useMessageQueue = Props.getBool("messageQueue.updateBankAccountsTransaction", false)
+ val useMessageQueue = APIUtil.getPropsAsBoolValue("messageQueue.updateBankAccountsTransaction", false)
val outDatedTransactions = Box!!account.lastUpdate match {
- case Full(l) => now after time(l.getTime + hours(Props.getInt("messageQueue.updateTransactionsInterval", 1)))
+ case Full(l) => now after time(l.getTime + hours(APIUtil.getPropsAsIntValue("messageQueue.updateTransactionsInterval", 1)))
case _ => true
}
//if(outDatedTransactions && useMessageQueue) {
diff --git a/src/main/scala/code/bankconnectors/LocalMappedConnector.scala b/src/main/scala/code/bankconnectors/LocalMappedConnector.scala
index 1b117efaf5..d0d8c593be 100644
--- a/src/main/scala/code/bankconnectors/LocalMappedConnector.scala
+++ b/src/main/scala/code/bankconnectors/LocalMappedConnector.scala
@@ -265,9 +265,9 @@ object LocalMappedConnector extends Connector with MdcLoggable {
account <- getBankAccount(bankId, accountId).map(_.asInstanceOf[MappedBankAccount])
} {
Future{
- val useMessageQueue = Props.getBool("messageQueue.updateBankAccountsTransaction", false)
+ val useMessageQueue = APIUtil.getPropsAsBoolValue("messageQueue.updateBankAccountsTransaction", false)
val outDatedTransactions = Box!!account.accountLastUpdate.get match {
- case Full(l) => now after time(l.getTime + hours(Props.getInt("messageQueue.updateTransactionsInterval", 1)))
+ case Full(l) => now after time(l.getTime + hours(APIUtil.getPropsAsIntValue("messageQueue.updateTransactionsInterval", 1)))
case _ => true
}
if(outDatedTransactions && useMessageQueue) {
diff --git a/src/main/scala/code/bankconnectors/LocalRecordConnector.scala b/src/main/scala/code/bankconnectors/LocalRecordConnector.scala
index 92ba5e630d..3abfae5abb 100644
--- a/src/main/scala/code/bankconnectors/LocalRecordConnector.scala
+++ b/src/main/scala/code/bankconnectors/LocalRecordConnector.scala
@@ -2,8 +2,9 @@ package code.bankconnectors
import java.text.SimpleDateFormat
import java.util.{Date, TimeZone, UUID}
+
import code.api.util.ErrorMessages._
-import code.api.util.CallContext
+import code.api.util.{APIUtil, CallContext}
import code.api.v2_1_0.TransactionRequestCommonBodyJSON
import code.bankconnectors.vMar2017.InboundAdapterInfoInternal
import code.branches.Branches.{Branch, BranchT}
@@ -338,8 +339,8 @@ private object LocalRecordConnector extends Connector with MdcLoggable {
private def updateAccountTransactions(bank: HostedBank, account: Account): Unit = {
Future {
- val useMessageQueue = Props.getBool("messageQueue.updateBankAccountsTransaction", false)
- val outDatedTransactions = now after time(account.accountLastUpdate.get.getTime + hours(Props.getInt("messageQueue.updateTransactionsInterval", 1)))
+ val useMessageQueue = APIUtil.getPropsAsBoolValue("messageQueue.updateBankAccountsTransaction", false)
+ val outDatedTransactions = now after time(account.accountLastUpdate.get.getTime + hours(APIUtil.getPropsAsIntValue("messageQueue.updateTransactionsInterval", 1)))
if(outDatedTransactions && useMessageQueue) {
UpdatesRequestSender.sendMsg(UpdateBankAccount(account.accountNumber.get, bank.national_identifier.get))
}
diff --git a/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala b/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala
index 6b371c4325..1e7c459519 100644
--- a/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala
+++ b/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala
@@ -531,9 +531,9 @@ object ObpJvmMappedConnector extends Connector with MdcLoggable {
account <- getBankAccountType(bankId, accountId)
} {
spawn{
- val useMessageQueue = Props.getBool("messageQueue.updateBankAccountsTransaction", false)
+ val useMessageQueue = APIUtil.getPropsAsBoolValue("messageQueue.updateBankAccountsTransaction", false)
val outDatedTransactions = Box!!account.lastUpdate match {
- case Full(l) => now after time(l.getTime + hours(Props.getInt("messageQueue.updateTransactionsInterval", 1)))
+ case Full(l) => now after time(l.getTime + hours(APIUtil.getPropsAsIntValue("messageQueue.updateTransactionsInterval", 1)))
case _ => true
}
//if(outDatedTransactions && useMessageQueue) {
diff --git a/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala b/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala
index f625aea74d..34a8db90cc 100644
--- a/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala
+++ b/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala
@@ -25,10 +25,11 @@ Berlin 13359, Germany
import java.text.SimpleDateFormat
import java.util.{Date, Locale, UUID}
+
import code.api.util.ErrorMessages._
import code.accountholder.AccountHolders
import code.api.util.APIUtil.MessageDoc
-import code.api.util.{ErrorMessages, CallContext}
+import code.api.util.{APIUtil, CallContext, ErrorMessages}
import code.api.v2_1_0._
import code.bankconnectors._
import code.branches.Branches.{Branch, BranchT}
@@ -890,7 +891,7 @@ trait KafkaMappedConnector_vMar2017 extends Connector with KafkaHelper with MdcL
)
override def getCounterpartyByCounterpartyId(counterpartyId: CounterpartyId): Box[CounterpartyTrait] = {
- if (Props.getBool("get_counterparties_from_OBP_DB", true)) {
+ if (APIUtil.getPropsAsBoolValue("get_counterparties_from_OBP_DB", true)) {
Counterparties.counterparties.vend.getCounterparty(counterpartyId.value)
} else {
val req = OutboundCounterpartyByCounterpartyIdBase(
@@ -946,7 +947,7 @@ trait KafkaMappedConnector_vMar2017 extends Connector with KafkaHelper with MdcL
)
override def getCounterpartyByIban(iban: String): Box[CounterpartyTrait] = {
- if (Props.getBool("get_counterparties_from_OBP_DB", true)) {
+ if (APIUtil.getPropsAsBoolValue("get_counterparties_from_OBP_DB", true)) {
Counterparties.counterparties.vend.getCounterpartyByIban(iban)
} else {
val req = OutboundCounterpartyByIbanBase(
diff --git a/src/main/scala/code/consumer/ConsumerProvider.scala b/src/main/scala/code/consumer/ConsumerProvider.scala
index 5a3c506c0f..a70fcb6691 100644
--- a/src/main/scala/code/consumer/ConsumerProvider.scala
+++ b/src/main/scala/code/consumer/ConsumerProvider.scala
@@ -1,9 +1,11 @@
package code.consumer
+import code.api.util.APIUtil
import code.model.{AppType, Consumer, MappedConsumersProvider}
import code.remotedata.RemotedataConsumers
import net.liftweb.common.Box
import net.liftweb.util.{Props, SimpleInjector}
+
import scala.concurrent.Future
object Consumers extends SimpleInjector {
@@ -11,7 +13,7 @@ object Consumers extends SimpleInjector {
val consumers = new Inject(buildOne _) {}
def buildOne: ConsumersProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedConsumersProvider
case true => RemotedataConsumers // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/customer/CustomerProvider.scala b/src/main/scala/code/customer/CustomerProvider.scala
index b1e7320ba6..d96af73066 100644
--- a/src/main/scala/code/customer/CustomerProvider.scala
+++ b/src/main/scala/code/customer/CustomerProvider.scala
@@ -3,6 +3,7 @@ package code.customer
import java.lang
import java.util.Date
+import code.api.util.APIUtil
import code.model.{BankId, User}
import code.remotedata.RemotedataCustomers
import net.liftweb.common.Box
@@ -15,7 +16,7 @@ object Customer extends SimpleInjector {
val customerProvider = new Inject(buildOne _) {}
def buildOne: CustomerProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedCustomerProvider
case true => RemotedataCustomers // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/entitlement/Entilement.scala b/src/main/scala/code/entitlement/Entilement.scala
index c1d823936f..14db6afb09 100644
--- a/src/main/scala/code/entitlement/Entilement.scala
+++ b/src/main/scala/code/entitlement/Entilement.scala
@@ -1,6 +1,7 @@
package code.entitlement
+import code.api.util.APIUtil
import code.remotedata.RemotedataEntitlements
import net.liftweb.common.Box
import net.liftweb.util.{Props, SimpleInjector}
@@ -12,7 +13,7 @@ object Entitlement extends SimpleInjector {
val entitlement = new Inject(buildOne _) {}
def buildOne: EntitlementProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedEntitlementsProvider
case true => RemotedataEntitlements // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/kafka/KafkaConfig.scala b/src/main/scala/code/kafka/KafkaConfig.scala
index 6607aad551..dca6bf7c52 100644
--- a/src/main/scala/code/kafka/KafkaConfig.scala
+++ b/src/main/scala/code/kafka/KafkaConfig.scala
@@ -2,6 +2,7 @@ package code.kafka
import java.util.UUID
+import code.api.util.APIUtil
import net.liftweb.util.Props
import scala.concurrent.duration.{FiniteDuration, MILLISECONDS}
@@ -13,7 +14,7 @@ trait KafkaConfig {
val bootstrapServers = Props.get("kafka.bootstrap_hosts")openOr("localhost:9092")
- val partitions = Props.getInt("kafka.partitions")openOr(10)
+ val partitions = APIUtil.getPropsAsIntValue("kafka.partitions", 10)
val clientId = UUID.randomUUID().toString
@@ -22,5 +23,5 @@ trait KafkaConfig {
val autoOffsetResetConfig = "earliest"
val maxWakeups = 50
//TODO should be less then container's timeout
- val completionTimeout = FiniteDuration(Props.getInt("kafka.akka.timeout", 2)*1000 - 450, MILLISECONDS)
+ val completionTimeout = FiniteDuration(APIUtil.getPropsAsIntValue("kafka.akka.timeout", 2)*1000 - 450, MILLISECONDS)
}
\ No newline at end of file
diff --git a/src/main/scala/code/metadata/comments/Comments.scala b/src/main/scala/code/metadata/comments/Comments.scala
index 174fd75e91..27a5aaf54f 100644
--- a/src/main/scala/code/metadata/comments/Comments.scala
+++ b/src/main/scala/code/metadata/comments/Comments.scala
@@ -2,6 +2,7 @@ package code.metadata.comments
import java.util.Date
+import code.api.util.APIUtil
import code.model._
import code.remotedata.RemotedataComments
import net.liftweb.common.Box
@@ -12,7 +13,7 @@ object Comments extends SimpleInjector {
val comments = new Inject(buildOne _) {}
def buildOne: Comments =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedComments
case true => RemotedataComments // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metadata/counterparties/Counterparties.scala b/src/main/scala/code/metadata/counterparties/Counterparties.scala
index 86bccb2c18..6259d29734 100644
--- a/src/main/scala/code/metadata/counterparties/Counterparties.scala
+++ b/src/main/scala/code/metadata/counterparties/Counterparties.scala
@@ -2,6 +2,7 @@ package code.metadata.counterparties
import java.util.Date
+import code.api.util.APIUtil
import code.model._
import code.remotedata.RemotedataCounterparties
import net.liftweb.common.Box
@@ -12,7 +13,7 @@ object Counterparties extends SimpleInjector {
val counterparties = new Inject(buildOne _) {}
def buildOne: Counterparties =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MapperCounterparties
case true => RemotedataCounterparties // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metadata/narrative/Narrative.scala b/src/main/scala/code/metadata/narrative/Narrative.scala
index c33795d054..b821d25279 100644
--- a/src/main/scala/code/metadata/narrative/Narrative.scala
+++ b/src/main/scala/code/metadata/narrative/Narrative.scala
@@ -1,5 +1,6 @@
package code.metadata.narrative
+import code.api.util.APIUtil
import code.model.{AccountId, BankId, TransactionId}
import code.remotedata.RemotedataNarratives
import net.liftweb.util.{Props, SimpleInjector}
@@ -9,7 +10,7 @@ object Narrative extends SimpleInjector {
val narrative = new Inject(buildOne _) {}
def buildOne: Narrative =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedNarratives
case true => RemotedataNarratives // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metadata/tags/Tags.scala b/src/main/scala/code/metadata/tags/Tags.scala
index 16f7e36c3a..09272c5e97 100644
--- a/src/main/scala/code/metadata/tags/Tags.scala
+++ b/src/main/scala/code/metadata/tags/Tags.scala
@@ -2,6 +2,7 @@ package code.metadata.tags
import java.util.Date
+import code.api.util.APIUtil
import code.model._
import code.remotedata.RemotedataTags
import net.liftweb.common.Box
@@ -12,7 +13,7 @@ object Tags extends SimpleInjector {
val tags = new Inject(buildOne _) {}
def buildOne: Tags =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedTags
case true => RemotedataTags // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metadata/transactionimages/TransactionImages.scala b/src/main/scala/code/metadata/transactionimages/TransactionImages.scala
index 915adc1a96..d0f7b2ab86 100644
--- a/src/main/scala/code/metadata/transactionimages/TransactionImages.scala
+++ b/src/main/scala/code/metadata/transactionimages/TransactionImages.scala
@@ -2,6 +2,7 @@ package code.metadata.transactionimages
import java.util.Date
+import code.api.util.APIUtil
import code.model._
import code.remotedata.RemotedataTransactionImages
import net.liftweb.common.Box
@@ -12,7 +13,7 @@ object TransactionImages extends SimpleInjector {
val transactionImages = new Inject(buildOne _) {}
def buildOne: TransactionImages =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MapperTransactionImages
case true => RemotedataTransactionImages // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metadata/wheretags/WhereTags.scala b/src/main/scala/code/metadata/wheretags/WhereTags.scala
index 5b9f5b7e14..ead796fbd4 100644
--- a/src/main/scala/code/metadata/wheretags/WhereTags.scala
+++ b/src/main/scala/code/metadata/wheretags/WhereTags.scala
@@ -2,6 +2,7 @@ package code.metadata.wheretags
import java.util.Date
+import code.api.util.APIUtil
import code.model._
import code.remotedata.RemotedataWhereTags
import net.liftweb.common.Box
@@ -12,7 +13,7 @@ object WhereTags extends SimpleInjector {
val whereTags = new Inject(buildOne _) {}
def buildOne: WhereTags =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MapperWhereTags
case true => RemotedataWhereTags // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metrics/APIMetrics.scala b/src/main/scala/code/metrics/APIMetrics.scala
index c889975be0..5c37a48e98 100644
--- a/src/main/scala/code/metrics/APIMetrics.scala
+++ b/src/main/scala/code/metrics/APIMetrics.scala
@@ -2,6 +2,7 @@ package code.metrics
import java.util.{Calendar, Date}
+import code.api.util.APIUtil
import code.bankconnectors.OBPQueryParam
import code.remotedata.RemotedataMetrics
import net.liftweb.util.{Props, SimpleInjector}
@@ -11,11 +12,11 @@ object APIMetrics extends SimpleInjector {
val apiMetrics = new Inject(buildOne _) {}
def buildOne: APIMetrics =
- Props.getBool("allow_elasticsearch", false) &&
- Props.getBool("allow_elasticsearch_metrics", false) match {
+ APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) &&
+ APIUtil.getPropsAsBoolValue("allow_elasticsearch_metrics", false) match {
// case false => MappedMetrics
case false =>
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedMetrics
case true => RemotedataMetrics // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metrics/ConnectorMetricsProvider.scala b/src/main/scala/code/metrics/ConnectorMetricsProvider.scala
index bea2a18647..488ddb5347 100644
--- a/src/main/scala/code/metrics/ConnectorMetricsProvider.scala
+++ b/src/main/scala/code/metrics/ConnectorMetricsProvider.scala
@@ -2,6 +2,7 @@ package code.metrics
import java.util.{Calendar, Date}
+import code.api.util.APIUtil
import code.bankconnectors.OBPQueryParam
import code.remotedata.RemotedataConnectorMetrics
import net.liftweb.util.{Props, SimpleInjector}
@@ -11,7 +12,7 @@ object ConnectorMetricsProvider extends SimpleInjector {
val metrics = new Inject(buildOne _) {}
def buildOne: ConnectorMetricsProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => ConnectorMetrics
case true => RemotedataConnectorMetrics // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/metrics/ElasticsearchMetrics.scala b/src/main/scala/code/metrics/ElasticsearchMetrics.scala
index 2b9c077e58..504186b21e 100644
--- a/src/main/scala/code/metrics/ElasticsearchMetrics.scala
+++ b/src/main/scala/code/metrics/ElasticsearchMetrics.scala
@@ -2,6 +2,7 @@ package code.metrics
import java.util.Date
+import code.api.util.APIUtil
import code.bankconnectors._
import code.search.elasticsearchMetrics
import net.liftweb.mapper._
@@ -12,7 +13,7 @@ object ElasticsearchMetrics extends APIMetrics {
val es = new elasticsearchMetrics
override def saveMetric(userId: String, url: String, date: Date, duration: Long, userName: String, appName: String, developerEmail: String, consumerId: String, implementedByPartialFunction: String, implementedInVersion: String, verb: String, correlationId: String): Unit = {
- if (Props.getBool("allow_elasticsearch", false) && Props.getBool("allow_elasticsearch_metrics", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) && APIUtil.getPropsAsBoolValue("allow_elasticsearch_metrics", false) ) {
//TODO ,need to be fixed now add more parameters
es.indexMetric(userId, url, date, duration, userName, appName, developerEmail, correlationId)
}
diff --git a/src/main/scala/code/model/OAuth.scala b/src/main/scala/code/model/OAuth.scala
index 234553a9cf..08af699f8a 100644
--- a/src/main/scala/code/model/OAuth.scala
+++ b/src/main/scala/code/model/OAuth.scala
@@ -32,6 +32,7 @@ Berlin 13359, Germany
package code.model
import java.util.Date
+import code.api.util.APIUtil
import code.token.TokensProvider
import code.consumer.{Consumers, ConsumersProvider}
import code.model.AppType.{Mobile, Web}
@@ -309,7 +310,7 @@ class Consumer extends LongKeyedMapper[Consumer] with CreatedUpdated{
object key extends MappedString(this, 250)
object secret extends MappedString(this, 250)
object isActive extends MappedBoolean(this){
- override def defaultValue = Props.getBool("consumers_enabled_by_default", false)
+ override def defaultValue = APIUtil.getPropsAsBoolValue("consumers_enabled_by_default", false)
}
object name extends MappedString(this, 100){
override def validations = minLength3(this) _ :: super.validations
diff --git a/src/main/scala/code/model/dataAccess/AuthUser.scala b/src/main/scala/code/model/dataAccess/AuthUser.scala
index 82589826f6..453b0cacab 100644
--- a/src/main/scala/code/model/dataAccess/AuthUser.scala
+++ b/src/main/scala/code/model/dataAccess/AuthUser.scala
@@ -257,7 +257,7 @@ import net.liftweb.util.Helpers._
override def signupFields = List(firstName, lastName, email, username, password)
// If we want to validate email addresses set this to false
- override def skipEmailValidation = Props.getBool("authUser.skipEmailValidation", true)
+ override def skipEmailValidation = APIUtil.getPropsAsBoolValue("authUser.skipEmailValidation", true)
override def loginXhtml = {
val loginXml = Templates(List("templates-hidden","_login")).map({
@@ -516,7 +516,7 @@ import net.liftweb.util.Helpers._
case Full(user) if (user.getProvider() != Props.get("hostname","")) =>
connector match {
- case Helper.matchAnyKafka() if ( Props.getBool("kafka.user.authentication", false) &&
+ case Helper.matchAnyKafka() if ( APIUtil.getPropsAsBoolValue("kafka.user.authentication", false) &&
! LoginAttempt.userIsLocked(username) ) =>
val userId = for { kafkaUser <- getUserFromConnector(username, password)
kafkaUserId <- tryo{kafkaUser.user} } yield {
@@ -529,7 +529,7 @@ import net.liftweb.util.Helpers._
LoginAttempt.incrementBadLoginAttempts(username)
Empty
}
- case "obpjvm" if ( Props.getBool("obpjvm.user.authentication", false) &&
+ case "obpjvm" if ( APIUtil.getPropsAsBoolValue("obpjvm.user.authentication", false) &&
! LoginAttempt.userIsLocked(username) ) =>
val userId = for { obpjvmUser <- getUserFromConnector(username, password)
obpjvmUserId <- tryo{obpjvmUser.user} } yield {
@@ -720,8 +720,8 @@ import net.liftweb.util.Helpers._
// If not found locally, try to authenticate user via Kafka, if enabled in props
case Empty if (connector.startsWith("kafka") || connector == "obpjvm") &&
- (Props.getBool("kafka.user.authentication", false) ||
- Props.getBool("obpjvm.user.authentication", false)) =>
+ (APIUtil.getPropsAsBoolValue("kafka.user.authentication", false) ||
+ APIUtil.getPropsAsBoolValue("obpjvm.user.authentication", false)) =>
val preLoginState = capturePreLoginState()
info("login redir: " + loginRedirect.get)
val redir = loginRedirect.get match {
diff --git a/src/main/scala/code/model/dataAccess/MongoConfig.scala b/src/main/scala/code/model/dataAccess/MongoConfig.scala
index 39b12233d6..721eaa700a 100644
--- a/src/main/scala/code/model/dataAccess/MongoConfig.scala
+++ b/src/main/scala/code/model/dataAccess/MongoConfig.scala
@@ -31,6 +31,7 @@ Berlin 13359, Germany
*/
package code.model.dataAccess
+import code.api.util.APIUtil
import code.metadata.narrative.OBPNarrativeInit
import code.metadata.wheretags.OBPWhereTagInit
import com.mongodb.MongoClient
@@ -49,7 +50,7 @@ object MongoConfig {
val srvr = new ServerAddress(
Props.get("mongo.host", "localhost"),
- Props.getInt("mongo.port", 27017)
+ APIUtil.getPropsAsIntValue("mongo.port", 27017)
)
val defaultDatabase = Props.mode match {
case Props.RunModes.Test => "test"
diff --git a/src/main/scala/code/nonce/NonceProvider.scala b/src/main/scala/code/nonce/NonceProvider.scala
index 6aa9d5d013..5e3043e1df 100644
--- a/src/main/scala/code/nonce/NonceProvider.scala
+++ b/src/main/scala/code/nonce/NonceProvider.scala
@@ -2,6 +2,7 @@ package code.nonce
import java.util.Date
+import code.api.util.APIUtil
import code.model.{MappedNonceProvider, Nonce}
import code.remotedata.RemotedataNonces
import net.liftweb.common.Box
@@ -15,7 +16,7 @@ object Nonces extends SimpleInjector {
val nonces = new Inject(buildOne _) {}
def buildOne: NoncesProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedNonceProvider
case true => RemotedataNonces // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/search/search.scala b/src/main/scala/code/search/search.scala
index 8007479ace..4ac566c3c8 100644
--- a/src/main/scala/code/search/search.scala
+++ b/src/main/scala/code/search/search.scala
@@ -14,11 +14,11 @@ import Defaults._
import net.liftweb.json
import java.util.Date
+import code.api.util.APIUtil
import org.elasticsearch.common.settings.Settings
import com.sksamuel.elastic4s.TcpClient
import com.sksamuel.elastic4s.mappings.FieldType._
import com.sksamuel.elastic4s.ElasticDsl._
-
import net.liftweb.http.provider.HTTPCookie
import net.liftweb.json.JsonAST
@@ -44,7 +44,7 @@ class elasticsearch extends MdcLoggable {
def searchProxy(userId: String, queryString: String): LiftResponse = {
//println("-------------> " + esHost + ":" + esPortHTTP + "/" + esIndex + "/" + queryString)
- if (Props.getBool("allow_elasticsearch", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) ) {
val request = constructQuery(userId, getParameters(queryString))
val response = getAPIResponse(request)
ESJsonResponse(response.body, ("Access-Control-Allow-Origin", "*") :: Nil, Nil, response.code)
@@ -54,7 +54,7 @@ class elasticsearch extends MdcLoggable {
}
def searchProxyV300(userId: String, uri: String, body: String): LiftResponse = {
- if (Props.getBool("allow_elasticsearch", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) ) {
val httpHost = ("http://" + esHost + ":" + esPortHTTP)
val esUrl = s"${httpHost}${uri.replaceAll("\"" , "")}"
logger.debug(esUrl)
@@ -151,7 +151,7 @@ class elasticsearchMetrics extends elasticsearch {
var client:TcpClient = null
- if (Props.getBool("allow_elasticsearch", false) && Props.getBool("allow_elasticsearch_metrics", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) && APIUtil.getPropsAsBoolValue("allow_elasticsearch_metrics", false) ) {
val settings = Settings.builder().put("cluster.name", Props.get("es.cluster.name", "elasticsearch")).build()
client = TcpClient.transport(settings, "elasticsearch://" + esHost + ":" + esPortTCP + ",")
try {
@@ -175,7 +175,7 @@ class elasticsearchMetrics extends elasticsearch {
}
def indexMetric(userId: String, url: String, date: Date, duration: Long, userName: String, appName: String, developerEmail: String, correlationId: String) {
- if (Props.getBool("allow_elasticsearch", false) && Props.getBool("allow_elasticsearch_metrics", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) && APIUtil.getPropsAsBoolValue("allow_elasticsearch_metrics", false) ) {
try {
client.execute {
indexInto(esIndex / "request") fields (
@@ -204,7 +204,7 @@ class elasticsearchWarehouse extends elasticsearch {
override val esPortHTTP = Props.get("es.warehouse.port.http","9200")
override val esIndex = Props.get("es.warehouse.index", "warehouse")
var client:TcpClient = null
- if (Props.getBool("allow_elasticsearch", false) && Props.getBool("allow_elasticsearch_warehouse", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) && APIUtil.getPropsAsBoolValue("allow_elasticsearch_warehouse", false) ) {
val settings = Settings.builder().put("cluster.name", Props.get("es.cluster.name", "elasticsearch")).build()
client = TcpClient.transport(settings, "elasticsearch://" + esHost + ":" + esPortTCP + ",")
}
@@ -221,7 +221,7 @@ class elasticsearchOBP extends elasticsearch {
var client:TcpClient = null
- if (Props.getBool("allow_elasticsearch", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) ) {
client = TcpClient.transport("elasticsearch://" + esHost + ":" + esPortTCP + ",")
client.execute {
@@ -251,7 +251,7 @@ class elasticsearchOBP extends elasticsearch {
// Index a Transaction
// Put into a index that has the viewId and version in the name.
def indexTransaction(viewId: String, transaction: TransactionJSON) {
- if (Props.getBool("allow_elasticsearch", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) ) {
client.execute {
index into transactionIndex / "transaction" fields (
"viewId" -> viewId,
@@ -264,7 +264,7 @@ class elasticsearchOBP extends elasticsearch {
// Index an Account
// Put into a index that has the viewId and version in the name.
def indexAccount(viewId: String, account: AccountJSON) {
- if (Props.getBool("allow_elasticsearch", false) ) {
+ if (APIUtil.getPropsAsBoolValue("allow_elasticsearch", false) ) {
client.execute {
index into accountIndex / "account" fields (
"viewId" -> viewId,
diff --git a/src/main/scala/code/snippet/ConsumerRegistration.scala b/src/main/scala/code/snippet/ConsumerRegistration.scala
index 3a1959dc06..870fad3624 100644
--- a/src/main/scala/code/snippet/ConsumerRegistration.scala
+++ b/src/main/scala/code/snippet/ConsumerRegistration.scala
@@ -31,7 +31,7 @@ Berlin 13359, Germany
*/
package code.snippet
-import code.api.util.ErrorMessages
+import code.api.util.{APIUtil, ErrorMessages}
import code.model._
import code.model.dataAccess.AuthUser
import net.liftweb.common.{Empty, Full}
@@ -202,7 +202,7 @@ class ConsumerRegistration extends MdcLoggable {
} yield {
// Only send consumer key / secret by email if we explicitly want that.
- val sendSensitive : Boolean = Props.getBool("mail.api.consumer.registered.notification.send.sensistive", false)
+ val sendSensitive : Boolean = APIUtil.getPropsAsBoolValue("mail.api.consumer.registered.notification.send.sensistive", false)
val consumerKeyOrMessage : String = if (sendSensitive) registered.key.get else "Configured so sensitive data is not sent by email (Consumer Key)."
val consumerSecretOrMessage : String = if (sendSensitive) registered.secret.get else "Configured so sensitive data is not sent by email (Consumer Secret)."
diff --git a/src/main/scala/code/snippet/Login.scala b/src/main/scala/code/snippet/Login.scala
index 4ca0f57808..1895bf42d9 100644
--- a/src/main/scala/code/snippet/Login.scala
+++ b/src/main/scala/code/snippet/Login.scala
@@ -33,6 +33,7 @@ Berlin 13359, Germany
package code.snippet
import code.api.OpenIdConnectConfig
+import code.api.util.APIUtil
import code.model.dataAccess.{Admin, AuthUser}
import net.liftweb.http.{S, SHtml}
import net.liftweb.util.Helpers._
@@ -96,7 +97,7 @@ class Login {
def openIdConnectButton : CssSel = {
- if(Props.getBool("allow_openidconnect", false)){
+ if(APIUtil.getPropsAsBoolValue("allow_openidconnect", false)){
val config = OpenIdConnectConfig.get()
var onclick = "getCode();"
if (config.url_login.endsWith(".js") )
@@ -116,7 +117,7 @@ class Login {
}
def openIdConnectScripts : CssSel = {
- if(Props.getBool("allow_openidconnect", false)){
+ if(APIUtil.getPropsAsBoolValue("allow_openidconnect", false)){
val config = OpenIdConnectConfig.get()
val url = config.url_login
diff --git a/src/main/scala/code/token/TokenProvider.scala b/src/main/scala/code/token/TokenProvider.scala
index f793aaad10..1a1251932d 100644
--- a/src/main/scala/code/token/TokenProvider.scala
+++ b/src/main/scala/code/token/TokenProvider.scala
@@ -2,10 +2,12 @@ package code.token
import java.util.Date
+import code.api.util.APIUtil
import code.model.{MappedTokenProvider, Token, TokenType}
import code.remotedata.RemotedataTokens
import net.liftweb.common.Box
import net.liftweb.util.{Props, SimpleInjector}
+
import scala.concurrent.Future
object Tokens extends SimpleInjector {
@@ -13,7 +15,7 @@ object Tokens extends SimpleInjector {
val tokens = new Inject(buildOne _) {}
def buildOne: TokensProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedTokenProvider
case true => RemotedataTokens // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/transactionChallenge/ExpectedChallengeAnswer.scala b/src/main/scala/code/transactionChallenge/ExpectedChallengeAnswer.scala
index c30399a651..24bd256889 100644
--- a/src/main/scala/code/transactionChallenge/ExpectedChallengeAnswer.scala
+++ b/src/main/scala/code/transactionChallenge/ExpectedChallengeAnswer.scala
@@ -1,5 +1,6 @@
package code.transactionChallenge
+import code.api.util.APIUtil
import code.remotedata.RemotedataExpectedChallengeAnswerProvider
import net.liftweb.util.{Props, SimpleInjector}
@@ -17,7 +18,7 @@ object ExpectedChallengeAnswer extends SimpleInjector {
val expectedChallengeAnswerProvider = new Inject(buildOne _) {}
def buildOne: ExpectedChallengeAnswerProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedExpectedChallengeAnswerProvider
case true => RemotedataExpectedChallengeAnswerProvider // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/transactionrequests/TransactionRequests.scala b/src/main/scala/code/transactionrequests/TransactionRequests.scala
index 7338bd53d2..49ccbc06c4 100644
--- a/src/main/scala/code/transactionrequests/TransactionRequests.scala
+++ b/src/main/scala/code/transactionrequests/TransactionRequests.scala
@@ -3,6 +3,7 @@ package code.transactionrequests
import java.util.Date
+import code.api.util.APIUtil
import code.api.v2_1_0.TransactionRequestCommonBodyJSON
import code.metadata.counterparties.CounterpartyTrait
import code.model._
@@ -84,7 +85,7 @@ object TransactionRequests extends SimpleInjector {
def buildOne: TransactionRequestProvider =
Props.get("transactionRequests_connector", "mapped") match {
- case "mapped" => Props.getBool("use_akka", false) match {
+ case "mapped" => APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedTransactionRequestProvider
case true => RemotedataTransactionRequests // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/usercustomerlinks/UserCustomerLink.scala b/src/main/scala/code/usercustomerlinks/UserCustomerLink.scala
index 39218bec57..d04c14af2e 100644
--- a/src/main/scala/code/usercustomerlinks/UserCustomerLink.scala
+++ b/src/main/scala/code/usercustomerlinks/UserCustomerLink.scala
@@ -2,6 +2,7 @@ package code.usercustomerlinks
import java.util.Date
+import code.api.util.APIUtil
import code.remotedata.RemotedataUserCustomerLinks
import net.liftweb.common.Box
import net.liftweb.util.{Props, SimpleInjector}
@@ -12,7 +13,7 @@ object UserCustomerLink extends SimpleInjector {
val userCustomerLink = new Inject(buildOne _) {}
def buildOne: UserCustomerLinkProvider =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedUserCustomerLinkProvider
case true => RemotedataUserCustomerLinks // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/users/Users.scala b/src/main/scala/code/users/Users.scala
index 7eafcbe5c6..8443afd995 100644
--- a/src/main/scala/code/users/Users.scala
+++ b/src/main/scala/code/users/Users.scala
@@ -1,5 +1,6 @@
package code.users
+import code.api.util.APIUtil
import code.entitlement.Entitlement
import code.model.User
import code.model.dataAccess.{ResourceUser, ResourceUserCaseClass}
@@ -15,7 +16,7 @@ object Users extends SimpleInjector {
val users = new Inject(buildOne _) {}
def buildOne: Users =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => LiftUsers
case true => RemotedataUsers // We will use Akka as a middleware
}
diff --git a/src/main/scala/code/util/UUIDString.scala b/src/main/scala/code/util/UUIDString.scala
index 2678408291..e643533306 100644
--- a/src/main/scala/code/util/UUIDString.scala
+++ b/src/main/scala/code/util/UUIDString.scala
@@ -1,5 +1,6 @@
package code.util
+import code.api.util.APIUtil
import net.liftweb.mapper.{MappedString, Mapper}
import net.liftweb.util.Props
@@ -12,20 +13,20 @@ class UUIDString [T <: Mapper[T]](override val fieldOwner : T) extends MappedStr
object UUIDString {
// We use 44 as a default because base64 encoding of sha256 is 44 characters long
- val MaxLength = Props.getInt("uuid_string.length", 44)
+ val MaxLength = APIUtil.getPropsAsIntValue("uuid_string.length", 44)
}
class MediumString [T <: Mapper[T]](override val fieldOwner : T) extends MappedString(fieldOwner, MediumString.MaxLength)
object MediumString {
- val MaxLength = Props.getInt("medium_string.length", 20)
+ val MaxLength = APIUtil.getPropsAsIntValue("medium_string.length", 20)
}
class AccountIdString [T <: Mapper[T]](override val fieldOwner : T) extends MappedString(fieldOwner, AccountIdString.MaxLength)
object AccountIdString {
- val MaxLength = Props.getInt("account_id.length", 64)
+ val MaxLength = APIUtil.getPropsAsIntValue("account_id.length", 64)
}
@@ -36,5 +37,5 @@ So we can store a time of day without the date e.g. 23:33 - but also go past mid
class TwentyFourHourClockString [T <: Mapper[T]](override val fieldOwner : T) extends MappedString(fieldOwner, TwentyFourHourClockString.MaxLength)
object TwentyFourHourClockString {
- val MaxLength = Props.getInt("time_string.length", 5)
+ val MaxLength = APIUtil.getPropsAsIntValue("time_string.length", 5)
}
\ No newline at end of file
diff --git a/src/main/scala/code/views/MapperViews.scala b/src/main/scala/code/views/MapperViews.scala
index ffce892408..8c577c076c 100644
--- a/src/main/scala/code/views/MapperViews.scala
+++ b/src/main/scala/code/views/MapperViews.scala
@@ -3,7 +3,7 @@ package code.views
import bootstrap.liftweb.ToSchemify
import code.accountholder.{AccountHolders, MapperAccountHolders}
import code.api.APIFailure
-import code.api.util.ApiRole
+import code.api.util.{APIUtil, ApiRole}
import code.model.dataAccess.ViewImpl.create
import code.model.dataAccess.{ResourceUser, ViewImpl, ViewPrivileges}
import code.model.{CreateViewJson, Permission, UpdateViewJSON, User, _}
@@ -11,6 +11,7 @@ import net.liftweb.common._
import net.liftweb.mapper.{By, Schemifier}
import net.liftweb.util.Helpers._
import code.api.util.ErrorMessages._
+
import scala.collection.immutable.List
import code.util.Helper.MdcLoggable
import net.liftweb.util.Props
@@ -27,8 +28,8 @@ object MapperViews extends Views with MdcLoggable {
Schemifier.schemify(true, Schemifier.infoF _, ToSchemify.modelsRemotedata: _*)
- val ALLOW_PUBLIC_VIEWS: Boolean = Props.getBool("allow_public_views").openOr(false)
- val ALLOW_FIREHOSE_VIEWS: Boolean = Props.getBool("allow_firehose_views").openOr(false)
+ val ALLOW_PUBLIC_VIEWS: Boolean = APIUtil.getPropsAsBoolValue("allow_public_views", false)
+ val ALLOW_FIREHOSE_VIEWS: Boolean = APIUtil.getPropsAsBoolValue("allow_firehose_views", false)
def permissions(account : BankIdAccountId) : List[Permission] = {
diff --git a/src/main/scala/code/views/Views.scala b/src/main/scala/code/views/Views.scala
index c0d348c857..eaba922382 100644
--- a/src/main/scala/code/views/Views.scala
+++ b/src/main/scala/code/views/Views.scala
@@ -1,5 +1,6 @@
package code.views
+import code.api.util.APIUtil
import code.model.{CreateViewJson, Permission, _}
import code.remotedata.RemotedataViews
import net.liftweb.common.Box
@@ -14,7 +15,7 @@ object Views extends SimpleInjector {
//TODO Remove MapperViews when Remotedata is optimized and stable
def buildOne: Views =
- Props.getBool("use_akka", false) match {
+ APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MapperViews
case true => RemotedataViews // We will use Akka as a middleware
}
diff --git a/src/test/scala/RunWebApp.scala b/src/test/scala/RunWebApp.scala
index b7a14eb14f..904f21383a 100644
--- a/src/test/scala/RunWebApp.scala
+++ b/src/test/scala/RunWebApp.scala
@@ -29,12 +29,13 @@ Berlin 13359, Germany
Ayoub Benali: ayoub AT tesobe DOT com
*/
+import code.api.util.APIUtil
import net.liftweb.util.Props
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.webapp.WebAppContext
object RunWebApp extends App {
- val server = new Server(Props.getInt("dev.port", 8080))
+ val server = new Server(APIUtil.getPropsAsIntValue("dev.port", 8080))
val context = new WebAppContext()
context.setServer(server)
diff --git a/src/test/scala/code/TestServer.scala b/src/test/scala/code/TestServer.scala
index 94d3c9a62a..b0c3915461 100644
--- a/src/test/scala/code/TestServer.scala
+++ b/src/test/scala/code/TestServer.scala
@@ -1,5 +1,6 @@
package code
+import code.api.util.APIUtil
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.webapp.WebAppContext
@@ -7,9 +8,9 @@ object TestServer {
import net.liftweb.util.Props
val host = "localhost"
- val port = Props.getInt("tests.port",8000)
+ val port = APIUtil.getPropsAsIntValue("tests.port",8000)
val externalHost = Props.get("external.hostname")
- val externalPort = Props.getInt("external.port")
+ val externalPort = APIUtil.getPropsAsIntValue("external.port")
val server = new Server(port)
val context = new WebAppContext()
diff --git a/src/test/scala/code/api/gateWayloginTest.scala b/src/test/scala/code/api/gateWayloginTest.scala
index 59c9165cf2..eebb5c9e8d 100644
--- a/src/test/scala/code/api/gateWayloginTest.scala
+++ b/src/test/scala/code/api/gateWayloginTest.scala
@@ -1,6 +1,6 @@
package code.api
-import code.api.util.ErrorMessages
+import code.api.util.{APIUtil, ErrorMessages}
import code.bankconnectors.vJune2017.InboundAccountJune2017
import code.bankconnectors.vMar2017.InboundStatusMessage
import code.setup.{APIResponse, DefaultUsers, ServerSetup}
@@ -95,7 +95,7 @@ class gateWayloginTest extends ServerSetup with BeforeAndAfter with DefaultUsers
def gatewayLoginNonBlockingRequest = baseRequest / "obp" / "v3.0.0" / "users" / "current" / "customers"
feature("GatewayLogin in a BLOCKING way") {
- Props.getBool("allow_gateway_login", false) match {
+ APIUtil.getPropsAsBoolValue("allow_gateway_login", false) match {
case true =>
scenario("Missing parameter token in a blocking way") {
When("We try to login without parameter token in a Header")
@@ -134,7 +134,7 @@ class gateWayloginTest extends ServerSetup with BeforeAndAfter with DefaultUsers
}
feature("GatewayLogin in a NON BLOCKING way") {
- Props.getBool("allow_gateway_login", false) match {
+ APIUtil.getPropsAsBoolValue("allow_gateway_login", false) match {
case true =>
scenario("Missing parameter token in a blocking way") {
When("We try to login without parameter token in a Header")
diff --git a/src/test/scala/code/api/v1_2_1/API1_2_1Test.scala b/src/test/scala/code/api/v1_2_1/API1_2_1Test.scala
index 95355b1075..edf435684e 100644
--- a/src/test/scala/code/api/v1_2_1/API1_2_1Test.scala
+++ b/src/test/scala/code/api/v1_2_1/API1_2_1Test.scala
@@ -667,7 +667,7 @@ class API1_2_1Test extends User1AllPrivileges with DefaultUsers with PrivateUser
TODO check we have equivelent tests in Create Transaction Request tests
- if (Props.getBool("payments_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("payments_enabled", false) == false) {
ignore("we make a payment", Payments) {}
} else {
scenario("we make a payment", Payments) {
diff --git a/src/test/scala/code/api/v1_4_0/TransactionRequestsTest.scala b/src/test/scala/code/api/v1_4_0/TransactionRequestsTest.scala
index a855489cad..f59c9f5164 100644
--- a/src/test/scala/code/api/v1_4_0/TransactionRequestsTest.scala
+++ b/src/test/scala/code/api/v1_4_0/TransactionRequestsTest.scala
@@ -1,5 +1,6 @@
package code.api.v1_4_0
+import code.api.util.APIUtil
import code.api.util.APIUtil.OAuth._
import code.api.v1_2_1.AmountOfMoneyJsonV121
import code.api.v1_4_0.JSONFactory1_4_0._
@@ -29,7 +30,7 @@ class TransactionRequestsTest extends V140ServerSetup with DefaultUsers {
})
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create a transaction request without challenge", TransactionRequest) {}
} else {
scenario("we create a transaction request without challenge", TransactionRequest) {
@@ -159,7 +160,7 @@ class TransactionRequestsTest extends V140ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create a transaction request with a challenge", TransactionRequest) {}
} else {
scenario("we create a transaction request with a challenge", TransactionRequest) {
diff --git a/src/test/scala/code/api/v2_0_0/TransactionRequestsTest.scala b/src/test/scala/code/api/v2_0_0/TransactionRequestsTest.scala
index b107b325c3..541cc7c3b8 100644
--- a/src/test/scala/code/api/v2_0_0/TransactionRequestsTest.scala
+++ b/src/test/scala/code/api/v2_0_0/TransactionRequestsTest.scala
@@ -2,7 +2,7 @@ package code.api.v2_0_0
import code.api.util.APIUtil.OAuth._
import code.api.util.ApiRole._
-import code.api.util.ErrorMessages
+import code.api.util.{APIUtil, ErrorMessages}
import code.api.v1_2_1.AmountOfMoneyJsonV121
import code.api.v1_4_0.JSONFactory1_4_0.{ChallengeAnswerJSON, TransactionRequestAccountJsonV140}
import code.bankconnectors.Connector
@@ -33,7 +33,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
}
// No challenge, No FX (same currencies)
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create a transaction request with a user who doesn't have access to owner view but has CanCreateAnyTransactionRequest at BANK_ID", TransactionRequest) {}
} else {
scenario("we create a transaction request with a user who doesn't have access to owner view but has CanCreateAnyTransactionRequest at BANK_ID", TransactionRequest) {
@@ -182,7 +182,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
// No challenge, No FX (same currencies)
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create a transaction request without challenge, no FX (same currencies)", TransactionRequest) {}
} else {
scenario("we create a transaction request without challenge, no FX (same currencies)", TransactionRequest) {
@@ -320,7 +320,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create a transaction request with a user without owner view access", TransactionRequest) {}
} else {
scenario("we create a transaction request with a user without owner view access", TransactionRequest) {
@@ -367,7 +367,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create a transaction request with a user who doesn't have access to owner view but has CanCreateAnyTransactionRequest at a different BANK_ID", TransactionRequest) {}
} else {
scenario("we create a transaction request with a user who doesn't have access to owner view but has CanCreateAnyTransactionRequest at a different BANK_ID", TransactionRequest) {
@@ -428,7 +428,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
}
// No challenge, with FX
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create an FX transaction request without challenge, with FX (different currencies)", TransactionRequest) {}
} else {
scenario("we create an FX transaction request without challenge, with FX (different currencies)", TransactionRequest) {
@@ -640,7 +640,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
// With challenge, No FX (Same currencies)
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create a transaction request with a challenge, same currencies", TransactionRequest) {}
} else {
scenario("we create a transaction request with a challenge", TransactionRequest) {
@@ -811,7 +811,7 @@ class TransactionRequestsTest extends V200ServerSetup with DefaultUsers {
// With Challenge, with FX
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("we create an FX transaction request with challenge", TransactionRequest) {}
} else {
scenario("we create an FX transaction request with challenge", TransactionRequest) {
diff --git a/src/test/scala/code/api/v2_1_0/TransactionRequestsTest.scala b/src/test/scala/code/api/v2_1_0/TransactionRequestsTest.scala
index 6defe1ed40..4dbd0aefd9 100644
--- a/src/test/scala/code/api/v2_1_0/TransactionRequestsTest.scala
+++ b/src/test/scala/code/api/v2_1_0/TransactionRequestsTest.scala
@@ -1,11 +1,12 @@
package code.api.v2_1_0
import java.util.UUID
+
import code.api.util.ErrorMessages._
import code.api.ChargePolicy
import code.api.util.APIUtil.OAuth._
import code.api.util.ApiRole.CanCreateAnyTransactionRequest
-import code.api.util.ErrorMessages
+import code.api.util.{APIUtil, ErrorMessages}
import code.api.v1_2_1.AmountOfMoneyJsonV121
import code.api.v1_4_0.JSONFactory1_4_0.{ChallengeAnswerJSON, TransactionRequestAccountJsonV140}
import code.api.v2_0_0.TransactionRequestBodyJsonV200
@@ -292,7 +293,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
feature("Security Tests: permissions, roles, views...") {
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No login user", TransactionRequest) {}
} else {
scenario("No login user", TransactionRequest) {
@@ -315,7 +316,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No owner view , No CanCreateAnyTransactionRequest role", TransactionRequest) {}
} else {
scenario("No owner view, No CanCreateAnyTransactionRequest role", TransactionRequest) {
@@ -336,7 +337,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No owner view, With CanCreateAnyTransactionRequest role", TransactionRequest) {}
} else {
scenario("No owner view, With CanCreateAnyTransactionRequest role", TransactionRequest) {
@@ -357,7 +358,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("Invalid transactionRequestType", TransactionRequest) {}
} else {
scenario("Invalid transactionRequestType", TransactionRequest) {
@@ -386,7 +387,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
feature("we can create transaction requests -- SANDBOX_TAN") {
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, No FX (same currencies)", TransactionRequest) {}
} else {
scenario("No challenge, No FX (same currencies)", TransactionRequest) {
@@ -416,7 +417,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, With FX ", TransactionRequest) {}
} else {
scenario("No challenge, With FX ", TransactionRequest) {
@@ -456,7 +457,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, No FX", TransactionRequest) {}
} else {
scenario("With challenge, No FX ", TransactionRequest) {
@@ -502,7 +503,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, With FX ", TransactionRequest) {}
} else {
scenario("With challenge, With FX ", TransactionRequest) {
@@ -555,7 +556,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
feature("we can create transaction requests -- FREE_FORM") {
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, No FX ", TransactionRequest) {}
} else {
scenario("No challenge, No FX ", TransactionRequest) {
@@ -585,7 +586,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, With FX ", TransactionRequest) {}
} else {
scenario("No challenge, With FX ", TransactionRequest) {
@@ -625,7 +626,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, No FX", TransactionRequest) {}
} else {
scenario("With challenge, No FX ", TransactionRequest) {
@@ -671,7 +672,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, With FX ", TransactionRequest) {}
} else {
scenario("With challenge, With FX ", TransactionRequest) {
@@ -724,7 +725,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
feature("we can create transaction requests -- SEPA") {
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, No FX ", TransactionRequest) {}
} else {
scenario("No challenge, No FX ", TransactionRequest) {
@@ -754,7 +755,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, With FX ", TransactionRequest) {}
} else {
scenario("No challenge, With FX ", TransactionRequest) {
@@ -794,7 +795,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, No FX ", TransactionRequest) {}
} else {
scenario("With challenge, No FX ", TransactionRequest) {
@@ -840,7 +841,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, With FX ", TransactionRequest) {}
} else {
scenario("With challenge, With FX ", TransactionRequest) {
@@ -893,7 +894,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
feature("we can create transaction requests -- COUNTERPARTY") {
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, No FX ", TransactionRequest) {}
} else {
scenario("No challenge, No FX ", TransactionRequest) {
@@ -923,7 +924,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("No challenge, With FX ", TransactionRequest) {}
} else {
scenario("No challenge, With FX ", TransactionRequest) {
@@ -963,7 +964,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, No FX ", TransactionRequest) {}
} else {
scenario("With challenge, No FX ", TransactionRequest) {
@@ -1009,7 +1010,7 @@ class TransactionRequestsTest extends V210ServerSetup with DefaultUsers {
}
}
- if (Props.getBool("transactionRequests_enabled", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("transactionRequests_enabled", false) == false) {
ignore("With challenge, With FX", TransactionRequest) {}
} else {
scenario("With challenge, With FX", TransactionRequest) {
diff --git a/src/test/scala/code/bankaccountcreation/BankAccountCreationListenerTest.scala b/src/test/scala/code/bankaccountcreation/BankAccountCreationListenerTest.scala
index 11301d0426..09574a1b81 100644
--- a/src/test/scala/code/bankaccountcreation/BankAccountCreationListenerTest.scala
+++ b/src/test/scala/code/bankaccountcreation/BankAccountCreationListenerTest.scala
@@ -1,6 +1,7 @@
package code.bankaccountcreation
import code.accountholder.AccountHolders
+import code.api.util.APIUtil
import code.api.util.ErrorMessages._
import code.model.{BankId, User}
import code.views.Views
@@ -59,7 +60,7 @@ class BankAccountCreationListenerTest extends ServerSetup with DefaultConnectorT
AccountHolders.accountHolders.vend.getAccountHolders(BankId(expectedBankId), createdAccount.accountId) should equal(Set(user))
}
- if (Props.getBool("messageQueue.createBankAccounts", false) == false) {
+ if (APIUtil.getPropsAsBoolValue("messageQueue.createBankAccounts", false) == false) {
ignore("a bank account is created at a bank that does not yet exist", BankAccountCreationListenerTag) {}
ignore("a bank account is created at a bank that already exists", BankAccountCreationListenerTag) {}
} else {
diff --git a/src/test/scala/code/fx/PutFX.scala b/src/test/scala/code/fx/PutFX.scala
new file mode 100644
index 0000000000..b272c8139f
--- /dev/null
+++ b/src/test/scala/code/fx/PutFX.scala
@@ -0,0 +1,178 @@
+package code.fx
+
+/**
+Open Bank Project - API
+Copyright (C) 2011-2016, 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 .
+
+Email: contact@tesobe.com
+TESOBE Ltd.
+Osloer Strasse 16/17
+Berlin 13359, Germany
+
+This product includes software developed at
+TESOBE (http://www.tesobe.com/)
+
+ */
+
+/*
+* This is a utility script that can be used to POST data via the API as a logged-in User.
+* It POSTS customers and links them to existing Users
+* It requires the credentials of the user and logs in via OAuth using selenium.
+*
+* We use an "admin user" e.g. a user which has been assigned certain roles to perform the actions.
+* The roles required include CanGetAnyUser, CanCreateCustomerAtAnyBank , CanCreateUserCustomerLinkAtAnyBank
+*
+* To use this one-time script, put e.g.
+* target_api_hostname=https://localhost:8080
+* obp_consumer_key=xxx
+* obp_secret_key=yyy
+* import.fx_data_path=path_to.json
+* import.admin_user.username=username-of-user-that-has-correct-roles
+* import.admin_user.password=password
+*
+* into your props file.
+* */
+
+import java.util.Date
+
+import code.api.v2_2_0.FXRateJsonV220
+import code.setup.SendServerRequests
+import code.util.ObpJson._
+import code.util.{OAuthClient, ObpGet, ObpPut}
+import net.liftweb.common.{Box, Empty, Full}
+import net.liftweb.http.RequestVar
+import net.liftweb.json._
+import net.liftweb.util.Props
+
+import scala.collection.mutable.ListBuffer
+import scala.io.Source
+
+
+case class FxJson(from_currency_code: String,
+ to_currency_code: String,
+ conversion_value: Double,
+ inverse_conversion_value: Double,
+ effective_date: Date)
+
+object PutFX extends SendServerRequests {
+
+
+ def debugBreak() {
+ println("Breakpoint hit!") // Manually set a breakpoint here
+ }
+
+ def main(args : Array[String]) {
+
+ // this sets the date format to "yyyy-MM-dd'T'HH:mm:ss'Z'" i.e. ISO 8601 No milliseconds UTC
+ implicit val formats = DefaultFormats // Brings in default date formats etc.
+
+ val adminUserUsername = Props.get("import.admin_user.username").getOrElse("ERROR")
+ println(s"adminUserUsername is $adminUserUsername")
+
+ val adminUserPassword = Props.get("import.admin_user.password").getOrElse("ERROR")
+ println(s"adminUserPassword is $adminUserPassword")
+
+ //println("Got " + customers.length + " records")
+
+ object allBanksVar extends RequestVar[Box[BanksJson]] (Empty)
+
+ def allBanks : Box[BanksJson]= {
+ allBanksVar.get match {
+ case Full(a) => Full(a)
+ case _ => ObpGet("/v1.2.1/banks").flatMap(_.extractOpt[BanksJson]) // TODO use more recent API version
+ }
+ }
+
+ case class SimpleBank(
+ id : String,
+ shortName : String,
+ fullName : String,
+ logo : String,
+ website : String)
+
+
+ // Login once as an admin user. Will need to have some admin Roles
+ if(!OAuthClient.loggedIn) {
+ print("login as user: ")
+ println (adminUserUsername)
+ OAuthClient.authenticateWithOBPCredentials(adminUserUsername, adminUserPassword)
+ println(" - ok.")
+ }
+
+
+ val banks = for {
+ a <- allBanks.toList
+ b <- a.bankJsons
+ // This filtering could be turned on/off by Props setting
+ // Filter out banks if we have a list of ones to use, else use all of them.
+ // Also, show all if requested by url parameter
+ // if featuredBankIds.length == 0 || featuredBankIds.contains(b.id.get) || listAllBanks
+ } yield SimpleBank (b.id.get,
+ b.short_name.getOrElse(""),
+ b.full_name.getOrElse(""),
+ b.logo.getOrElse(""),
+ b.website.getOrElse("")
+ ) // Add a flag to say if this bank is featured.
+
+ for (b <- banks) { // (b.shortName == "uk")
+ println(s"Posting FX Rate for bank ${b.shortName}")
+
+ val url = s"/v3.0.0/banks/${b.id}/fx"
+
+ //load json for fx rates
+ val fxDataPath = Props.get("import.fx_data_path")
+
+ println(s"fxDataPath is $fxDataPath")
+
+ // This contains a list of fx rates.
+ val fxListData = JsonParser.parse(Source.fromFile(fxDataPath.getOrElse("ERROR")) mkString)
+
+ var fxrates = ListBuffer[FxJson]()
+
+ // Get fx rate data from json
+ for(i <- fxListData.children){
+ //logger.info(s" extract fx rate records")
+ val f = i.extract[FxJson]
+ val fxJsonV210 = FXRateJsonV220(
+ bank_id = b.id,
+ from_currency_code = f.from_currency_code,
+ to_currency_code = f.to_currency_code,
+ conversion_value = f.conversion_value,
+ inverse_conversion_value = f.inverse_conversion_value,
+ effective_date = f.effective_date
+ )
+
+ val json = Extraction.decompose(fxJsonV210)
+ println(s"json to post is $json")
+
+ val result = ObpPut(url, json)
+
+ if (!result.isEmpty) {
+ println("saved " + f.from_currency_code + " to " + f.to_currency_code + " as currency exchange rate " + result)
+ } else {
+ println("did NOT save fx rate " + result)
+ }
+
+ }
+
+
+ //OAuthClient.logoutAll()
+ }
+
+ OAuthClient.logoutAll()
+ sys.exit(0)
+ }
+}
\ No newline at end of file
diff --git a/src/test/scala/code/sandbox/SandboxDataLoadingTest.scala b/src/test/scala/code/sandbox/SandboxDataLoadingTest.scala
index 633acbfe24..2be54d67ab 100644
--- a/src/test/scala/code/sandbox/SandboxDataLoadingTest.scala
+++ b/src/test/scala/code/sandbox/SandboxDataLoadingTest.scala
@@ -33,10 +33,12 @@ package code.sandbox
import java.text.SimpleDateFormat
import java.util.Date
+
import code.api.util.ErrorMessages._
import bootstrap.liftweb.ToSchemify
import code.TestServer
import code.accountholder.AccountHolders
+import code.api.util.APIUtil
import code.api.util.APIUtil._
import code.atms.Atms
import code.atms.Atms.{AtmId, AtmT, countOfAtms}
@@ -90,7 +92,7 @@ class SandboxDataLoadingTest extends FlatSpec with SendServerRequests with Match
//drop database tables before
//MongoDB.getDb(DefaultMongoIdentifier).foreach(_.dropDatabase())
ToSchemify.models.foreach(_.bulkDelete_!!())
- if (!Props.getBool("remotedata.enable", false)) {
+ if (!APIUtil.getPropsAsBoolValue("remotedata.enable", false)) {
ToSchemify.modelsRemotedata.foreach(_.bulkDelete_!!())
} else {
Views.views.vend.bulkDeleteAllPermissionsAndViews()
diff --git a/src/test/scala/code/setup/DefaultUsers.scala b/src/test/scala/code/setup/DefaultUsers.scala
index 00bbcb3b9b..3cfb2e899b 100644
--- a/src/test/scala/code/setup/DefaultUsers.scala
+++ b/src/test/scala/code/setup/DefaultUsers.scala
@@ -1,8 +1,10 @@
package code.setup
import java.util.UUID
+
import code.api.util.ErrorMessages._
import code.api.GatewayLogin
+import code.api.util.APIUtil
import code.api.util.APIUtil.OAuth.{Consumer, Token}
import code.consumer.Consumers
import code.model.TokenType._
@@ -36,7 +38,7 @@ trait DefaultUsers {
lazy val consumer = Consumer(testConsumer.key.get, testConsumer.secret.get)
// create the access token
- val expiration = Props.getInt("token_expiration_weeks", 4)
+ val expiration = APIUtil.getPropsAsIntValue("token_expiration_weeks", 4)
lazy val tokenDuration = weeks(expiration)
// Create resource user, need provider
diff --git a/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala b/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala
index 16bd3c13b1..439d7a204b 100644
--- a/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala
+++ b/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala
@@ -1,9 +1,11 @@
package code.setup
import java.util.{Date, UUID}
+
import code.api.util.ErrorMessages._
import bootstrap.liftweb.ToSchemify
import code.accountholder.AccountHolders
+import code.api.util.APIUtil
import code.entitlement.Entitlement
import code.metadata.counterparties.{Counterparties, CounterpartyTrait}
import code.model._
@@ -141,7 +143,7 @@ trait LocalMappedConnectorTestSetup extends TestConnectorSetupWithStandardPermis
//empty the relational db tables after each test
ToSchemify.models.filterNot(exclusion).foreach(_.bulkDelete_!!())
- if (!Props.getBool("remotedata.enable", false)) {
+ if (!APIUtil.getPropsAsBoolValue("remotedata.enable", false)) {
ToSchemify.modelsRemotedata.filterNot(exclusion).foreach(_.bulkDelete_!!())
} else {
Views.views.vend.bulkDeleteAllPermissionsAndViews()
diff --git a/src/test/scala/code/setup/ServerSetup.scala b/src/test/scala/code/setup/ServerSetup.scala
index 020e152ba2..c3cea7d979 100644
--- a/src/test/scala/code/setup/ServerSetup.scala
+++ b/src/test/scala/code/setup/ServerSetup.scala
@@ -36,6 +36,7 @@ import java.text.SimpleDateFormat
import _root_.net.liftweb.json.JsonAST.JObject
import code.TestServer
+import code.api.util.APIUtil
import code.model.BankId
import code.util.Helper.MdcLoggable
import dispatch._
@@ -56,7 +57,7 @@ trait ServerSetup extends FeatureSpec with SendServerRequests
val server = TestServer
def baseRequest = host(server.host, server.port)
- val secured = Props.getBool("external.https", false)
+ val secured = APIUtil.getPropsAsBoolValue("external.https", false)
def externalBaseRequest = (server.externalHost, server.externalPort) match {
case (Full(h), Full(p)) if secured => host(h, p).secure
case (Full(h), Full(p)) if !secured => host(h, p)
diff --git a/src/test/scala/code/setup/TestConnectorSetupWithStandardPermissions.scala b/src/test/scala/code/setup/TestConnectorSetupWithStandardPermissions.scala
index 7b6db8d251..bd06cbade2 100644
--- a/src/test/scala/code/setup/TestConnectorSetupWithStandardPermissions.scala
+++ b/src/test/scala/code/setup/TestConnectorSetupWithStandardPermissions.scala
@@ -2,6 +2,7 @@ package code.setup
import bootstrap.liftweb.ToSchemify
import code.accountholder.AccountHolders
+import code.api.util.APIUtil
import code.model._
import code.model.dataAccess._
import code.views.Views
@@ -54,7 +55,7 @@ trait TestConnectorSetupWithStandardPermissions extends TestConnectorSetup {
//empty the relational db tables after each test
ToSchemify.models.filterNot(exclusion).foreach(_.bulkDelete_!!())
- if (!Props.getBool("remotedata.enable", false)) {
+ if (!APIUtil.getPropsAsBoolValue("remotedata.enable", false)) {
ToSchemify.modelsRemotedata.filterNot(exclusion).foreach(_.bulkDelete_!!())
} else {
Views.views.vend.bulkDeleteAllPermissionsAndViews()