Browse code

added appinfo/info.xml appinfo/signature.json CHANGELOG.txt lib/AppInfo/Application.php css/style.css providers/Plivo

DoubleBastionAdmin authored on 05/11/2025 13:35:09
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,588 @@
1
+<?php
2
+
3
+namespace Resources;
4
+
5
+
6
+use Plivo\Http\PlivoRequest;
7
+use Plivo\Http\PlivoResponse;
8
+use Plivo\Tests\BaseTestCase;
9
+
10
+/**
11
+ * Class CallTest
12
+ * @package Resources
13
+ */
14
+class CallTest extends BaseTestCase
15
+{
16
+    function testExceptionCallCreate()
17
+    {
18
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
19
+        $request = new PlivoRequest(
20
+            'POST',
21
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
22
+            [
23
+                'from' => '919999999999',
24
+                'to' => '919999999999',
25
+                'answer_url' => '919999999999'
26
+            ]);
27
+        $body = file_get_contents(__DIR__ . '/../Mocks/callCreateResponse.json');
28
+
29
+        $this->mock(new PlivoResponse($request,201, $body));
30
+
31
+        $actual = $this->client->calls->create(
32
+            '919999999999', ['919999999999'], '919999999999');
33
+
34
+        $this->assertRequest($request);
35
+
36
+        self::assertNotNull($actual);
37
+
38
+        foreach ($actual as $actualCall) {
39
+            self::assertEquals(substr($actualCall->resourceUri, 0, 33), "/v1/Account/MAXXXXXXXXXXXXXXXXXX/");
40
+        }
41
+    }
42
+
43
+    function testCallCreate()
44
+    {
45
+        $request = new PlivoRequest(
46
+            'POST',
47
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
48
+            [
49
+                'from' => '919999999999',
50
+                'to' => '919999999998',
51
+                'answer_url' => 'http://answer.url'
52
+            ]);
53
+        $body = file_get_contents(__DIR__ . '/../Mocks/callCreateResponse.json');
54
+
55
+        $this->mock(new PlivoResponse($request,201, $body));
56
+
57
+        $actual = $this->client->calls->create(
58
+            '919999999999', ['919999999998'], 'http://answer.url');
59
+
60
+        $this->assertRequest($request);
61
+
62
+        self::assertNotNull($actual);
63
+
64
+        // $actual = json_decode($actual);
65
+
66
+        self::assertEquals($actual->message, "call fired");
67
+        self::assertEquals($actual->requestUuid, "9834029e-58b6-11e1-b8b7-a5bd0e4e126f");
68
+        self::assertEquals($actual->apiId, "97ceeb52-58b6-11e1-86da-77300b68f8bb");
69
+    }
70
+
71
+    function testCallList()
72
+    {
73
+        $request = new PlivoRequest(
74
+            'GET',
75
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
76
+            ['subaccount' => 'subacc']);
77
+        $body = file_get_contents(__DIR__ . '/../Mocks/callListResponse.json');
78
+
79
+        $this->mock(new PlivoResponse($request,200, $body));
80
+
81
+        $actual = $this->client->calls->list(['subaccount' => 'subacc']);
82
+
83
+        $this->assertRequest($request);
84
+
85
+        self::assertNotNull($actual);
86
+
87
+        foreach($actual->resources as $actualCall) {
88
+            
89
+            self::assertEquals(substr($actualCall->resourceUri, 0, 33), "/v1/Account/MAXXXXXXXXXXXXXXXXXX/");
90
+        }
91
+    }
92
+
93
+    function testCallDetails()
94
+    {
95
+        $request = new PlivoRequest(
96
+            'GET',
97
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/4d04c52e-cea3-4458-bbdb-0bfc314ee7cd/',
98
+            []);
99
+        $body = file_get_contents(__DIR__ . '/../Mocks/callGetResponse.json');
100
+
101
+        $this->mock(new PlivoResponse($request,200, $body));
102
+
103
+        $actual = $this->client->calls->get("4d04c52e-cea3-4458-bbdb-0bfc314ee7cd");
104
+
105
+        $this->assertRequest($request);
106
+
107
+        self::assertNotNull($actual);
108
+
109
+        self::assertEquals($actual->getId(), "4d04c52e-cea3-4458-bbdb-0bfc314ee7cd");
110
+    }
111
+
112
+    function testLiveCallList()
113
+    {
114
+        $request = new PlivoRequest(
115
+            'GET',
116
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
117
+            ['status'=>'live']);
118
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallListGetResponse.json');
119
+
120
+        $this->mock(new PlivoResponse($request,200, $body));
121
+
122
+        $actual = $this->client->calls->listLive;
123
+
124
+        $this->assertRequest($request);
125
+
126
+        self::assertNotNull($actual);
127
+
128
+        self::assertGreaterThan(0, count($actual));
129
+
130
+        foreach ($actual as $actualCall) {
131
+            self::assertEquals(36, strlen($actualCall));
132
+        }
133
+    }
134
+
135
+    function testLiveCallDetails()
136
+    {
137
+        $request = new PlivoRequest(
138
+            'GET',
139
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a/',
140
+            ['status'=>'live']);
141
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallGetResponse.json');
142
+
143
+        $this->mock(new PlivoResponse($request,200, $body));
144
+
145
+        $actual = $this->client->calls->getLive("d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a");
146
+
147
+        $this->assertRequest($request);
148
+
149
+        self::assertNotNull($actual);
150
+
151
+        self::assertEquals($actual->id, "d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a");
152
+    }
153
+
154
+    function testLiveCallTransfer()
155
+    {
156
+        $request = new PlivoRequest(
157
+            'POST',
158
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/',
159
+            [
160
+                'legs'=>'both',
161
+                'aleg_url' => 'http://a.leg',
162
+                'bleg_url' => 'http://b.leg'
163
+            ]);
164
+        $body = file_get_contents(__DIR__ . '/../Mocks/callUpdateResponse.json');
165
+
166
+        $this->mock(new PlivoResponse($request,201, $body));
167
+
168
+        $actual = $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
169
+            ['legs'=>'both',
170
+            'aleg_url' => 'http://a.leg',
171
+            'bleg_url' => 'http://b.leg']);
172
+
173
+        $this->assertRequest($request);
174
+
175
+        self::assertNotNull($actual);
176
+
177
+        self::assertEquals($actual->message, "call transfered");
178
+    }
179
+
180
+    function testException1LiveCallTransfer()
181
+    {
182
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
183
+        $request = new PlivoRequest();
184
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
185
+
186
+        $this->mock(new PlivoResponse($request,201, $body));
187
+
188
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
189
+            ['legs'=>'both',
190
+                'bleg_url' => 'http://b.leg']);
191
+    }
192
+
193
+    function testException2LiveCallTransfer()
194
+    {
195
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
196
+        $request = new PlivoRequest();
197
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
198
+
199
+        $this->mock(new PlivoResponse($request,201, $body));
200
+
201
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
202
+            ['legs'=>'aleg',
203
+                'bleg_url' => 'http://b.leg']);
204
+    }
205
+
206
+    function testException3LiveCallTransfer()
207
+    {
208
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
209
+        $request = new PlivoRequest();
210
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
211
+
212
+        $this->mock(new PlivoResponse($request,201, $body));
213
+
214
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
215
+            ['legs'=>'bleg']);
216
+    }
217
+
218
+    function testException4LiveCallTransfer()
219
+    {
220
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
221
+        $request = new PlivoRequest();
222
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
223
+
224
+        $this->mock(new PlivoResponse($request,201, $body));
225
+
226
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
227
+            ['legs'=>'some other leg']);
228
+    }
229
+
230
+    function testException5LiveCallTransfer()
231
+    {
232
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
233
+        $request = new PlivoRequest();
234
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
235
+
236
+        $this->mock(new PlivoResponse($request,201, $body));
237
+
238
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
239
+            ['bleg_url' => 'http://b.leg']);
240
+    }
241
+
242
+    function testLiveCallPlay()
243
+    {
244
+        $request = new PlivoRequest(
245
+            'POST',
246
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
247
+            ['urls'=>'']);
248
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
249
+
250
+        $this->mock(new PlivoResponse($request,201, $body));
251
+
252
+        $actual = $this->client->calls->play("dfshjkasfhjkasfhjkashf", [""]);
253
+
254
+        $this->assertRequest($request);
255
+
256
+        self::assertNotNull($actual);
257
+
258
+        self::assertEquals($actual->message, "play started");
259
+    }
260
+
261
+    function testExceptionLiveCallPlay()
262
+    {
263
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
264
+        $request = new PlivoRequest(
265
+            'POST',
266
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
267
+            ['urls'=> '']);
268
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
269
+
270
+        $this->mock(new PlivoResponse($request,201, $body));
271
+        $this->client->calls->play(null, [""]);
272
+    }
273
+
274
+    function testLiveCallStartPlay()
275
+    {
276
+        $request = new PlivoRequest(
277
+            'POST',
278
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
279
+            ['urls'=>'']);
280
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
281
+
282
+        $this->mock(new PlivoResponse($request,201, $body));
283
+
284
+        $actual = $this->client->calls->startPlaying("dfshjkasfhjkasfhjkashf", [""]);
285
+
286
+        $this->assertRequest($request);
287
+
288
+        self::assertNotNull($actual);
289
+
290
+        self::assertEquals($actual->message, "play started");
291
+    }
292
+
293
+    function testLiveCallStopPlay()
294
+    {
295
+        $request = new PlivoRequest(
296
+            'DELETE',
297
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
298
+            []);
299
+        $body = '{}';
300
+
301
+        $this->mock(new PlivoResponse($request,204, $body));
302
+
303
+        $actual = $this->client->calls->stopPlaying("dfshjkasfhjkasfhjkashf");
304
+
305
+        $this->assertRequest($request);
306
+
307
+        self::assertNull($actual);
308
+    }
309
+
310
+    function testLiveCallSpeak()
311
+    {
312
+        $request = new PlivoRequest(
313
+            'POST',
314
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
315
+            ['text'=>'Speak this']);
316
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
317
+
318
+        $this->mock(new PlivoResponse($request,201, $body));
319
+
320
+        $actual = $this->client->calls->speak("dfshjkasfhjkasfhjkashf", "Speak this");
321
+
322
+        $this->assertRequest($request);
323
+
324
+        self::assertNotNull($actual);
325
+
326
+        self::assertEquals($actual->message, "speak started");
327
+    }
328
+
329
+    function testExceptionLiveCallSpeak()
330
+    {
331
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
332
+        $request = new PlivoRequest(
333
+            'POST',
334
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
335
+            ['text'=>'Speak this']);
336
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
337
+
338
+        $this->mock(new PlivoResponse($request,201, $body));
339
+        $this->client->calls->speak(null, "Speak this");
340
+    }
341
+
342
+    function testLiveCallStartSpeak()
343
+    {
344
+        $request = new PlivoRequest(
345
+            'POST',
346
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
347
+            ['text'=>'Speak this']);
348
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
349
+
350
+        $this->mock(new PlivoResponse($request,201, $body));
351
+
352
+        $actual = $this->client->calls->startSpeaking("dfshjkasfhjkasfhjkashf", "Speak this");
353
+
354
+        $this->assertRequest($request);
355
+
356
+        self::assertNotNull($actual);
357
+
358
+        self::assertEquals($actual->message, "speak started");
359
+    }
360
+
361
+    function testLiveCallStopSpeak()
362
+    {
363
+        $request = new PlivoRequest(
364
+            'DELETE',
365
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
366
+            []);
367
+        $body = '{}';
368
+
369
+        $this->mock(new PlivoResponse($request,204, $body));
370
+
371
+        $actual = $this->client->calls->stopSpeaking("dfshjkasfhjkasfhjkashf");
372
+
373
+        $this->assertRequest($request);
374
+
375
+        self::assertNull($actual);
376
+    }
377
+
378
+    function testLiveCallRecord()
379
+    {
380
+        $request = new PlivoRequest(
381
+            'POST',
382
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
383
+            []);
384
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
385
+
386
+        $this->mock(new PlivoResponse($request,201, $body));
387
+
388
+        $actual = $this->client->calls->record("dfshjkasfhjkasfhjkashf");
389
+
390
+        $this->assertRequest($request);
391
+
392
+        self::assertNotNull($actual);
393
+
394
+        self::assertEquals($actual->url, "http://s3.amazonaws.com/recordings_2013/48dfaf60-3b2a-11e3.mp3");
395
+        self::assertEquals($actual->message, "call recording started");
396
+        self::assertEquals($actual->recordingId, "48dfaf60-3b2a-11e3");
397
+        self::assertEquals($actual->apiId, "c7b69074-58be-11e1-86da-adf28403fe48");
398
+    }
399
+
400
+    function testLiveCallStartRecord()
401
+    {
402
+        $request = new PlivoRequest(
403
+            'POST',
404
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
405
+            []);
406
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
407
+
408
+        $this->mock(new PlivoResponse($request,201, $body));
409
+
410
+        $actual = $this->client->calls->startRecording("dfshjkasfhjkasfhjkashf");
411
+
412
+        $this->assertRequest($request);
413
+
414
+        self::assertNotNull($actual);
415
+
416
+        self::assertEquals($actual->url, "http://s3.amazonaws.com/recordings_2013/48dfaf60-3b2a-11e3.mp3");
417
+        self::assertEquals($actual->message, "call recording started");
418
+        self::assertEquals($actual->recordingId, "48dfaf60-3b2a-11e3");
419
+        self::assertEquals($actual->apiId, "c7b69074-58be-11e1-86da-adf28403fe48");
420
+    }
421
+
422
+    function testLiveCallStopRecord()
423
+    {
424
+        $request = new PlivoRequest(
425
+            'DELETE',
426
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
427
+            []);
428
+        $body = '{}';
429
+
430
+        $this->mock(new PlivoResponse($request,204, $body));
431
+
432
+        $actual = $this->client->calls->stopRecording("dfshjkasfhjkasfhjkashf");
433
+
434
+        $this->assertRequest($request);
435
+
436
+        self::assertNull($actual);
437
+    }
438
+
439
+    function testExceptionLiveCallStartRecord()
440
+    {
441
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
442
+        $request = new PlivoRequest(
443
+            'POST',
444
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
445
+            []);
446
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
447
+
448
+        $this->mock(new PlivoResponse($request,201, $body));
449
+
450
+        $actual = $this->client->calls->startRecording("");
451
+
452
+        $this->assertRequest($request);
453
+
454
+        self::assertNotNull($actual);
455
+
456
+        self::assertEquals($actual->message, "call recording started");
457
+    }
458
+
459
+    function testLiveCallStartStream()
460
+    {
461
+        $request = new PlivoRequest(
462
+            'POST',
463
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Stream/',
464
+            []);
465
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallStreamCreateResponse.json');
466
+
467
+        $this->mock(new PlivoResponse($request,201, $body));
468
+
469
+        $actual = $this->client->calls->startStream("dfshjkasfhjkasfhjkashf");
470
+
471
+        $this->assertRequest($request);
472
+
473
+        self::assertNotNull($actual);
474
+
475
+        self::assertEquals($actual->message, "audio streaming started");
476
+        self::assertEquals($actual->streamId, "30852c23-ee79-4eb4-b7b9-cd360545965b");
477
+        self::assertEquals($actual->apiId, "ff09383e-246f-11ed-a1fe-0242ac110004");
478
+    }
479
+
480
+    function testLiveCallStopStream()
481
+    {
482
+        $request = new PlivoRequest(
483
+            'DELETE',
484
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Stream/',
485
+            []);
486
+        $body = '{}';
487
+
488
+        $this->mock(new PlivoResponse($request,204, $body));
489
+
490
+        $actual = $this->client->calls->stopStream("dfshjkasfhjkasfhjkashf");
491
+
492
+        $this->assertRequest($request);
493
+
494
+        self::assertNull($actual);
495
+    }
496
+
497
+    function testGetAllStreams()
498
+    {
499
+        $request = new PlivoRequest(
500
+            'GET',
501
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/4d04c52e-cea3-4458-bbdb-0bfc314ee7cd/Stream',
502
+            []);
503
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallStreamGetAllResponse.json');
504
+
505
+        $this->mock(new PlivoResponse($request,200, $body));
506
+
507
+        $actual = $this->client->calls->getAllStreams("4d04c52e-cea3-4458-bbdb-0bfc314ee7cd");
508
+
509
+        self::assertNotNull($actual);
510
+
511
+        self::assertEquals($actual->meta, array('count'=>1, 'limit'=>20, 'next'=>null, 'offset'=>0, 'previous'=>null));
512
+        self::assertEquals($actual->objects, array(array('call_uuid'=>"4f045f7a-b04a-4364-8523-74e6072f4f72", 'end_time'=>null, 'service_url'=>"ws://3ee3-106-51-87-58.ngrok.io", 'start_time'=>null, 'status'=>"initiated", 'status_callback_url'=>"", 'stream_id'=>"c436abf8-e8a1-4d96-9aa8-b9143f7f3517")));
513
+    }
514
+
515
+    function testLiveCallDtmf()
516
+    {
517
+        $request = new PlivoRequest(
518
+            'POST',
519
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/DTMF/',
520
+            ['digits'=>"123"]);
521
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallDtmfCreateResponse.json');
522
+
523
+        $this->mock(new PlivoResponse($request,201, $body));
524
+
525
+        $actual = $this->client->calls->dtmf("dfshjkasfhjkasfhjkashf", "123");
526
+
527
+        $this->assertRequest($request);
528
+
529
+        self::assertNotNull($actual);
530
+
531
+        self::assertEquals($actual->message, "digits sent");
532
+    }
533
+
534
+    function testExceptionLiveCallDtmf()
535
+    {
536
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
537
+        $request = new PlivoRequest(
538
+            'POST',
539
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/DTMF/',
540
+            ['digits'=>"123"]);
541
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallDtmfCreateResponse.json');
542
+
543
+        $this->mock(new PlivoResponse($request,201, $body));
544
+
545
+        $actual = $this->client->calls->dtmf("", "123");
546
+
547
+        $this->assertRequest($request);
548
+
549
+        self::assertNotNull($actual);
550
+
551
+        self::assertEquals($actual->message, "digits sent");
552
+    }
553
+
554
+    function testLiveCallCancel()
555
+    {
556
+        $request = new PlivoRequest(
557
+            'DELETE',
558
+            'Account/MAXXXXXXXXXXXXXXXXXX/Request/dfshjkasfhjkasfhjkashf/',
559
+            []);
560
+        $body = '{}';
561
+
562
+        $this->mock(new PlivoResponse($request,204, $body));
563
+
564
+        $actual = $this->client->calls->cancel("dfshjkasfhjkasfhjkashf");
565
+
566
+        $this->assertRequest($request);
567
+
568
+        self::assertNull($actual);
569
+    }
570
+
571
+    function testExceptionLiveCallCancel()
572
+    {
573
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
574
+        $request = new PlivoRequest(
575
+            'DELETE',
576
+            'Account/MAXXXXXXXXXXXXXXXXXX/Request/dfshjkasfhjkasfhjkashf/',
577
+            []);
578
+        $body = '{}';
579
+
580
+        $this->mock(new PlivoResponse($request,204, $body));
581
+
582
+        $actual = $this->client->calls->cancel(null);
583
+
584
+        $this->assertRequest($request);
585
+
586
+        self::assertNull($actual);
587
+    }
588
+}
Browse code

