#include "se/DomainUpdateCommand.hpp" #include "se/DomainUpdateSyncCommandExtension.hpp" #include "se/CLTRID.hpp" #include "se/EPPDateFormatter.hpp" #include "se/DomainAdd.hpp" #include "se/Status.hpp" #include "se/DomainRem.hpp" #include "se/IllegalArgException.hpp" #include "xml/XMLParser.hpp" #include "common/init.hpp" #include "session/Timer.hpp" #include "common/Test.hpp" #include "common/ErrorPkg.hpp" #include using namespace std; void testSimpleUpdate() { Timer::setTime("20140101.010101"); CLTRID::setClID("ACTKUTST"); DomainUpdateCommand cmd("ACTKUTST.mop.biz"); const string xml(cmd.toXML()); ASSERT_EQ(xml, "ACTKUTST.mop.bizACTKUTST.20140101.010101.0"); } void testFullUpdate() { Timer::setTime("20140101.010101"); CLTRID::setClID("ACTKUTST"); const char* addNsText[] = { "ns1.ACTKUTST.mop.biz", "ns2.ACTKUTST.mop.biz" }; const vector addNs(addNsText, addNsText + 2); const vector addTechContacts(1, "JTKCON"); const vector addAdminContacts(1, "JTKCON2"); const vector addBillingContacts(1, "JTKCON3"); vector addStatus; addStatus.push_back(Status("clientHold", "non-payment")); // Could take the address of temporaries here since we 'know' DomainAdd // only dereferences during construction and does so to deep copy, but // this is more conventional. const DomainAdd add( &addNs, &addTechContacts, &addAdminContacts, &addBillingContacts, &addStatus); const char* remNsText[] = { "ns3.ACTKUTST.mop.biz", "ns4.ACTKUTST.mop.biz" }; const vector remNs(remNsText, remNsText + 2); const vector remTechContacts(1, "JTKCON2"); const vector remAdminContacts(1, "JTKCON"); const char* remStatusText[] = { "clientDeleteProhibited" }; const vector remStatus(remStatusText, remStatusText + 1 ); const DomainRem rem( &remNs, &remTechContacts, &remAdminContacts, NULL, &remStatus); const string name("ACTKUTST.mop.biz"); const string pw("jtkUT3st"); const string registrantID("JTKCON"); DomainUpdateCommand cmd("ACTKUTST.mop.biz", &pw, &add, &rem, ®istrantID); const string xml(cmd.toXML()); ASSERT_EQ(xml, "ACTKUTST.mop.bizns1.ACTKUTST.mop.bizns2.ACTKUTST.mop.bizJTKCONJTKCON2JTKCON3non-paymentns3.ACTKUTST.mop.bizns4.ACTKUTST.mop.bizJTKCON2JTKCONJTKCONjtkUT3stACTKUTST.20140101.010101.0"); } void testSyncExpiryDateExtension(void) { Timer::setTime("20140101.010101"); CLTRID::setClID("ACTKUTST"); DomainUpdateCommand cmd("ACTKUTST.mop.biz"); XMLGregorianCalendar *newExpiryDate = EPPDateFormatter::fromXSDateTime("2005-04-03T22:00:00.0Z"); DomainUpdateSyncCommandExtension extension(newExpiryDate); cmd.appendExtension(extension); const string xml(cmd.toXML()); delete newExpiryDate; ASSERT_EQ(xml, "ACTKUTST.mop.biz2005-04-03T22:00:00.0ZACTKUTST.20140101.010101.0"); } void testSyncExpiryDateExtensionWithNullDate(void) { try { DomainUpdateSyncCommandExtension extension(NULL); FAIL("Null exDate should have generated an exception"); } catch (IllegalArgException &e) { ASSERT_EQ(e.getMessage(), ErrorPkg::getMessage("se.domain.update.sync.exDate.missing")); } } int main(int argc, char* argv[]) { init("./etc/toolkit2.conf"); TEST_run(testSimpleUpdate); TEST_run(testFullUpdate); TEST_run(testSyncExpiryDateExtension); TEST_run(testSyncExpiryDateExtensionWithNullDate); return TEST_errorCount(); }