Merge pull request #3 in MM/mpin-sdk-core from mony_otc to master
* commit '58fdca8739ae1ce6660d8ea249f5bf6a27085ae9':
Adding support for registartion with OTC.
diff --git a/src/mpin_sdk.cpp b/src/mpin_sdk.cpp
index 9f42e9b..3652767 100644
--- a/src/mpin_sdk.cpp
+++ b/src/mpin_sdk.cpp
@@ -752,7 +752,7 @@
return UserPtr(new User(id, deviceName));
}
-Status MPinSDK::StartRegistration(UserPtr user, const String& userData)
+Status MPinSDK::StartRegistration(UserPtr user, const String& activateCode, const String& userData)
{
Status s = CheckIfBackendIsSet();
if(s != Status::OK)
@@ -766,7 +766,7 @@
return s;
}
- return RequestRegistration(user, userData);
+ return RequestRegistration(user, activateCode, userData);
}
Status MPinSDK::RestartRegistration(UserPtr user, const String& userData)
@@ -783,10 +783,10 @@
return s;
}
- return RequestRegistration(user, userData);
+ return RequestRegistration(user, "", userData);
}
-Status MPinSDK::RequestRegistration(UserPtr user, const String& userData)
+Status MPinSDK::RequestRegistration(UserPtr user, const String& activateCode, const String& userData)
{
// Make request to RPA to add M-Pin ID
util::JsonObject data;
@@ -800,6 +800,10 @@
{
data["userData"] = json::String(userData);
}
+ if(!activateCode.empty())
+ {
+ data["activateCode"] = json::String(activateCode);
+ }
String url;
if(user->GetState() == User::STARTED_REGISTRATION)
@@ -854,45 +858,6 @@
return Status(Status::OK);
}
-Status MPinSDK::VerifyUser(UserPtr user, const String& mpinId, const String & activationKey)
-{
- Status s = CheckIfBackendIsSet();
- if(s != Status::OK)
- {
- return s;
- }
-
- s = CheckUserState(user, User::INVALID);
- if(s != Status::OK)
- {
- return s;
- }
-
- String url = m_clientSettings.GetStringParam("mobileVerifyURL");
-
- util::JsonObject body;
- body["mpin_id"] = json::String(mpinId);
- body["activate_key"] = json::String(activationKey);
-
- HttpResponse response = MakeRequest(url, IHttpRequest::POST, body);
-
- if(response.GetStatus() != HttpResponse::HTTP_OK)
- {
- Status s;
- s.SetStatusCode(Status::IDENTITY_NOT_VERIFIED);
- s.SetErrorMessage("Identity not verified");
- return s;
- }
-
- String regOTT = response.GetJsonData().GetStringParam("regOTT");
-
- user->SetStartedRegistration(mpinId, regOTT);
- AddUser(user);
- s = WriteUsersToStorage();
-
- return s;
-}
-
Status MPinSDK::ConfirmRegistration(INOUT UserPtr user, const String& pushMessageIdentifier)
{
Status s = CheckIfBackendIsSet();
diff --git a/src/mpin_sdk.h b/src/mpin_sdk.h
index d7cf2e7..7644c83 100644
--- a/src/mpin_sdk.h
+++ b/src/mpin_sdk.h
@@ -232,9 +232,8 @@
Status SetBackend(const String& server, const String& rpsPrefix = MPinSDK::DEFAULT_RPS_PREFIX);
UserPtr MakeNewUser(const String& id, const String& deviceName = "") const;
- Status StartRegistration(INOUT UserPtr user, const String& userData = "");
+ Status StartRegistration(INOUT UserPtr user, const String& activateCode = "", const String& userData = "");
Status RestartRegistration(INOUT UserPtr user, const String& userData = "");
- Status VerifyUser(INOUT UserPtr user, const String& mpinId, const String& activationKey);
Status ConfirmRegistration(INOUT UserPtr user, const String& pushMessageIdentifier = "");
Status FinishRegistration(INOUT UserPtr user, const String& pin);
@@ -339,7 +338,7 @@
HttpResponse MakeGetRequest(const String& url, HttpResponse::DataType expectedResponseType = HttpResponse::JSON) const;
Status RewriteRelativeUrls();
Status GetClientSettings(const String& backend, const String& rpsPrefix, OUT util::JsonObject *clientSettings) const;
- Status RequestRegistration(INOUT UserPtr user, const String& userData);
+ Status RequestRegistration(INOUT UserPtr user, const String& activateCode, const String& userData);
Status FinishAuthenticationImpl(INOUT UserPtr user, const String& pin, const String& accessNumber, OUT String *otp, OUT util::JsonObject& authResultData);
Status GetCertivoxTimePermitShare(INOUT UserPtr user, const util::JsonObject& cutomerTimePermitData, OUT String& resultTimePermit);
bool ValidateAccessNumber(const String& accessNumber);
diff --git a/tests/linux/MPinClient/HttpRequest.cpp b/tests/linux/MPinClient/HttpRequest.cpp
index a267e9f..b80ef91 100644
--- a/tests/linux/MPinClient/HttpRequest.cpp
+++ b/tests/linux/MPinClient/HttpRequest.cpp
@@ -29,15 +29,11 @@
void CHttpRequest::SetHeaders(const StringMap& headers)
{
- CMapHttpHeaders tmpHeaders;
-
StringMap::const_iterator itr = headers.begin();
for ( ; itr != headers.end(); ++itr )
{
- tmpHeaders[itr->first] = itr->second;
+ m_requestHeaders[itr->first] = itr->second;
}
-
- m_request.SetHeaders( tmpHeaders );
}
void CHttpRequest::SetQueryParams(const StringMap& queryParams)
@@ -75,6 +71,13 @@
return false;
}
+ if (m_requestHeaders.find("X-MIRACL-OS-Class") == m_requestHeaders.end())
+ {
+ m_requestHeaders["X-MIRACL-OS-Class"] = "linux";
+ }
+
+ m_request.SetHeaders( m_requestHeaders );
+
String fullUrl = url;
if ( !m_queryParams.empty() )
@@ -90,7 +93,7 @@
fullUrl.TrimRight("&");
}
-// printf( "--> %s %s [%s]\n", strMethod.c_str(), fullUrl.c_str(), m_requestData.c_str() );
+ printf( "--> %s %s [%s]\n", strMethod.c_str(), fullUrl.c_str(), m_requestData.c_str() );
m_request.SetMethod( cvHttpMethod );
m_request.SetUrl( fullUrl );
@@ -111,7 +114,7 @@
m_responseData = m_request.GetResponse();
-// printf( "<-- %ld [%s]\n", m_request.GetResponseCode(), m_responseData.c_str() );
+ printf( "<-- %ld [%s]\n", m_request.GetResponseCode(), m_responseData.c_str() );
return true;
}
diff --git a/tests/linux/MPinClient/HttpRequest.h b/tests/linux/MPinClient/HttpRequest.h
index 2f41cd6..5a2d6d7 100644
--- a/tests/linux/MPinClient/HttpRequest.h
+++ b/tests/linux/MPinClient/HttpRequest.h
@@ -50,6 +50,7 @@
String m_id;
CvHttpRequest m_request;
+ CMapHttpHeaders m_requestHeaders;
String m_requestData; //Used for debugging purposes only
StringMap m_queryParams;
Seconds m_timeout;
diff --git a/tests/linux/MPinClient/MpinClient.cpp b/tests/linux/MPinClient/MpinClient.cpp
index bda5a34..c0e1f62 100644
--- a/tests/linux/MPinClient/MpinClient.cpp
+++ b/tests/linux/MPinClient/MpinClient.cpp
@@ -57,7 +57,7 @@
file << data;
file.close();
- LogMessage( enLogLevel_Debug1, "Writing data to [%s]:\n%s", m_fileName.c_str(), data.c_str() );
+ LogMessage( enLogLevel_Debug3, "Writing data to [%s]:\n%s", m_fileName.c_str(), data.c_str() );
return true;
}
@@ -71,7 +71,7 @@
data = buffer.str();
- LogMessage( enLogLevel_Debug1, "Reading data from [%s]:\n%s", m_fileName.c_str(), data.c_str() );
+ LogMessage( enLogLevel_Debug3, "Reading data from [%s]:\n%s", m_fileName.c_str(), data.c_str() );
return true;
}
@@ -89,8 +89,8 @@
_Init(aBackendUrl);
}
-CMpinClient::CMpinClient( int aClientId, const String& aBackendUrl, const String& aUserId, const String& aPinGood, const String& aPinBad ) :
- m_bInitialized(false), m_id(aClientId), m_userId(aUserId), m_pinGood(aPinGood), m_pinBad(aPinBad),
+CMpinClient::CMpinClient( int aClientId, const String& aBackendUrl, const String& aUserId, const String& aPinGood, const String& aPinBad, const String& aRegOTC ) :
+ m_bInitialized(false), m_id(aClientId), m_userId(aUserId), m_pinGood(aPinGood), m_pinBad(aPinBad), m_regOTC(aRegOTC),
m_storageSecure( String().Format("sec-%d", aClientId) ), m_storageNonSecure( String().Format("%d", aClientId) ),
m_context( String().Format("%d",aClientId), &m_storageSecure, &m_storageNonSecure ),
m_thread(aUserId), m_queue(aUserId.c_str()), m_bIdle(false), m_bStatsEnabled(true)
@@ -175,7 +175,7 @@
GetCurrentTime(now);
Millisecs startTime = now.ToMillisecs();
- MPinSDK::Status status = m_sdk.StartRegistration( user, "{ \"data\": \"test\" }" );
+ MPinSDK::Status status = m_sdk.StartRegistration( user, m_regOTC, "{ \"data\": \"test\" }" );
if ( status != MPinSDK::Status::OK )
{
diff --git a/tests/linux/MPinClient/MpinClient.h b/tests/linux/MPinClient/MpinClient.h
index c5f55ce..2c61108 100644
--- a/tests/linux/MPinClient/MpinClient.h
+++ b/tests/linux/MPinClient/MpinClient.h
@@ -35,7 +35,7 @@
{
public:
- CMpinClient( int aClientId, const String& aBackendUrl, const String& aUserId, const String& aPinGood, const String& aPinBad );
+ CMpinClient( int aClientId, const String& aBackendUrl, const String& aUserId, const String& aPinGood, const String& aPinBad, const String& aRegOTC = "" );
CMpinClient( int aClientId, const String& aBackendUrl, const String& aUserId );
virtual ~CMpinClient();
@@ -126,6 +126,8 @@
String m_pinGood;
String m_pinBad;
+ String m_regOTC;
+
enum enEvent_t
{
enEvent_Register,
diff --git a/tests/linux/MPinClient/main.cpp b/tests/linux/MPinClient/main.cpp
index 5c0c979..81cea31 100644
--- a/tests/linux/MPinClient/main.cpp
+++ b/tests/linux/MPinClient/main.cpp
@@ -40,7 +40,7 @@
{
printf("%s\n", aMessage);
}
- printf("Usage: %s --reg --auth -n <num-of-clients> -r <requests-per-second> [-u <user-prefix> -t <timeout-sec> -c <count>] -b <backend-url>\n", aExeName);
+ printf("Usage: %s --reg --auth -n <num-of-clients> -r <requests-per-second> [-u <user-id> -t <timeout-sec> -c <count> -o <reg-otc>] -b <backend-url>\n", aExeName);
printf("\n");
}
@@ -48,7 +48,7 @@
{
sParams() :
bRegister(false), bAuthenticate(false), numOfClients(0), requestsPerSecond(0),
- count(1), userPrefix("test"), timeout(30)
+ count(1), userId("test%d@dispostable.com"), timeout(30)
{}
bool bRegister;
@@ -57,8 +57,9 @@
uint32_t requestsPerSecond;
uint32_t count;
::String backendUrl;
- ::String userPrefix;
+ ::String userId;
Seconds timeout;
+ ::String regOTC;
};
bool doargs(int argc, char **argv, OUT sParams& aParams)
@@ -81,7 +82,7 @@
};
int option_index = 0;
- while ((ch = getopt_long(argc, argv, "n:r:b:u:t:c:", long_options, &option_index)) > 0)
+ while ((ch = getopt_long(argc, argv, "n:r:b:u:t:c:o:", long_options, &option_index)) > 0)
{
switch (ch)
{
@@ -91,7 +92,7 @@
break;
case 'b': aParams.backendUrl = optarg;
break;
- case 'u': aParams.userPrefix = optarg;
+ case 'u': aParams.userId = optarg;
break;
case 't': aParams.timeout = atoi(optarg);
break;
@@ -101,6 +102,8 @@
break;
case 2: aParams.bAuthenticate = true;
break;
+ case 'o': aParams.regOTC = optarg;
+ break;
}
}
@@ -158,7 +161,7 @@
int main(int argc, char** argv)
{
- InitLogger(argv[0], enLogLevel_Info);
+ InitLogger(argv[0], enLogLevel_Debug1);
LogMessage(enLogLevel_Info, "========== Starting M-Pin Client Test ==========");
sParams params;
@@ -195,7 +198,15 @@
for (int i = 0; i < params.numOfClients; ++i)
{
::String userId;
- userId.Format("%s%d@dispostable.com", params.userPrefix.c_str(), i + 1);
+ if ( params.userId.find("%d") != ::String::npos )
+ {
+ userId.Format( params.userId.c_str(), i + 1 );
+ }
+ else
+ {
+ userId = params.userId;
+ }
+
CMpinClient* pClient = NULL;
@@ -209,7 +220,7 @@
pinBad.Format("%04d", rand() % 10000);
}
- pClient = new CMpinClient(i + 1, params.backendUrl, userId, pinGood, pinBad);
+ pClient = new CMpinClient(i + 1, params.backendUrl, userId, pinGood, pinBad, params.regOTC);
}
else
{