From 9be989729948c9aece39efdffae6c08a43adbfbc Mon Sep 17 00:00:00 2001 From: Carsten Karbach <c.karbach@fz-juelich.de> Date: Tue, 16 Jan 2018 08:53:15 +0100 Subject: [PATCH] Allow to send events as Model objects --- lib/EventManagement.php | 28 ++++++++++++++++++++++------ tests/EventManagementTest.php | 18 ++++++++++++++++-- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/lib/EventManagement.php b/lib/EventManagement.php index e09d26f..431ef76 100644 --- a/lib/EventManagement.php +++ b/lib/EventManagement.php @@ -178,6 +178,27 @@ class EventManagement{ */ public function sendEvent($name, $description, $baseURL='http://localhost/myapps/EventsAPI/rest/events', $certFile = null, $certKey = null, $certPassphrase = null){ + $event = new Event(); + $event->setName($name); + $event->setDescription($description); + $event->setDate(new \DateTime()); + + return $this->sendEventObject($event, $baseURL, $certFile, $certKey, $certPassphrase); + } + + /** + * Send an event according to swagger API model. + * Prepare any event you like, then send it with this function. + * + * @param Event $eventObject the event object you would like to send + * @param string $baseURL the root URL of the event receiver REST API + * @param string $certFile path to certificate file to use or null to call URL without certificate + * @param string $certKey path to certificate key file, null to avoid usage of key + * @param string $certPassphrase path to passphrase file for key file, null for no passphrase + * + * @return boolean true on success, false on error + */ + public function sendEventObject($eventObject, $baseURL='http://localhost/myapps/EventsAPI/rest/events', $certFile = null, $certKey = null, $certPassphrase = null){ date_default_timezone_set ( 'Europe/Amsterdam' ); $apiClient = new \jards\eventsapiclient\Swagger\Client\ApiClient (); $apiClient->getConfig ()->setHost ( $baseURL ); @@ -194,13 +215,8 @@ class EventManagement{ $eventsApi = new EventsApi($apiClient); - $event = new Event(); - $event->setName($name); - $event->setDescription($description); - $event->setDate(new \DateTime()); - try{ - $eventsApi->eventsPost($event); + $eventsApi->eventsPost($eventObject); } catch(\jards\eventsapiclient\Swagger\Client\ApiException $e){ return false; diff --git a/tests/EventManagementTest.php b/tests/EventManagementTest.php index b71d580..23f0cce 100644 --- a/tests/EventManagementTest.php +++ b/tests/EventManagementTest.php @@ -4,6 +4,7 @@ namespace jards\eventsapi\tests; use PHPUnit\Framework\TestCase; use jards\eventsapi\EventManagement; +use jards\eventsapiclient\Swagger\Client\Model\Event; class EventManagementTest extends TestCase{ @@ -54,13 +55,26 @@ class EventManagementTest extends TestCase{ $url = file_get_contents(__DIR__.'/../configs/myurl.cnf'); $success = $eventManagement->sendEvent('test event', 'This is only a test', $url); - $this->assertTrue($success, "Event sending was not successful"); $newEventIDs = $this->getExistingEventIDs(); - $this->assertNotEquals(join('|', $oldEventIDs), join('|', $newEventIDs), "No event seems to be sent"); + //Send event directly + $event = new Event(); + $event->setName('My event'); + $event->setDescription('Good event for testing'); + $event->setNewState('none'); + $event->setDate(new \DateTime()); + + $success = $eventManagement->sendEventObject($event, $url); + $this->assertTrue($success, "Event sending was not successful"); + + $newEventIDs2 = $this->getExistingEventIDs(); + $this->assertNotEquals(join('|', $newEventIDs), join('|', $newEventIDs2), "No event seems to be sent when sending event object"); + + $newEventIDs = $newEventIDs2; + foreach($newEventIDs as $newID){ if(! in_array($newID, $oldEventIDs)){ $toDelete = __DIR__.'/../data/'.$newID.'.obj'; -- GitLab