1 #include <boost/test/unit_test.hpp>
8 extern std::string sqlHost, sqlUser, sqlPass, sqlDB;
10 BOOST_AUTO_TEST_SUITE( TestSQL )
12 BOOST_AUTO_TEST_CASE( testSQL ) {
13 std::ifstream conf( "config.txt" );
16 BOOST_WARN_MESSAGE( 0, "Config file is missing. Exiting." );
20 BOOST_REQUIRE( parseConfig( "config.txt" ) == 0 );
21 std::shared_ptr<MySQLJobProvider> jp( new MySQLJobProvider( sqlHost, sqlUser, sqlPass, sqlDB ) );
22 BOOST_REQUIRE( jp->query( "TRUNCATE TABLE profiles" ).first == 0 );
23 BOOST_REQUIRE( jp->query( "TRUNCATE TABLE certs" ).first == 0 );
24 BOOST_REQUIRE( jp->query( "TRUNCATE TABLE certAvas" ).first == 0 );
25 BOOST_REQUIRE( jp->query( "TRUNCATE TABLE subjectAlternativeNames" ).first == 0 );
26 BOOST_REQUIRE( jp->query( "TRUNCATE TABLE jobs" ).first == 0 );
27 BOOST_REQUIRE( jp->query( "INSERT INTO profiles SET id='1', keyname='assured', keyUsage='', extendedKeyUsage='', name='assured'" ).first == 0 );
28 BOOST_REQUIRE( jp->query( "INSERT INTO jobs SET task='sign', targetId='1'" ).first == 0 );
30 std::shared_ptr<Job> job = jp->fetchJob();
33 BOOST_REQUIRE_EQUAL( job->target, "1" );
34 BOOST_REQUIRE_EQUAL( job->task, "sign" );
37 std::shared_ptr<TBSCertificate> cert = jp->fetchTBSCert( job );
38 BOOST_REQUIRE( !cert );
39 BOOST_REQUIRE( jp->query( "INSERT INTO certs SET csr_type='CSR', id='1', profile='1'" ).first == 0 );
40 BOOST_REQUIRE( jp->query( "INSERT INTO subjectAlternativeNames SET certId='1', contents='example.org', type='DNS'" ).first == 0 );
41 BOOST_REQUIRE( jp->query( "INSERT INTO certAvas SET certid='1', name='CN', value='example.org'" ).first == 0 );
42 cert = jp->fetchTBSCert( job );
43 BOOST_REQUIRE( cert );
45 std::shared_ptr<SignedCertificate> fcert( new SignedCertificate() );
46 fcert->certificate = "CERT";
47 fcert->serial = "1234";
48 fcert->crt_name = "crt.name.crt";
49 fcert->ca_name = "assured";
50 jp->writeBack( job, fcert );
52 BOOST_REQUIRE( !jp->fetchJob() );
53 BOOST_REQUIRE( jp->query( "INSERT INTO jobs SET task='revoke', targetId='1'" ).first == 0 );
55 BOOST_REQUIRE_EQUAL( job->target, "1" );
56 BOOST_REQUIRE_EQUAL( job->task, "revoke" );
57 std::pair<std::string, std::string> revocationInfo = jp->getRevocationInfo( job );
58 BOOST_REQUIRE_EQUAL( revocationInfo.first, "1234" );
59 BOOST_REQUIRE_EQUAL( revocationInfo.second, "assured" );
60 jp->writeBackRevocation( job, "2000-01-01 01:01:01" );
64 BOOST_AUTO_TEST_CASE( testSQLDisconnected ) {
65 std::ifstream conf( "config.txt" );
68 BOOST_WARN_MESSAGE( 0, "Config file is missing. Exiting." );
73 //BOOST_REQUIRE( parseConfig("config.txt") == 0 );
74 std::shared_ptr<MySQLJobProvider> jp( new MySQLJobProvider( sqlHost, sqlUser, sqlPass, sqlDB ) );
77 BOOST_REQUIRE( jp->query( "SELECT 1" ).first );
78 BOOST_REQUIRE_THROW( jp->escape_string( "uia" ), const char* );
79 BOOST_REQUIRE_THROW( jp->finishJob( std::shared_ptr<Job>() ), const char* );
80 BOOST_REQUIRE_THROW( jp->failJob( std::shared_ptr<Job>() ), const char* );
83 BOOST_AUTO_TEST_SUITE_END()