<?php
require_once __DIR__.'/../../vendor/autoload.php';
require_once __DIR__.'/../../vendor/lastcraft/simpletest/autorun.php';
require_once '../class/serialisation.php';
require_once '../class/log.php';
@Mock::generate('CS_REST_Log');
class CS_REST_TestResponseDeserialisation extends UnitTestCase {
var $responses;
var $deserialiser;
function setUp() {
$util_responses = array(
'clients' => array(
array(
'ClientID' => '4a397ccaaa55eb4e6aa1221e1e2d7122',
'Name' => 'Client One'
),
array(
'ClientID' => 'a206def0582eec7dae47d937a4109cb2',
'Name' => 'Client Two'
)
),
'apikey' => array(
'ApiKey' => '981298u298ue98u219e8u2e98u2'
),
'systemdate' => array(
'SystemDate' => '2010-10-15 09:27:00'
),
'custom_api_error' => array(
'Code' => 98798,
'Message' => 'A crazy API error'
),
'countries' => array(
"Afghanistan",
"Albania",
"Algeria",
"American Samoa",
"Andorra",
"Angola",
"Anguilla",
"Antigua & Barbuda",
"Argentina"
),
'timezones' => array(
"(GMT) Casablanca",
"(GMT) Coordinated Universal Time",
"(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London",
"(GMT) Monrovia, Reykjavik",
"(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",
"(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",
"(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
)
);
$client_responses = array(
'client_details' => array(
'ApiKey' => '7c86c29e930f4a1c3836eb57e9e3f4b283b06857489a750e',
'BasicDetails' => array(
'ClientID' => '4a397ccaaa55eb4e6aa1221e1e2d7122',
'CompanyName' => 'Client One',
'Country' => 'Australia',
'TimeZone' => '(GMT+10:00) Canberra, Melbourne, Sydney'
),
'BillingDetails' => array(
'CanPurchaseCredits' => true,
'MarkupOnDesignSpamTest' => 0,
'ClientPays' => true,
'BaseRatePerRecipient' => 1,
'MarkupPerRecipient' => 0,
'MarkupOnDelivery' => 0,
'BaseDeliveryRate' => 5,
'Currency' => 'USD',
'BaseDesignSpamTestRate' => 5
)
),
'create_client' => '32a381c49a2df99f1d0c6f3c112352b9',
'campaigns' => array(
array(
'WebVersionURL' => 'http://hello.createsend.com/t/ViewEmail/r/765E86829575EE2C/C67FD2F38AC4859C/',
'WebVersionTextURL' => 'http://createsend.com/t/r-765E86829575EE2C/t',
'CampaignID' => 'fc0ce7105baeaf97f47c99be31d02a91',
'Subject' => 'Campaign One',
'Name' => 'Campaign One',
'FromName' => 'My Name',
'FromEmail' => 'myemail@example.com',
'ReplyTo' => 'myemail@example.com',
'SentDate' => '2010-10-12 12:58:00',
'TotalRecipients' => 2245
),
array(
'WebVersionURL' => 'http://hello.createsend.com/t/ViewEmail/r/DD543566A87C9B8B/C67FD2F38AC4859C/',
'WebVersionTextURL' => 'http://createsend.com/t/r-DD543566A87C9B8B/t',
'CampaignID' => '072472b88c853ae5dedaeaf549a8d607',
'Subject' => 'Campaign Two',
'Name' => 'Campaign Two',
'FromName' => 'My Name',
'FromEmail' => 'myemail@example.com',
'ReplyTo' => 'myemail@example.com',
'SentDate' => '2010-10-06 16:20:00',
'TotalRecipients' => 11222
)
),
'scheduled' => array(
array(
"DateScheduled" => "2011-05-25 10:40:00",
"ScheduledTimeZone" => "(GMT+10:00) Canberra, Melbourne, Sydney",
"CampaignID" => "827dbbd2161ea9989fa11ad562c66937",
"Name" => "Magic Issue One",
"Subject" => "Magic Issue One",
'FromName' => 'My Name',
'FromEmail' => 'myemail@example.com',
'ReplyTo' => 'myemail@example.com',
"DateCreated" => "2011-05-24 10:37:00",
"PreviewURL" => "http://createsend.com/t/r-DD543521A87C9B8B",
"PreviewTextURL" => "http://createsend.com/t/r-DD543521A87C9B8B/t"
),
array(
"DateScheduled" => "2011-05-29 11:20:00",
"ScheduledTimeZone" => "(GMT+10:00) Canberra, Melbourne, Sydney",
"CampaignID" => "4f54bbd2161e65789fa11ad562c66937",
"Name" => "Magic Issue Two",
"Subject" => "Magic Issue Two",
'FromName' => 'My Name',
'FromEmail' => 'myemail@example.com',
'ReplyTo' => 'myemail@example.com',
"DateCreated" => "2011-05-24 10:39:00",
"PreviewURL" => "http://createsend.com/t/r-DD913521A87C9B8B",
"PreviewTextURL" => "http://createsend.com/t/r-DD913521A87C9B8B/t"
)
),
'drafts' => array(
array(
"CampaignID" => "7c7424792065d92627139208c8c01db1",
"Name" => "Draft One",
"Subject" => "Draft One",
'FromName' => 'My Name',
'FromEmail' => 'myemail@example.com',
'ReplyTo' => 'myemail@example.com',
"DateCreated" => "2010-08-19 16:08:00",
"PreviewURL" => "http://hello.createsend.com/t/ViewEmail/r/E97A7BB2E6983DA1/C67FD2F38AC4859C/",
"PreviewTextURL" => "http://createsend.com/t/r-E97A7BB2E6983DA1/t"
),
array(
"CampaignID" => "2e928e982065d92627139208c8c01db1",
"Name" => "Draft Two",
"Subject" => "Draft Two",
'FromName' => 'My Name',
'FromEmail' => 'myemail@example.com',
'ReplyTo' => 'myemail@example.com',
"DateCreated" => "2010-08-19 16:08:00",
"PreviewURL" => "http://hello.createsend.com/t/ViewEmail/r/E97A7BB2E6983DA1/C67FD2F38AC4859C/",
"PreviewTextURL" => "http://createsend.com/t/r-E97A7BB2E6983DA1/t"
)
),
'lists' => array(
array(
"ListID" => "a58ee1d3039b8bec838e6d1482a8a965",
"Name" => "List One"
),
array(
"ListID" => "99bc35084a5739127a8ab81eae5bd305",
"Name" => "List Two"
)
),
'segments' => array(
array(
'ListID' => 'a58ee1d3039b8bec838e6d1482a8a965',
'SegmentID' => '46aa5e01fd43381863d4e42cf277d3a9',
'Title' => 'Segment One'
),
array(
'ListID' => '8dffb94c60c5faa3d40f496f2aa58a8a',
'SegmentID' => 'dhw9q8jd9q8wd09quw0d909wid9i09iq',
'Title' => 'Segment Two'
)
),
'suppressionlist' => array(
"Results" => array(
array(
"SuppressionReason" => "Unsubscribed",
"EmailAddress" => "example+1@example.com",
"Date" => "2010-10-26 10:55:31",
"State" => "Suppressed"
),
array(
"SuppressionReason" => "Unsubscribed",
"EmailAddress" => "example+2@example.com",
"Date" => "2010-10-26 10:55:31",
"State" => "Suppressed"
),
array(
"SuppressionReason" => "Unsubscribed",
"EmailAddress" => "example+3@example.com",
"Date" => "2010-10-26 10:55:31",
"State" => "Suppressed"
),
array(
"SuppressionReason" => "Unsubscribed",
"EmailAddress" => "subscriber@example.com",
"Date" => "2010-10-25 13:11:04",
"State" => "Suppressed"
),
array(
"SuppressionReason" => "Unsubscribed",
"EmailAddress" => "subscriberone@example.com",
"Date" => "2010-10-25 13:04:15",
"State" => "Suppressed"
)
),
"ResultsOrderedBy" => "email",
"OrderDirection" => "asc",
"PageNumber" => 1,
"PageSize" => 1000,
"RecordsOnThisPage" => 5,
"TotalNumberOfRecords" => 5,
"NumberOfPages" => 1
)
);
$subscriber_responses = array(
'active_subscribers' => array(
"Results" => array(
array(
"EmailAddress" => "subs+7t8787Y@example.com",
"Name" => "Person One",
"Date" => "2010-10-25 10:28:00",
"State" => "Active",
"CustomFields" => array(
array(
"Key" => "website",
"Value" => "http://example.com"
),
array(
"Key" => "age",
"Value" => "24"
),
array(
"Key" => "subscription date",
"Value" => "2010-03-09"
)
)
),
array(
"EmailAddress" => "subs+7878787y8ggg@example.com",
"Name" => "Person Two",
"Date" => "2010-10-25 12:17:00",
"State" => "Active",
"CustomFields" => array(
array(
"Key" => "website",
"Value" => "http://subdomain.example.com"
)
)
),
array(
"EmailAddress" => "subs+7890909i0ggg@example.com",
"Name" => "Person Three",
"Date" => "2010-10-25 12:52:00",
"State" => "Active",
"CustomFields" => array(
array(
"Key" => "website",
"Value" => "http://subdomain.example.com"
)
)
),
array(
"EmailAddress" => "subs@example.com",
"Name" => "Person Four",
"Date" => "2010-10-27 13:13:00",
"State" => "Active",
"CustomFields" => array()
),
array(
"EmailAddress" => "joey@example.com",
"Name" => "Person Five",
"Date" => "2010-10-27 13:13:00",
"State" => "Active",
"CustomFields" => array()
)
),
"ResultsOrderedBy" => "email",
"OrderDirection" => "asc",
"PageNumber" => 1,
"PageSize" => 1000,
"RecordsOnThisPage" => 5,
"TotalNumberOfRecords" => 5,
"NumberOfPages" => 1
),
'add_subscriber' => 'subscriber@example.com',
'import_subscribers' => array(
'FailureDetails' => array(),
'TotalUniqueEmailsSubmitted' => 3,
'TotalExistingSubscribers' => 0,
'TotalNewSubscribers' => 3,
'DuplicateEmailsInSubmission' => array()
),
'import_subscribers_partial_success' => array(
"ResultData" => array(
"TotalUniqueEmailsSubmitted" => 3,
"TotalExistingSubscribers" => 2,
"TotalNewSubscribers" => 0,
"DuplicateEmailsInSubmission" => array(),
"FailureDetails" => array(
array(
"EmailAddress" => "example+1@example",
"Code" => 1,
"Message" => "Invalid Email Address"
)
)
),
"Code" => 210,
"Message" => "Subscriber Import had some failures"
),
'subscriber_details' => array(
'EmailAddress' => 'subscriber@example.com',
'Name' => 'Subscriber One',
'Date' => '2010-10-25 10:28:00',
'State' => 'Active',
'CustomFields' => array(
array(
'Key' => 'website',
'Value' => 'http://example.com'
),
array(
'Key' => 'age',
'Value' => '24'
),
array(
'Key' => 'subscription date',
'Value' => '2010-03-09'
)
)
),
'subscriber_history' => array(
array(
'ID' => 'fc0ce7105baeaf97f47c99be31d02a91',
'Type' => 'Campaign',
'Name' => 'Campaign One',
'Actions' => array(
array(
'Event' => 'Open',
'Date' => '2010-10-12 13:18:00',
'IPAddress' => '192.168.126.87',
'Detail' => ''
),
array(
'Event' => 'Click',
'Date' => '2010-10-12 13:16:00',
'IPAddress' => '192.168.126.87',
'Detail' => 'http://example.com/post/12323/'
),
array(
'Event' => 'Click',
'Date' => '2010-10-12 13:15:00',
'IPAddress' => '192.168.126.87',
'Detail' => 'http://example.com/post/29889/'
),
array(
'Event' => 'Open',
'Date' => '2010-10-12 13:15:00',
'IPAddress' => '192.168.126.87',
'Detail' => ''
),
array(
'Event' => 'Click',
'Date' => '2010-10-12 13:01:00',
'IPAddress' => '192.168.126.87',
'Detail' => 'http://example.com/post/82211/'
),
array(
'Event' => 'Open',
'Date' => '2010-10-12 13:01:00',
'IPAddress' => '192.168.126.87',
'Detail' => ''
)
)
)
)
);
$list_responses = array (
'custom_fields' => array(
array(
"FieldName" => "website",
"Key" => "[website]",
"DataType" => "Text",
"FieldOptions" => array()
),
array(
"FieldName" => "age",
"Key" => "[age]",
"DataType" => "Number",
"FieldOptions" => array()
),
array(
"FieldName" => "subscription date",
"Key" => "[subscriptiondate]",
"DataType" => "Date",
"FieldOptions" => array()
)
),
'create_list' => 'e3c5f034d68744f7881fdccf13c2daee',
'create_custom_field' => '[newdatefield]',
'list_details' => array(
'ConfirmedOptIn' => false,
'Title' => 'a non-basic list :)',
'UnsubscribePage' => '',
'ListID' => '2fe4c8f0373ce320e2200596d7ef168f',
'ConfirmationSuccessPage' => ''
),
'list_stats' => array(
"TotalActiveSubscribers" => 6,
"NewActiveSubscribersToday" => 0,
"NewActiveSubscribersYesterday" => 8,
"NewActiveSubscribersThisWeek" => 8,
"NewActiveSubscribersThisMonth" => 8,
"NewActiveSubscribersThisYear" => 8,
"TotalUnsubscribes" => 2,
"UnsubscribesToday" => 0,
"UnsubscribesYesterday" => 2,
"UnsubscribesThisWeek" => 2,
"UnsubscribesThisMonth" => 2,
"UnsubscribesThisYear" => 2,
"TotalDeleted" => 0,
"DeletedToday" => 0,
"DeletedYesterday" => 0,
"DeletedThisWeek" => 0,
"DeletedThisMonth" => 0,
"DeletedThisYear" => 0,
"TotalBounces" => 0,
"BouncesToday" => 0,
"BouncesYesterday" => 0,
"BouncesThisWeek" => 0,
"BouncesThisMonth" => 0,
"BouncesThisYear" => 0
),
'bounced_subscribers' => array(
'Results' => array(
array(
'EmailAddress' => 'bouncedsubscriber@example.com',
'Name' => 'Bounced One',
'Date' => '2010-10-25 13:11:00',
'State' => 'Bounced',
'CustomFields' => array()
)
),
'ResultsOrderedBy' => 'email',
'OrderDirection' => 'asc',
'PageNumber' => 1,
'PageSize' => 1000,
'RecordsOnThisPage' => 1,
'TotalNumberOfRecords' => 1,
'NumberOfPages' => 1
),
'unsubscribed_subscribers' => array(
"Results" => array(
array(
"EmailAddress" => "subscriber@example.com",
"Name" => "Unsub One",
"Date" => "2010-10-25 13:11:00",
"State" => "Unsubscribed",
"CustomFields" => array()
),
array(
"EmailAddress" => "subscriberone@example.com",
"Name" => "Subscriber",
"Date" => "2010-10-25 13:04:00",
"State" => "Unsubscribed",
"CustomFields" => array(
array(
"Key" => "website",
"Value" => "http://google.com"
)
)
),
array(
"EmailAddress" => "example+1@example.com",
"Name" => "Example One",
"Date" => "2010-10-26 10:56:00",
"State" => "Unsubscribed",
"CustomFields" => array()
),
array(
"EmailAddress" => "example+2@example.com",
"Name" => "Example Two",
"Date" => "2010-10-26 10:56:00",
"State" => "Unsubscribed",
"CustomFields" => array()
),
array(
"EmailAddress" => "example+3@example.com",
"Name" => "Example Three",
"Date" => "2010-10-26 10:56:00",
"State" => "Unsubscribed",
"CustomFields" => array()
)
),
"ResultsOrderedBy" => "email",
"OrderDirection" => "asc",
"PageNumber" => 1,
"PageSize" => 1000,
"RecordsOnThisPage" => 5,
"TotalNumberOfRecords" => 5,
"NumberOfPages" => 1
),
'list_webhooks' => array(
array(
"WebhookID" => "943678317049bc13",
"Events" => array(
"Bounce",
"Spam"
),
"Url" => "http://www.postbin.org/d9w8ud9wud9w",
"Status" => "Active",
"PayloadFormat" => "Json"
),
array(
"WebhookID" => "ee1b3864e5ca6161",
"Events" => array(
"Subscribe"
),
"Url" => "http://www.postbin.org/hiuhiu2h2u",
"Status" => "Active",
"PayloadFormat" => "Xml"
)
),
'create_list_webhook' => '6a783d359bd44ef62c6ca0d3eda4412a'
);
$campaign_responses = array(
'create_campaign' => '787y87y87y87y87y87y87',
'campaign_unsubscribes' => array(
'Results' => array(
array(
'EmailAddress' => 'subs+6576576576@example.com',
'ListID' => '512a3bc577a58fdf689c654329b50fa0',
'Date' => '2010-10-11 08:29:00',
'IPAddress' => '192.168.126.87'
)
),
'ResultsOrderedBy' => 'date',
'OrderDirection' => 'asc',
'PageNumber' => 1,
'PageSize' => 1000,
'RecordsOnThisPage' => 1,
'TotalNumberOfRecords' => 1,
'NumberOfPages' => 1
),
'campaign_summary' => array(
'Recipients' => 5,
'TotalOpened' => 10,
'Clicks' => 0,
'Unsubscribed' => 0,
'Bounced' => 0,
'UniqueOpened' => 5,
'WebVersionURL' => 'http://clientone.createsend.com/t/ViewEmail/r/3A433FC72FFE3B8B/C67FD2F38AC4859C/',
'WebVersionTextURL' => 'http://createsend.com/t/r-3A433FC72FFE3B8B/t',
'WorldviewURL' => 'http://clientone.createsend.com/reports/wv/r/3A433FC72FFE3B8B',
'ForwardToAFriends' => 18,
'FacebookLikes' => 25,
'TwitterTweets' => 11
),
'campaign_listsandsegments' => array(
'Lists' => array(
array(
'ListID' => 'a58ee1d3039b8bec838e6d1482a8a965',
'Name' => 'List One'
)
),
'Segments' => array(
array(
'ListID' => '2bea949d0bf96148c3e6a209d2e82060',
'SegmentID' => 'dba84a225d5ce3d19105d7257baac46f',
'Title' => 'Segment for campaign'
)
)
),
'campaign_opens' => array(
"Results" => array(
array(
"EmailAddress" => "subs+6576576576@example.com",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-11 08:29:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
),
array(
"EmailAddress" => "subs+6576576576@example.com",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-08 14:24:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
),
array(
"EmailAddress" => "subs+6576576576@example.com",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-07 10:20:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
),
array(
"EmailAddress" => "subs+6576576576@example.com",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-07 07:15:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
),
array(
"EmailAddress" => "subs+6576576576@example.com",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-07 06:58:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
)
),
"ResultsOrderedBy" => "date",
"OrderDirection" => "asc",
"PageNumber" => 1,
"PageSize" => 1000,
"RecordsOnThisPage" => 5,
"TotalNumberOfRecords" => 5,
"NumberOfPages" => 1
),
'campaign_recipients' => array(
'Results' => array(
array(
"EmailAddress" => "subs+6g76t7t0@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t10@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t100@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1000@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1001@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1002@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1003@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1004@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1005@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1006@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1007@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1008@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1009@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t101@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1010@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1011@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1012@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1013@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
),
array(
"EmailAddress" => "subs+6g76t7t1014@example.com",
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
)
),
'ResultsOrderedBy' => 'email',
'OrderDirection' => 'asc',
'PageNumber' => 1,
'PageSize' => 20,
'RecordsOnThisPage' => 20,
'TotalNumberOfRecords' => 2200,
'NumberOfPages' => 110
),
'campaign_clicks' => array(
"Results" => array(
array(
"EmailAddress" => "subs+6576576576@example.com",
"URL" => "http://video.google.com.au/?hl=en&tab=wv",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-11 08:29:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
),
array(
"EmailAddress" => "subs+6576576576@example.com",
"URL" => "http://mail.google.com/mail/?hl=en&tab=wm",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-11 08:29:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
),
array(
"EmailAddress" => "subs+6576576576@example.com",
"URL" => "http://mail.google.com/mail/?hl=en&tab=wm",
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
"Date" => "2010-10-06 17:24:00",
"IPAddress" => "192.168.126.87",
"Latitude" => -33.8683,
"Longitude" => 151.2086,
"City" => "Sydney",
"Region" => "New South Wales",
"CountryCode" => "AU",
"CountryName" => "Australia"
)
),
"ResultsOrderedBy" => "date",
"OrderDirection" => "asc",
"PageNumber" => 1,
"PageSize" => 1000,
"RecordsOnThisPage" => 3,
"TotalNumberOfRecords" => 3,
"NumberOfPages" => 1
),
'campaign_bounces' => array(
"Results" => array(
array(
"EmailAddress" => "asdf@softbouncemyemail.com",
"ListID" => "654523a5855b4a440bae3fb295641546",
"BounceType" => "Soft",
"Date" => "2010-07-02 16:46:00",
"Reason" => "Bounce - But No Email Address Returned "
),
array(
"EmailAddress" => "asdf@hardbouncemyemail.com",
"ListID" => "654523a5855b4a440bae3fb295641546",
"BounceType" => "Soft",
"Date" => "2010-07-02 16:46:00",
"Reason" => "Soft Bounce - General"
)
),
"ResultsOrderedBy" => "date",
"OrderDirection" => "asc",
"PageNumber" => 1,
"PageSize" => 1000,
"RecordsOnThisPage" => 2,
"TotalNumberOfRecords" => 2,
"NumberOfPages" => 1
)
);
$segment_responses = array(
'segment_subscribers' => array(
"Results" => array(
array(
"EmailAddress" => "personone@example.com",
"Name" => "Person One",
"Date" => "2010-10-27 13:13:00",
"State" => "Active",
"CustomFields" => array()
),
array(
"EmailAddress" => "persontwo@example.com",
"Name" => "Person Two",
"Date" => "2010-10-27 13:13:00",
"State" => "Active",
"CustomFields" => array()
)
),
"ResultsOrderedBy" => "email",
"OrderDirection" => "asc",
"PageNumber" => 1,
"PageSize" => 1000,
"RecordsOnThisPage" => 2,
"TotalNumberOfRecords" => 2,
"NumberOfPages" => 1
),
'create_segment' => '0246c2aea610a3545d9780bf6ab89006'
);
$template_responses = array(
'create_template' => '98y2e98y289dh89h938389',
'template_details' => array(
'TemplateID' => '98y2e98y289dh89h938389',
'Name' => 'Template One',
'PreviewURL' => 'http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=01AF532CD8889B33&d=r&c=E816F55BFAD1A753',
'ScreenshotURL' => 'http://preview.createsend.com/ts/r/14/833/263/14833263.jpg?0318092600'
),
'templates' => array(
array(
"TemplateID" => "5cac213cf061dd4e008de5a82b7a3621",
"Name" => "Template One",
"PreviewURL" => "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=01AF532CD8889B33&d=r&c=E816F55BFAD1A753",
"ScreenshotURL" => "http://preview.createsend.com/ts/r/14/833/263/14833263.jpg?0318092541"
),
array(
"TemplateID" => "da645c271bc85fb6550acff937c2ab2e",
"Name" => "Template Two",
"PreviewURL" => "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=C8A180629495E798&d=r&c=E816F55BFAD1A753",
"ScreenshotURL" => "http://preview.createsend.com/ts/r/18/7B3/552/187B3552.jpg?0705043527"
)
)
);
$this->responses = array_merge(
array_merge(
array_merge(
array_merge(
array_merge(
array_merge(
$util_responses,
$client_responses
),
$subscriber_responses
),
$list_responses
),
$campaign_responses
),
$segment_responses
),
$template_responses
);
}
function do_test_response_deserialisation() {
if(!is_null($this->deserialiser)) {
$response_dir = 'responses/';
foreach ($this->responses as $k => $v) {
$filename = $response_dir.$k.'.json';
if(file_exists($filename)) {
$response = file_get_contents($filename);
$result = $this->deserialiser->deserialise($response);
$this->assert_identical_ignoring_type($result, $v,
'Failed to deserialise response for '.$k);
}
}
}
}
function test_services_json_serializer() {
$log = new MockCS_REST_Log($this);
$this->deserialiser = new CS_REST_ServicesJsonSerialiser($log);
$this->do_test_response_deserialisation();
}
function test_services_native_serializer() {
if(function_exists('json_decode') && function_exists('json_encode')):
$log = new MockCS_REST_Log($this);
$this->deserialiser = new CS_REST_NativeJsonSerialiser($log);
$this->do_test_response_deserialisation();
endif;
}
function assert_identical_ignoring_type($object, $expected, $message) {
if(is_array($expected)) {
if(isset($expected[0])) {
$this->assertIsA($object, 'array', $message.' Item is not an array');
$this->assertIdentical(count($expected), count($object), $message.' Invalid array length');
for($i = 0; $i < count($expected); $i++) {
$this->assert_identical_ignoring_type($object[$i], $expected[$i],
$message.' Checking #'.$i);
}
} else {
foreach($expected as $k => $v) {
$this->assert_identical_ignoring_type($object->$k, $v, $message.' Checking '.$k);
}
}
} else {
$this->assertEqual($expected, $object, $message.' Items are not equal');
}
}
}