removed appinfo/info.xml appinfo/signature.json CHANGELOG.txt lib/AppInfo/Application.php css/style.css providers/Plivo

DoubleBastionAdmin authored on 05/11/2025 13:12:22
Showing 1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,534 +0,0 @@
1
-<?php
2
-
3
-namespace Resources;
4
-
5
-
6
-use Plivo\Http\PlivoRequest;
7
-use Plivo\Http\PlivoResponse;
8
-use Plivo\Tests\BaseTestCase;
9
-
10
-/**
11
- * Class CallTest
12
- * @package Resources
13
- */
14
-class CallTest extends BaseTestCase
15
-{
16
-    function testExceptionCallCreate()
17
-    {
18
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
19
-        $request = new PlivoRequest(
20
-            'POST',
21
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
22
-            [
23
-                'from' => '919999999999',
24
-                'to' => '919999999999',
25
-                'answer_url' => '919999999999',
26
-                'answer_method' => 'POST',
27
-            ]);
28
-        $body = file_get_contents(__DIR__ . '/../Mocks/callCreateResponse.json');
29
-
30
-        $this->mock(new PlivoResponse($request,201, $body));
31
-
32
-        $actual = $this->client->calls->create(
33
-            '919999999999', ['919999999999'], '919999999999', 'POST');
34
-
35
-        $this->assertRequest($request);
36
-
37
-        self::assertNotNull($actual);
38
-
39
-        foreach ($actual as $actualCall) {
40
-            self::assertEquals(substr($actualCall->resourceUri, 0, 33), "/v1/Account/MAXXXXXXXXXXXXXXXXXX/");
41
-        }
42
-    }
43
-
44
-    function testCallCreate()
45
-    {
46
-        $request = new PlivoRequest(
47
-            'POST',
48
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
49
-            [
50
-                'from' => '919999999999',
51
-                'to' => '919999999998',
52
-                'answer_url' => 'http://answer.url',
53
-                'answer_method' => 'POST',
54
-            ]);
55
-        $body = file_get_contents(__DIR__ . '/../Mocks/callCreateResponse.json');
56
-
57
-        $this->mock(new PlivoResponse($request,201, $body));
58
-
59
-        $actual = $this->client->calls->create(
60
-            '919999999999', ['919999999998'], 'http://answer.url', 'POST');
61
-
62
-        $this->assertRequest($request);
63
-
64
-        self::assertNotNull($actual);
65
-
66
-        // $actual = json_decode($actual);
67
-
68
-        self::assertEquals($actual->message, "call fired");
69
-        self::assertEquals($actual->requestUuid, "9834029e-58b6-11e1-b8b7-a5bd0e4e126f");
70
-        self::assertEquals($actual->apiId, "97ceeb52-58b6-11e1-86da-77300b68f8bb");
71
-    }
72
-
73
-    function testCallList()
74
-    {
75
-        $request = new PlivoRequest(
76
-            'GET',
77
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
78
-            ['subaccount' => 'subacc']);
79
-        $body = file_get_contents(__DIR__ . '/../Mocks/callListResponse.json');
80
-
81
-        $this->mock(new PlivoResponse($request,200, $body));
82
-
83
-        $actual = $this->client->calls->list(['subaccount' => 'subacc']);
84
-
85
-        $this->assertRequest($request);
86
-
87
-        self::assertNotNull($actual);
88
-
89
-        foreach($actual->resources as $actualCall) {
90
-            
91
-            self::assertEquals(substr($actualCall->resourceUri, 0, 33), "/v1/Account/MAXXXXXXXXXXXXXXXXXX/");
92
-        }
93
-    }
94
-
95
-    function testCallDetails()
96
-    {
97
-        $request = new PlivoRequest(
98
-            'GET',
99
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/4d04c52e-cea3-4458-bbdb-0bfc314ee7cd/',
100
-            []);
101
-        $body = file_get_contents(__DIR__ . '/../Mocks/callGetResponse.json');
102
-
103
-        $this->mock(new PlivoResponse($request,200, $body));
104
-
105
-        $actual = $this->client->calls->get("4d04c52e-cea3-4458-bbdb-0bfc314ee7cd");
106
-
107
-        $this->assertRequest($request);
108
-
109
-        self::assertNotNull($actual);
110
-
111
-        self::assertEquals($actual->getId(), "4d04c52e-cea3-4458-bbdb-0bfc314ee7cd");
112
-    }
113
-
114
-    function testLiveCallList()
115
-    {
116
-        $request = new PlivoRequest(
117
-            'GET',
118
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
119
-            ['status'=>'live']);
120
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallListGetResponse.json');
121
-
122
-        $this->mock(new PlivoResponse($request,200, $body));
123
-
124
-        $actual = $this->client->calls->listLive;
125
-
126
-        $this->assertRequest($request);
127
-
128
-        self::assertNotNull($actual);
129
-
130
-        self::assertGreaterThan(0, count($actual));
131
-
132
-        foreach ($actual as $actualCall) {
133
-            self::assertEquals(36, strlen($actualCall));
134
-        }
135
-    }
136
-
137
-    function testLiveCallDetails()
138
-    {
139
-        $request = new PlivoRequest(
140
-            'GET',
141
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a/',
142
-            ['status'=>'live']);
143
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallGetResponse.json');
144
-
145
-        $this->mock(new PlivoResponse($request,200, $body));
146
-
147
-        $actual = $this->client->calls->getLive("d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a");
148
-
149
-        $this->assertRequest($request);
150
-
151
-        self::assertNotNull($actual);
152
-
153
-        self::assertEquals($actual->id, "d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a");
154
-    }
155
-
156
-    function testLiveCallTransfer()
157
-    {
158
-        $request = new PlivoRequest(
159
-            'POST',
160
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/',
161
-            [
162
-                'legs'=>'both',
163
-                'aleg_url' => 'http://a.leg',
164
-                'bleg_url' => 'http://b.leg'
165
-            ]);
166
-        $body = file_get_contents(__DIR__ . '/../Mocks/callUpdateResponse.json');
167
-
168
-        $this->mock(new PlivoResponse($request,201, $body));
169
-
170
-        $actual = $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
171
-            ['legs'=>'both',
172
-            'aleg_url' => 'http://a.leg',
173
-            'bleg_url' => 'http://b.leg']);
174
-
175
-        $this->assertRequest($request);
176
-
177
-        self::assertNotNull($actual);
178
-
179
-        self::assertEquals($actual->message, "call transfered");
180
-    }
181
-
182
-    function testException1LiveCallTransfer()
183
-    {
184
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
185
-        $request = new PlivoRequest();
186
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
187
-
188
-        $this->mock(new PlivoResponse($request,201, $body));
189
-
190
-        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
191
-            ['legs'=>'both',
192
-                'bleg_url' => 'http://b.leg']);
193
-    }
194
-
195
-    function testException2LiveCallTransfer()
196
-    {
197
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
198
-        $request = new PlivoRequest();
199
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
200
-
201
-        $this->mock(new PlivoResponse($request,201, $body));
202
-
203
-        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
204
-            ['legs'=>'aleg',
205
-                'bleg_url' => 'http://b.leg']);
206
-    }
207
-
208
-    function testException3LiveCallTransfer()
209
-    {
210
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
211
-        $request = new PlivoRequest();
212
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
213
-
214
-        $this->mock(new PlivoResponse($request,201, $body));
215
-
216
-        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
217
-            ['legs'=>'bleg']);
218
-    }
219
-
220
-    function testException4LiveCallTransfer()
221
-    {
222
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
223
-        $request = new PlivoRequest();
224
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
225
-
226
-        $this->mock(new PlivoResponse($request,201, $body));
227
-
228
-        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
229
-            ['legs'=>'some other leg']);
230
-    }
231
-
232
-    function testException5LiveCallTransfer()
233
-    {
234
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
235
-        $request = new PlivoRequest();
236
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
237
-
238
-        $this->mock(new PlivoResponse($request,201, $body));
239
-
240
-        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
241
-            ['bleg_url' => 'http://b.leg']);
242
-    }
243
-
244
-    function testLiveCallPlay()
245
-    {
246
-        $request = new PlivoRequest(
247
-            'POST',
248
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
249
-            ['urls'=>'']);
250
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
251
-
252
-        $this->mock(new PlivoResponse($request,201, $body));
253
-
254
-        $actual = $this->client->calls->play("dfshjkasfhjkasfhjkashf", [""]);
255
-
256
-        $this->assertRequest($request);
257
-
258
-        self::assertNotNull($actual);
259
-
260
-        self::assertEquals($actual->message, "play started");
261
-    }
262
-
263
-    function testExceptionLiveCallPlay()
264
-    {
265
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
266
-        $request = new PlivoRequest(
267
-            'POST',
268
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
269
-            ['urls'=> '']);
270
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
271
-
272
-        $this->mock(new PlivoResponse($request,201, $body));
273
-        $this->client->calls->play(null, [""]);
274
-    }
275
-
276
-    function testLiveCallStartPlay()
277
-    {
278
-        $request = new PlivoRequest(
279
-            'POST',
280
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
281
-            ['urls'=>'']);
282
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
283
-
284
-        $this->mock(new PlivoResponse($request,201, $body));
285
-
286
-        $actual = $this->client->calls->startPlaying("dfshjkasfhjkasfhjkashf", [""]);
287
-
288
-        $this->assertRequest($request);
289
-
290
-        self::assertNotNull($actual);
291
-
292
-        self::assertEquals($actual->message, "play started");
293
-    }
294
-
295
-    function testLiveCallStopPlay()
296
-    {
297
-        $request = new PlivoRequest(
298
-            'DELETE',
299
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
300
-            []);
301
-        $body = '{}';
302
-
303
-        $this->mock(new PlivoResponse($request,204, $body));
304
-
305
-        $actual = $this->client->calls->stopPlaying("dfshjkasfhjkasfhjkashf");
306
-
307
-        $this->assertRequest($request);
308
-
309
-        self::assertNull($actual);
310
-    }
311
-
312
-    function testLiveCallSpeak()
313
-    {
314
-        $request = new PlivoRequest(
315
-            'POST',
316
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
317
-            ['text'=>'Speak this']);
318
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
319
-
320
-        $this->mock(new PlivoResponse($request,201, $body));
321
-
322
-        $actual = $this->client->calls->speak("dfshjkasfhjkasfhjkashf", "Speak this");
323
-
324
-        $this->assertRequest($request);
325
-
326
-        self::assertNotNull($actual);
327
-
328
-        self::assertEquals($actual->message, "speak started");
329
-    }
330
-
331
-    function testExceptionLiveCallSpeak()
332
-    {
333
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
334
-        $request = new PlivoRequest(
335
-            'POST',
336
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
337
-            ['text'=>'Speak this']);
338
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
339
-
340
-        $this->mock(new PlivoResponse($request,201, $body));
341
-        $this->client->calls->speak(null, "Speak this");
342
-    }
343
-
344
-    function testLiveCallStartSpeak()
345
-    {
346
-        $request = new PlivoRequest(
347
-            'POST',
348
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
349
-            ['text'=>'Speak this']);
350
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
351
-
352
-        $this->mock(new PlivoResponse($request,201, $body));
353
-
354
-        $actual = $this->client->calls->startSpeaking("dfshjkasfhjkasfhjkashf", "Speak this");
355
-
356
-        $this->assertRequest($request);
357
-
358
-        self::assertNotNull($actual);
359
-
360
-        self::assertEquals($actual->message, "speak started");
361
-    }
362
-
363
-    function testLiveCallStopSpeak()
364
-    {
365
-        $request = new PlivoRequest(
366
-            'DELETE',
367
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
368
-            []);
369
-        $body = '{}';
370
-
371
-        $this->mock(new PlivoResponse($request,204, $body));
372
-
373
-        $actual = $this->client->calls->stopSpeaking("dfshjkasfhjkasfhjkashf");
374
-
375
-        $this->assertRequest($request);
376
-
377
-        self::assertNull($actual);
378
-    }
379
-
380
-    function testLiveCallRecord()
381
-    {
382
-        $request = new PlivoRequest(
383
-            'POST',
384
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
385
-            []);
386
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
387
-
388
-        $this->mock(new PlivoResponse($request,201, $body));
389
-
390
-        $actual = $this->client->calls->record("dfshjkasfhjkasfhjkashf");
391
-
392
-        $this->assertRequest($request);
393
-
394
-        self::assertNotNull($actual);
395
-
396
-        self::assertEquals($actual->url, "http://s3.amazonaws.com/recordings_2013/48dfaf60-3b2a-11e3.mp3");
397
-        self::assertEquals($actual->message, "call recording started");
398
-        self::assertEquals($actual->recordingId, "48dfaf60-3b2a-11e3");
399
-        self::assertEquals($actual->apiId, "c7b69074-58be-11e1-86da-adf28403fe48");
400
-    }
401
-
402
-    function testLiveCallStartRecord()
403
-    {
404
-        $request = new PlivoRequest(
405
-            'POST',
406
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
407
-            []);
408
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
409
-
410
-        $this->mock(new PlivoResponse($request,201, $body));
411
-
412
-        $actual = $this->client->calls->startRecording("dfshjkasfhjkasfhjkashf");
413
-
414
-        $this->assertRequest($request);
415
-
416
-        self::assertNotNull($actual);
417
-
418
-        self::assertEquals($actual->url, "http://s3.amazonaws.com/recordings_2013/48dfaf60-3b2a-11e3.mp3");
419
-        self::assertEquals($actual->message, "call recording started");
420
-        self::assertEquals($actual->recordingId, "48dfaf60-3b2a-11e3");
421
-        self::assertEquals($actual->apiId, "c7b69074-58be-11e1-86da-adf28403fe48");
422
-    }
423
-
424
-    function testLiveCallStopRecord()
425
-    {
426
-        $request = new PlivoRequest(
427
-            'DELETE',
428
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
429
-            []);
430
-        $body = '{}';
431
-
432
-        $this->mock(new PlivoResponse($request,204, $body));
433
-
434
-        $actual = $this->client->calls->stopRecording("dfshjkasfhjkasfhjkashf");
435
-
436
-        $this->assertRequest($request);
437
-
438
-        self::assertNull($actual);
439
-    }
440
-
441
-    function testExceptionLiveCallStartRecord()
442
-    {
443
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
444
-        $request = new PlivoRequest(
445
-            'POST',
446
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
447
-            []);
448
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
449
-
450
-        $this->mock(new PlivoResponse($request,201, $body));
451
-
452
-        $actual = $this->client->calls->startRecording("");
453
-
454
-        $this->assertRequest($request);
455
-
456
-        self::assertNotNull($actual);
457
-
458
-        self::assertEquals($actual->message, "call recording started");
459
-    }
460
-
461
-    function testLiveCallDtmf()
462
-    {
463
-        $request = new PlivoRequest(
464
-            'POST',
465
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/DTMF/',
466
-            ['digits'=>"123"]);
467
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallDtmfCreateResponse.json');
468
-
469
-        $this->mock(new PlivoResponse($request,201, $body));
470
-
471
-        $actual = $this->client->calls->dtmf("dfshjkasfhjkasfhjkashf", "123");
472
-
473
-        $this->assertRequest($request);
474
-
475
-        self::assertNotNull($actual);
476
-
477
-        self::assertEquals($actual->message, "digits sent");
478
-    }
479
-
480
-    function testExceptionLiveCallDtmf()
481
-    {
482
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
483
-        $request = new PlivoRequest(
484
-            'POST',
485
-            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/DTMF/',
486
-            ['digits'=>"123"]);
487
-        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallDtmfCreateResponse.json');
488
-
489
-        $this->mock(new PlivoResponse($request,201, $body));
490
-
491
-        $actual = $this->client->calls->dtmf("", "123");
492
-
493
-        $this->assertRequest($request);
494
-
495
-        self::assertNotNull($actual);
496
-
497
-        self::assertEquals($actual->message, "digits sent");
498
-    }
499
-
500
-    function testLiveCallCancel()
501
-    {
502
-        $request = new PlivoRequest(
503
-            'DELETE',
504
-            'Account/MAXXXXXXXXXXXXXXXXXX/Request/dfshjkasfhjkasfhjkashf/',
505
-            []);
506
-        $body = '{}';
507
-
508
-        $this->mock(new PlivoResponse($request,204, $body));
509
-
510
-        $actual = $this->client->calls->cancel("dfshjkasfhjkasfhjkashf");
511
-
512
-        $this->assertRequest($request);
513
-
514
-        self::assertNull($actual);
515
-    }
516
-
517
-    function testExceptionLiveCallCancel()
518
-    {
519
-        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
520
-        $request = new PlivoRequest(
521
-            'DELETE',
522
-            'Account/MAXXXXXXXXXXXXXXXXXX/Request/dfshjkasfhjkasfhjkashf/',
523
-            []);
524
-        $body = '{}';
525
-
526
-        $this->mock(new PlivoResponse($request,204, $body));
527
-
528
-        $actual = $this->client->calls->cancel(null);
529
-
530
-        $this->assertRequest($request);
531
-
532
-        self::assertNull($actual);
533
-    }
534
-}
Browse code

