1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-01-19 12:07:13 +01:00
SqMod/vendor/POCO/JWT/testsuite/src/SerializerTest.cpp
Sandu Liviu Catalin 4a6bfc086c Major plugin refactor and cleanup.
Switched to POCO library for unified platform/library interface.
Deprecated the external module API. It was creating more problems than solving.
Removed most built-in libraries in favor of system libraries for easier maintenance.
Cleaned and secured code with help from static analyzers.
2021-01-30 08:51:39 +02:00

132 lines
3.6 KiB
C++

//
// SerializerTest.cpp
//
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#include "SerializerTest.h"
#include "CppUnit/TestCaller.h"
#include "CppUnit/TestSuite.h"
#include "Poco/JWT/Serializer.h"
using namespace Poco::JWT;
SerializerTest::SerializerTest(const std::string& name):
CppUnit::TestCase("SerializerTest")
{
}
SerializerTest::~SerializerTest()
{
}
void SerializerTest::setUp()
{
}
void SerializerTest::tearDown()
{
}
void SerializerTest::testSerializeEmpty()
{
Poco::JSON::Object::Ptr pObject = new Poco::JSON::Object;
std::string str = Serializer::serialize(*pObject);
assert (str == "e30");
}
void SerializerTest::testSerializeAlgNone()
{
Poco::JSON::Object::Ptr pObject = new Poco::JSON::Object;
pObject->set("alg", std::string("none"));
std::string str = Serializer::serialize(*pObject);
assert (str == "eyJhbGciOiJub25lIn0");
}
void SerializerTest::testSerializeAlgHS256()
{
Poco::JSON::Object::Ptr pObject = new Poco::JSON::Object;
pObject->set("alg", std::string("HS256"));
pObject->set("typ", std::string("JWT"));
std::string str = Serializer::serialize(*pObject);
assert (str == "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9");
}
void SerializerTest::testDeserializeEmpty()
{
std::string serialized("e30");
Poco::JSON::Object::Ptr pObject = Serializer::deserialize(serialized);
assert (pObject->size() == 0);
}
void SerializerTest::testDeserializeAlgNone()
{
std::string serialized("eyJhbGciOiJub25lIn0");
Poco::JSON::Object::Ptr pObject = Serializer::deserialize(serialized);
assert (pObject->size() == 1);
assert (pObject->getValue<std::string>("alg") == "none");
}
void SerializerTest::testDeserializeAlgHS256()
{
std::string serialized("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9");
Poco::JSON::Object::Ptr pObject = Serializer::deserialize(serialized);
assert (pObject->size() == 2);
assert (pObject->getValue<std::string>("alg") == "HS256");
assert (pObject->getValue<std::string>("typ") == "JWT");
}
void SerializerTest::testSplit()
{
std::string jwt("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
std::vector<std::string> parts = Serializer::split(jwt);
assert (parts.size() == 3);
assert (parts[0] == "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9");
assert (parts[1] == "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ");
assert (parts[2] == "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
}
void SerializerTest::testSplitEmptySig()
{
std::string jwt("eyJhbGciOiJub25lIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.");
std::vector<std::string> parts = Serializer::split(jwt);
assert (parts.size() == 3);
assert (parts[0] == "eyJhbGciOiJub25lIn0");
assert (parts[1] == "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ");
assert (parts[2] == "");
}
CppUnit::Test* SerializerTest::suite()
{
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SerializerTest");
CppUnit_addTest(pSuite, SerializerTest, testSerializeEmpty);
CppUnit_addTest(pSuite, SerializerTest, testSerializeAlgNone);
CppUnit_addTest(pSuite, SerializerTest, testSerializeAlgHS256);
CppUnit_addTest(pSuite, SerializerTest, testDeserializeEmpty);
CppUnit_addTest(pSuite, SerializerTest, testDeserializeAlgNone);
CppUnit_addTest(pSuite, SerializerTest, testDeserializeAlgHS256);
CppUnit_addTest(pSuite, SerializerTest, testSplit);
CppUnit_addTest(pSuite, SerializerTest, testSplitEmptySig);
return pSuite;
}