From a2b12c4b2819ffb4aa5409f5122c7f356f9776ef Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Tue, 10 Feb 2015 21:53:56 +0100 Subject: [PATCH] ADD: test for mysql interface (requires config.txt) --- test/src/sql.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 test/src/sql.cpp diff --git a/test/src/sql.cpp b/test/src/sql.cpp new file mode 100644 index 0000000..0b45e63 --- /dev/null +++ b/test/src/sql.cpp @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +extern std::string sqlHost, sqlUser, sqlPass, sqlDB; + +BOOST_AUTO_TEST_SUITE( TestTime ) + +BOOST_AUTO_TEST_CASE( testSQL ) { + BOOST_REQUIRE( parseConfig("config.txt") == 0 ); + std::shared_ptr jp( new MySQLJobProvider( sqlHost, sqlUser, sqlPass, sqlDB ) ); + BOOST_REQUIRE( jp->query( "TRUNCATE TABLE profiles" ).first == 0 ); + BOOST_REQUIRE( jp->query( "TRUNCATE TABLE certs" ).first == 0 ); + BOOST_REQUIRE( jp->query( "TRUNCATE TABLE certAvas" ).first == 0 ); + BOOST_REQUIRE( jp->query( "TRUNCATE TABLE subjectAlternativeNames" ).first == 0 ); + BOOST_REQUIRE( jp->query( "TRUNCATE TABLE jobs" ).first == 0 ); + BOOST_REQUIRE( jp->query( "INSERT INTO profiles SET id='1', keyname='assured', keyUsage='', extendedKeyUsage='', name='assured'" ).first == 0 ); + BOOST_REQUIRE( jp->query( "INSERT INTO jobs SET task='sign', targetId='1'" ).first == 0 ); + + std::shared_ptr job = jp->fetchJob(); + BOOST_REQUIRE( job ); + jp->failJob(job); + BOOST_REQUIRE_EQUAL( job->target, "1" ); + BOOST_REQUIRE_EQUAL( job->task, "sign" ); + job = jp->fetchJob(); + BOOST_REQUIRE( job ); + std::shared_ptr cert = jp->fetchTBSCert(job); + BOOST_REQUIRE( !cert ); + BOOST_REQUIRE( jp->query( "INSERT INTO certs SET csr_type='CSR', id='1', profile='1'" ).first == 0 ); + BOOST_REQUIRE( jp->query( "INSERT INTO subjectAlternativeNames SET certId='1', contents='example.org', type='DNS'" ).first == 0 ); + BOOST_REQUIRE( jp->query( "INSERT INTO certAvas SET certid='1', name='CN', value='example.org'" ).first == 0 ); + cert = jp->fetchTBSCert(job); + BOOST_REQUIRE( cert ); + + std::shared_ptr fcert( new SignedCertificate() ); + fcert->certificate="CERT"; + fcert->serial="1234"; + fcert->crt_name="crt.name.crt"; + fcert->ca_name="assured"; + jp->writeBack( job, fcert ); + jp->finishJob( job ); + BOOST_REQUIRE( !jp->fetchJob() ); + BOOST_REQUIRE( jp->query( "INSERT INTO jobs SET task='revoke', targetId='1'" ).first == 0 ); + job = jp->fetchJob(); + BOOST_REQUIRE_EQUAL( job->target, "1" ); + BOOST_REQUIRE_EQUAL( job->task, "revoke" ); + std::pair revocationInfo = jp->getRevocationInfo( job ); + BOOST_REQUIRE_EQUAL( revocationInfo.first, "1234"); + BOOST_REQUIRE_EQUAL( revocationInfo.second, "assured"); + jp->writeBackRevocation( job, "2000-01-01 01:01:01" ); + jp->finishJob( job ); +} + +BOOST_AUTO_TEST_CASE( testSQLDisconnected ) { + //if(1) return; + //BOOST_REQUIRE( parseConfig("config.txt") == 0 ); + std::shared_ptr jp( new MySQLJobProvider( sqlHost, sqlUser, sqlPass, sqlDB ) ); + jp->disconnect(); + jp->disconnect(); + BOOST_REQUIRE( jp->query("SELECT 1").first); + BOOST_REQUIRE_THROW( jp->escape_string("uia"), const char * ); + BOOST_REQUIRE_THROW( jp->finishJob(std::shared_ptr()), const char * ); + BOOST_REQUIRE_THROW( jp->failJob(std::shared_ptr()), const char * ); +} + +BOOST_AUTO_TEST_SUITE_END() -- 2.47.3