Added README.md appinfo/info.xml appinfo/signature.json lib/Controller/AuthorApiController.php and the providers directory

DoubleBastionAdmin authored on 20/08/2022 16:33:00
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,534 @@
1
+<?php
2
+
3
+namespace Resources;
4
+
5
+
6
+use Plivo\Http\PlivoRequest;
7
+use Plivo\Http\PlivoResponse;
8
+use Plivo\Tests\BaseTestCase;
9
+
10
+/**
11
+ * Class CallTest
12
+ * @package Resources
13
+ */
14
+class CallTest extends BaseTestCase
15
+{
16
+    function testExceptionCallCreate()
17
+    {
18
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
19
+        $request = new PlivoRequest(
20
+            'POST',
21
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
22
+            [
23
+                'from' => '919999999999',
24
+                'to' => '919999999999',
25
+                'answer_url' => '919999999999',
26
+                'answer_method' => 'POST',
27
+            ]);
28
+        $body = file_get_contents(__DIR__ . '/../Mocks/callCreateResponse.json');
29
+
30
+        $this->mock(new PlivoResponse($request,201, $body));
31
+
32
+        $actual = $this->client->calls->create(
33
+            '919999999999', ['919999999999'], '919999999999', 'POST');
34
+
35
+        $this->assertRequest($request);
36
+
37
+        self::assertNotNull($actual);
38
+
39
+        foreach ($actual as $actualCall) {
40
+            self::assertEquals(substr($actualCall->resourceUri, 0, 33), "/v1/Account/MAXXXXXXXXXXXXXXXXXX/");
41
+        }
42
+    }
43
+
44
+    function testCallCreate()
45
+    {
46
+        $request = new PlivoRequest(
47
+            'POST',
48
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
49
+            [
50
+                'from' => '919999999999',
51
+                'to' => '919999999998',
52
+                'answer_url' => 'http://answer.url',
53
+                'answer_method' => 'POST',
54
+            ]);
55
+        $body = file_get_contents(__DIR__ . '/../Mocks/callCreateResponse.json');
56
+
57
+        $this->mock(new PlivoResponse($request,201, $body));
58
+
59
+        $actual = $this->client->calls->create(
60
+            '919999999999', ['919999999998'], 'http://answer.url', 'POST');
61
+
62
+        $this->assertRequest($request);
63
+
64
+        self::assertNotNull($actual);
65
+
66
+        // $actual = json_decode($actual);
67
+
68
+        self::assertEquals($actual->message, "call fired");
69
+        self::assertEquals($actual->requestUuid, "9834029e-58b6-11e1-b8b7-a5bd0e4e126f");
70
+        self::assertEquals($actual->apiId, "97ceeb52-58b6-11e1-86da-77300b68f8bb");
71
+    }
72
+
73
+    function testCallList()
74
+    {
75
+        $request = new PlivoRequest(
76
+            'GET',
77
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
78
+            ['subaccount' => 'subacc']);
79
+        $body = file_get_contents(__DIR__ . '/../Mocks/callListResponse.json');
80
+
81
+        $this->mock(new PlivoResponse($request,200, $body));
82
+
83
+        $actual = $this->client->calls->list(['subaccount' => 'subacc']);
84
+
85
+        $this->assertRequest($request);
86
+
87
+        self::assertNotNull($actual);
88
+
89
+        foreach($actual->resources as $actualCall) {
90
+            
91
+            self::assertEquals(substr($actualCall->resourceUri, 0, 33), "/v1/Account/MAXXXXXXXXXXXXXXXXXX/");
92
+        }
93
+    }
94
+
95
+    function testCallDetails()
96
+    {
97
+        $request = new PlivoRequest(
98
+            'GET',
99
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/4d04c52e-cea3-4458-bbdb-0bfc314ee7cd/',
100
+            []);
101
+        $body = file_get_contents(__DIR__ . '/../Mocks/callGetResponse.json');
102
+
103
+        $this->mock(new PlivoResponse($request,200, $body));
104
+
105
+        $actual = $this->client->calls->get("4d04c52e-cea3-4458-bbdb-0bfc314ee7cd");
106
+
107
+        $this->assertRequest($request);
108
+
109
+        self::assertNotNull($actual);
110
+
111
+        self::assertEquals($actual->getId(), "4d04c52e-cea3-4458-bbdb-0bfc314ee7cd");
112
+    }
113
+
114
+    function testLiveCallList()
115
+    {
116
+        $request = new PlivoRequest(
117
+            'GET',
118
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/',
119
+            ['status'=>'live']);
120
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallListGetResponse.json');
121
+
122
+        $this->mock(new PlivoResponse($request,200, $body));
123
+
124
+        $actual = $this->client->calls->listLive;
125
+
126
+        $this->assertRequest($request);
127
+
128
+        self::assertNotNull($actual);
129
+
130
+        self::assertGreaterThan(0, count($actual));
131
+
132
+        foreach ($actual as $actualCall) {
133
+            self::assertEquals(36, strlen($actualCall));
134
+        }
135
+    }
136
+
137
+    function testLiveCallDetails()
138
+    {
139
+        $request = new PlivoRequest(
140
+            'GET',
141
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a/',
142
+            ['status'=>'live']);
143
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallGetResponse.json');
144
+
145
+        $this->mock(new PlivoResponse($request,200, $body));
146
+
147
+        $actual = $this->client->calls->getLive("d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a");
148
+
149
+        $this->assertRequest($request);
150
+
151
+        self::assertNotNull($actual);
152
+
153
+        self::assertEquals($actual->id, "d0a87a1a-b0e9-4ab2-ac07-c22ee87cd04a");
154
+    }
155
+
156
+    function testLiveCallTransfer()
157
+    {
158
+        $request = new PlivoRequest(
159
+            'POST',
160
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/',
161
+            [
162
+                'legs'=>'both',
163
+                'aleg_url' => 'http://a.leg',
164
+                'bleg_url' => 'http://b.leg'
165
+            ]);
166
+        $body = file_get_contents(__DIR__ . '/../Mocks/callUpdateResponse.json');
167
+
168
+        $this->mock(new PlivoResponse($request,201, $body));
169
+
170
+        $actual = $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
171
+            ['legs'=>'both',
172
+            'aleg_url' => 'http://a.leg',
173
+            'bleg_url' => 'http://b.leg']);
174
+
175
+        $this->assertRequest($request);
176
+
177
+        self::assertNotNull($actual);
178
+
179
+        self::assertEquals($actual->message, "call transfered");
180
+    }
181
+
182
+    function testException1LiveCallTransfer()
183
+    {
184
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
185
+        $request = new PlivoRequest();
186
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
187
+
188
+        $this->mock(new PlivoResponse($request,201, $body));
189
+
190
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
191
+            ['legs'=>'both',
192
+                'bleg_url' => 'http://b.leg']);
193
+    }
194
+
195
+    function testException2LiveCallTransfer()
196
+    {
197
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
198
+        $request = new PlivoRequest();
199
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
200
+
201
+        $this->mock(new PlivoResponse($request,201, $body));
202
+
203
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
204
+            ['legs'=>'aleg',
205
+                'bleg_url' => 'http://b.leg']);
206
+    }
207
+
208
+    function testException3LiveCallTransfer()
209
+    {
210
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
211
+        $request = new PlivoRequest();
212
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
213
+
214
+        $this->mock(new PlivoResponse($request,201, $body));
215
+
216
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
217
+            ['legs'=>'bleg']);
218
+    }
219
+
220
+    function testException4LiveCallTransfer()
221
+    {
222
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
223
+        $request = new PlivoRequest();
224
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
225
+
226
+        $this->mock(new PlivoResponse($request,201, $body));
227
+
228
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
229
+            ['legs'=>'some other leg']);
230
+    }
231
+
232
+    function testException5LiveCallTransfer()
233
+    {
234
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
235
+        $request = new PlivoRequest();
236
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
237
+
238
+        $this->mock(new PlivoResponse($request,201, $body));
239
+
240
+        $this->client->calls->transfer("dfshjkasfhjkasfhjkashf",
241
+            ['bleg_url' => 'http://b.leg']);
242
+    }
243
+
244
+    function testLiveCallPlay()
245
+    {
246
+        $request = new PlivoRequest(
247
+            'POST',
248
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
249
+            ['urls'=>'']);
250
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
251
+
252
+        $this->mock(new PlivoResponse($request,201, $body));
253
+
254
+        $actual = $this->client->calls->play("dfshjkasfhjkasfhjkashf", [""]);
255
+
256
+        $this->assertRequest($request);
257
+
258
+        self::assertNotNull($actual);
259
+
260
+        self::assertEquals($actual->message, "play started");
261
+    }
262
+
263
+    function testExceptionLiveCallPlay()
264
+    {
265
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
266
+        $request = new PlivoRequest(
267
+            'POST',
268
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
269
+            ['urls'=> '']);
270
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
271
+
272
+        $this->mock(new PlivoResponse($request,201, $body));
273
+        $this->client->calls->play(null, [""]);
274
+    }
275
+
276
+    function testLiveCallStartPlay()
277
+    {
278
+        $request = new PlivoRequest(
279
+            'POST',
280
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
281
+            ['urls'=>'']);
282
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallPlayCreateResponse.json');
283
+
284
+        $this->mock(new PlivoResponse($request,201, $body));
285
+
286
+        $actual = $this->client->calls->startPlaying("dfshjkasfhjkasfhjkashf", [""]);
287
+
288
+        $this->assertRequest($request);
289
+
290
+        self::assertNotNull($actual);
291
+
292
+        self::assertEquals($actual->message, "play started");
293
+    }
294
+
295
+    function testLiveCallStopPlay()
296
+    {
297
+        $request = new PlivoRequest(
298
+            'DELETE',
299
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Play/',
300
+            []);
301
+        $body = '{}';
302
+
303
+        $this->mock(new PlivoResponse($request,204, $body));
304
+
305
+        $actual = $this->client->calls->stopPlaying("dfshjkasfhjkasfhjkashf");
306
+
307
+        $this->assertRequest($request);
308
+
309
+        self::assertNull($actual);
310
+    }
311
+
312
+    function testLiveCallSpeak()
313
+    {
314
+        $request = new PlivoRequest(
315
+            'POST',
316
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
317
+            ['text'=>'Speak this']);
318
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
319
+
320
+        $this->mock(new PlivoResponse($request,201, $body));
321
+
322
+        $actual = $this->client->calls->speak("dfshjkasfhjkasfhjkashf", "Speak this");
323
+
324
+        $this->assertRequest($request);
325
+
326
+        self::assertNotNull($actual);
327
+
328
+        self::assertEquals($actual->message, "speak started");
329
+    }
330
+
331
+    function testExceptionLiveCallSpeak()
332
+    {
333
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
334
+        $request = new PlivoRequest(
335
+            'POST',
336
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
337
+            ['text'=>'Speak this']);
338
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
339
+
340
+        $this->mock(new PlivoResponse($request,201, $body));
341
+        $this->client->calls->speak(null, "Speak this");
342
+    }
343
+
344
+    function testLiveCallStartSpeak()
345
+    {
346
+        $request = new PlivoRequest(
347
+            'POST',
348
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
349
+            ['text'=>'Speak this']);
350
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallSpeakCreateResponse.json');
351
+
352
+        $this->mock(new PlivoResponse($request,201, $body));
353
+
354
+        $actual = $this->client->calls->startSpeaking("dfshjkasfhjkasfhjkashf", "Speak this");
355
+
356
+        $this->assertRequest($request);
357
+
358
+        self::assertNotNull($actual);
359
+
360
+        self::assertEquals($actual->message, "speak started");
361
+    }
362
+
363
+    function testLiveCallStopSpeak()
364
+    {
365
+        $request = new PlivoRequest(
366
+            'DELETE',
367
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Speak/',
368
+            []);
369
+        $body = '{}';
370
+
371
+        $this->mock(new PlivoResponse($request,204, $body));
372
+
373
+        $actual = $this->client->calls->stopSpeaking("dfshjkasfhjkasfhjkashf");
374
+
375
+        $this->assertRequest($request);
376
+
377
+        self::assertNull($actual);
378
+    }
379
+
380
+    function testLiveCallRecord()
381
+    {
382
+        $request = new PlivoRequest(
383
+            'POST',
384
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
385
+            []);
386
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
387
+
388
+        $this->mock(new PlivoResponse($request,201, $body));
389
+
390
+        $actual = $this->client->calls->record("dfshjkasfhjkasfhjkashf");
391
+
392
+        $this->assertRequest($request);
393
+
394
+        self::assertNotNull($actual);
395
+
396
+        self::assertEquals($actual->url, "http://s3.amazonaws.com/recordings_2013/48dfaf60-3b2a-11e3.mp3");
397
+        self::assertEquals($actual->message, "call recording started");
398
+        self::assertEquals($actual->recordingId, "48dfaf60-3b2a-11e3");
399
+        self::assertEquals($actual->apiId, "c7b69074-58be-11e1-86da-adf28403fe48");
400
+    }
401
+
402
+    function testLiveCallStartRecord()
403
+    {
404
+        $request = new PlivoRequest(
405
+            'POST',
406
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
407
+            []);
408
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
409
+
410
+        $this->mock(new PlivoResponse($request,201, $body));
411
+
412
+        $actual = $this->client->calls->startRecording("dfshjkasfhjkasfhjkashf");
413
+
414
+        $this->assertRequest($request);
415
+
416
+        self::assertNotNull($actual);
417
+
418
+        self::assertEquals($actual->url, "http://s3.amazonaws.com/recordings_2013/48dfaf60-3b2a-11e3.mp3");
419
+        self::assertEquals($actual->message, "call recording started");
420
+        self::assertEquals($actual->recordingId, "48dfaf60-3b2a-11e3");
421
+        self::assertEquals($actual->apiId, "c7b69074-58be-11e1-86da-adf28403fe48");
422
+    }
423
+
424
+    function testLiveCallStopRecord()
425
+    {
426
+        $request = new PlivoRequest(
427
+            'DELETE',
428
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
429
+            []);
430
+        $body = '{}';
431
+
432
+        $this->mock(new PlivoResponse($request,204, $body));
433
+
434
+        $actual = $this->client->calls->stopRecording("dfshjkasfhjkasfhjkashf");
435
+
436
+        $this->assertRequest($request);
437
+
438
+        self::assertNull($actual);
439
+    }
440
+
441
+    function testExceptionLiveCallStartRecord()
442
+    {
443
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
444
+        $request = new PlivoRequest(
445
+            'POST',
446
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/Record/',
447
+            []);
448
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallRecordCreateResponse.json');
449
+
450
+        $this->mock(new PlivoResponse($request,201, $body));
451
+
452
+        $actual = $this->client->calls->startRecording("");
453
+
454
+        $this->assertRequest($request);
455
+
456
+        self::assertNotNull($actual);
457
+
458
+        self::assertEquals($actual->message, "call recording started");
459
+    }
460
+
461
+    function testLiveCallDtmf()
462
+    {
463
+        $request = new PlivoRequest(
464
+            'POST',
465
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/DTMF/',
466
+            ['digits'=>"123"]);
467
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallDtmfCreateResponse.json');
468
+
469
+        $this->mock(new PlivoResponse($request,201, $body));
470
+
471
+        $actual = $this->client->calls->dtmf("dfshjkasfhjkasfhjkashf", "123");
472
+
473
+        $this->assertRequest($request);
474
+
475
+        self::assertNotNull($actual);
476
+
477
+        self::assertEquals($actual->message, "digits sent");
478
+    }
479
+
480
+    function testExceptionLiveCallDtmf()
481
+    {
482
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
483
+        $request = new PlivoRequest(
484
+            'POST',
485
+            'Account/MAXXXXXXXXXXXXXXXXXX/Call/dfshjkasfhjkasfhjkashf/DTMF/',
486
+            ['digits'=>"123"]);
487
+        $body = file_get_contents(__DIR__ . '/../Mocks/liveCallDtmfCreateResponse.json');
488
+
489
+        $this->mock(new PlivoResponse($request,201, $body));
490
+
491
+        $actual = $this->client->calls->dtmf("", "123");
492
+
493
+        $this->assertRequest($request);
494
+
495
+        self::assertNotNull($actual);
496
+
497
+        self::assertEquals($actual->message, "digits sent");
498
+    }
499
+
500
+    function testLiveCallCancel()
501
+    {
502
+        $request = new PlivoRequest(
503
+            'DELETE',
504
+            'Account/MAXXXXXXXXXXXXXXXXXX/Request/dfshjkasfhjkasfhjkashf/',
505
+            []);
506
+        $body = '{}';
507
+
508
+        $this->mock(new PlivoResponse($request,204, $body));
509
+
510
+        $actual = $this->client->calls->cancel("dfshjkasfhjkasfhjkashf");
511
+
512
+        $this->assertRequest($request);
513
+
514
+        self::assertNull($actual);
515
+    }
516
+
517
+    function testExceptionLiveCallCancel()
518
+    {
519
+        $this->expectPlivoException('Plivo\Exceptions\PlivoValidationException');
520
+        $request = new PlivoRequest(
521
+            'DELETE',
522
+            'Account/MAXXXXXXXXXXXXXXXXXX/Request/dfshjkasfhjkasfhjkashf/',
523
+            []);
524
+        $body = '{}';
525
+
526
+        $this->mock(new PlivoResponse($request,204, $body));
527
+
528
+        $actual = $this->client->calls->cancel(null);
529
+
530
+        $this->assertRequest($request);
531
+
532
+        self::assertNull($actual);
533
+    }
534
+}