TEST(PersistentCognitoIdentityProvider_JsonImpl_Test, TestConstructorWhenFileIsAvaiable) { JsonValue theIdentityPoolWeWant; theIdentityPoolWeWant.WithString("IdentityId", "TheIdentityWeWant"); //this should test the legacy case. //the next test case will cover the current spec in detail. JsonValue logins; logins.WithString("TestLoginName", "TestLoginValue"); theIdentityPoolWeWant.WithObject("Logins", logins); JsonValue someOtherIdentityPool; someOtherIdentityPool.WithString("IdentityId", "SomeOtherIdentity"); JsonValue identityDoc; identityDoc.WithObject("IdentityPoolWeWant", theIdentityPoolWeWant); identityDoc.WithObject("SomeOtherIdentityPool", someOtherIdentityPool); Aws::String filePath = ComputeIdentityFilePath(); std::ofstream identityFile(filePath.c_str()); identityFile << identityDoc.WriteReadable(); identityFile.flush(); identityFile.close(); PersistentCognitoIdentityProvider_JsonFileImpl identityProvider("IdentityPoolWeWant", "accountId", filePath.c_str()); FileSystemUtils::RemoveFileIfExists(filePath.c_str()); ASSERT_TRUE(identityProvider.HasIdentityId()); ASSERT_EQ(theIdentityPoolWeWant.GetString("IdentityId"), identityProvider.GetIdentityId()); ASSERT_TRUE(identityProvider.HasLogins()); ASSERT_EQ(1u, identityProvider.GetLogins().size()); ASSERT_EQ("TestLoginName", identityProvider.GetLogins().begin()->first); ASSERT_EQ("TestLoginValue", identityProvider.GetLogins().begin()->second.accessToken); }
TEST(PersistentCognitoIdentityProvider_JsonImpl_Test, TestPersistance) { JsonValue someOtherIdentityPool; someOtherIdentityPool.WithString("IdentityId", "SomeOtherIdentity"); JsonValue identityDoc; identityDoc.WithObject("SomeOtherIdentityPool", someOtherIdentityPool); Aws::String filePath = ComputeIdentityFilePath(); FileSystemUtils::RemoveFileIfExists(filePath.c_str()); std::ofstream identityFile(filePath.c_str()); identityFile << identityDoc.WriteReadable(); identityFile.close(); Aws::Map<Aws::String, LoginAccessTokens> loginsMap; LoginAccessTokens loginAccessTokens; loginAccessTokens.accessToken = "LoginValue"; loginAccessTokens.longTermTokenExpiry = 1001; loginAccessTokens.longTermToken = "LongTermToken"; loginsMap["LoginName"] = loginAccessTokens; //scope it to kill the cache and force it to reload from file. { PersistentCognitoIdentityProvider_JsonFileImpl identityProvider("IdentityPoolWeWant", "accountId", filePath.c_str()); EXPECT_FALSE(identityProvider.HasIdentityId()); EXPECT_FALSE(identityProvider.HasLogins()); identityProvider.PersistIdentityId("IdentityWeWant"); identityProvider.PersistLogins(loginsMap); } PersistentCognitoIdentityProvider_JsonFileImpl identityProvider("IdentityPoolWeWant", "accountId", filePath.c_str()); EXPECT_EQ("IdentityWeWant", identityProvider.GetIdentityId()); EXPECT_EQ("LoginName", identityProvider.GetLogins().begin()->first); EXPECT_EQ(loginAccessTokens.accessToken, identityProvider.GetLogins().begin()->second.accessToken); EXPECT_EQ(loginAccessTokens.longTermToken, identityProvider.GetLogins().begin()->second.longTermToken); EXPECT_EQ(loginAccessTokens.longTermTokenExpiry, identityProvider.GetLogins().begin()->second.longTermTokenExpiry); std::ifstream identityFileInput(filePath.c_str()); JsonValue finalIdentityDoc(identityFileInput); identityFileInput.close(); FileSystemUtils::RemoveFileIfExists(filePath.c_str()); ASSERT_TRUE(finalIdentityDoc.ValueExists("SomeOtherIdentityPool")); ASSERT_TRUE(finalIdentityDoc.ValueExists("IdentityPoolWeWant")); JsonValue ourIdentityPool = finalIdentityDoc.GetObject("IdentityPoolWeWant"); ASSERT_EQ("IdentityWeWant", ourIdentityPool.GetString("IdentityId")); ASSERT_EQ("LoginName", ourIdentityPool.GetObject("Logins").GetAllObjects().begin()->first); ASSERT_EQ(loginAccessTokens.accessToken, ourIdentityPool.GetObject("Logins").GetAllObjects().begin()->second.GetString("AccessToken")); ASSERT_EQ(loginAccessTokens.longTermToken, ourIdentityPool.GetObject("Logins").GetAllObjects().begin()->second.GetString("LongTermToken")); ASSERT_EQ(loginAccessTokens.longTermTokenExpiry, ourIdentityPool.GetObject("Logins").GetAllObjects().begin()->second.GetInt64("Expiry")); }
bool TournamentConfig::Load(const std::string &fileName) { JsonValue json; bool ret = JsonReader::ParseFile(json, fileName); if (ret) { std::string value; if (json.GetValue("version", value)) { if (value == TOURNAMENT_CONFIG_VERSION) { // Setup tournament configuration mOptions.turns.clear(); JsonValue tournament = json.FindValue("tournament"); if (tournament.GetArray().Size() > 0U) { for (JsonArray::Iterator iter = tournament.GetArray().Begin(); iter != tournament.GetArray().End(); ++iter) { if (iter->IsObject()) { JsonValue value = iter->GetObj().GetValue("type"); Tarot::Distribution shuffle; if (value.IsString()) { if (value.GetString() == "custom") { shuffle.mType = Tarot::Distribution::CUSTOM_DEAL; value = iter->GetObj().GetValue("file"); if (value.IsString()) { shuffle.mFile = value.GetString(); } else { ret = false; } } else if (value.GetString() == "random") { shuffle.mType = Tarot::Distribution::RANDOM_DEAL; } else if (value.GetString() == "numbered") { shuffle.mType = Tarot::Distribution::NUMBERED_DEAL; shuffle.mSeed = iter->GetObj().GetValue("number").GetInteger(); // FIXME we can add a test on the type here before setting the seed } else { TLogError("Unsupported deal type value"); ret = false; } } if (ret) { mOptions.turns.push_back(shuffle); } } } } else { TLogError("No tournament details"); ret = false; } } else { TLogError("Wrong tournament configuration file version"); ret = false; } } else { TLogError("Cannot read tournament configuration file version"); ret = false; } } else { TLogError("Cannot open tournament configuration file" + fileName); } if (!ret) { // Overwrite old file with default value mOptions = GetDefault(); ret = Save(fileName); } mLoaded = true; return ret; }
AttributeValueByteBuffer::AttributeValueByteBuffer(const JsonValue& jsonValue) { m_b = HashingUtils::Base64Decode(jsonValue.GetString("B")); }