#include <ckm/ckm-type.h>
#include <exception.h>
+#include <message-buffer.h>
-using CKM::DataType;
-using CKM::KeyType;
-using CKM::AlgoType;
+using namespace CKM;
BOOST_AUTO_TEST_SUITE(DATA_TYPE_TEST)
NEGATIVE_TEST_CASE(CONSTRUCTOR)
{
- BOOST_REQUIRE_THROW(DataType(static_cast<DataType::Type>(999)),
- CKM::Exc::InputParam);
- BOOST_REQUIRE_THROW(DataType(static_cast<KeyType>(999)),
- CKM::Exc::InputParam);
+ BOOST_REQUIRE_THROW(DataType(KeyType::KEY_NONE), Exc::InputParam);
+ BOOST_REQUIRE_THROW(DataType(static_cast<KeyType>(static_cast<int>(KeyType::KEY_AES) + 1)),
+ Exc::InputParam);
+ BOOST_REQUIRE_THROW(DataType(static_cast<DataType::Type>(DataType::DB_FIRST - 1)),
+ Exc::InputParam);
+ BOOST_REQUIRE_THROW(DataType(static_cast<DataType::Type>(DataType::DB_LAST + 1)),
+ Exc::InputParam);
+}
+
+NEGATIVE_TEST_CASE(SERIALIZATION)
+{
+ MessageBuffer msg;
+ msg.Push(MessageBuffer::Serialize(static_cast<int>(DataType::DB_FIRST - 1)).Pop());
+ BOOST_REQUIRE_THROW(DataType{msg}, Exc::InputParam);
+ msg.Push(MessageBuffer::Serialize(static_cast<int>(DataType::DB_LAST + 1)).Pop());
+ BOOST_REQUIRE_THROW(DataType{msg}, Exc::InputParam);
+}
+
+POSITIVE_TEST_CASE(SERIALIZATION)
+{
+ auto checkSerialization = [](DataType::Type typeToCheck){
+ MessageBuffer msg;
+ DataType dt;
+
+ BOOST_REQUIRE_NO_THROW(DataType(typeToCheck).Serialize(msg));
+ msg.Push(msg.Pop());
+ BOOST_REQUIRE_NO_THROW(dt = DataType{msg});
+ BOOST_REQUIRE(dt == typeToCheck);
+ };
+
+ checkSerialization(DataType::DB_FIRST);
+ checkSerialization(DataType::DB_LAST);
}
POSITIVE_TEST_CASE(KEY_TYPE_CASTING)
BOOST_REQUIRE(!DataType(DataType::DB_CHAIN_FIRST).isKey());
BOOST_REQUIRE(!DataType(DataType::CERTIFICATE).isKey());
BOOST_REQUIRE(!DataType().isKey());
+
+ BOOST_REQUIRE(DataType(DataType::KEY_ECDSA_PRIVATE).isEllipticCurve());
+ BOOST_REQUIRE(DataType(DataType::KEY_ECDSA_PUBLIC).isEllipticCurve());
+ BOOST_REQUIRE(!DataType(DataType::KEY_DSA_PRIVATE).isEllipticCurve());
+ BOOST_REQUIRE(!DataType(DataType::KEY_DSA_PUBLIC).isEllipticCurve());
+ BOOST_REQUIRE(!DataType(DataType::KEY_RSA_PRIVATE).isEllipticCurve());
+ BOOST_REQUIRE(!DataType(DataType::KEY_DSA_PUBLIC).isEllipticCurve());
+ BOOST_REQUIRE(!DataType().isEllipticCurve());
}
POSITIVE_TEST_CASE(GET_CHAIN_TYPE)
{
DataType type;
- BOOST_REQUIRE_THROW(type.getChainDatatype(16), CKM::Exc::InputParam);
+ BOOST_REQUIRE_THROW(type.getChainDatatype(16), Exc::InputParam);
}
BOOST_AUTO_TEST_SUITE_END()