-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathAwsS3TableTest.php
133 lines (119 loc) · 4.48 KB
/
AwsS3TableTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
namespace CakeS3\Test\TestCase\Datasource;
use CakeS3\Datasource\AwsS3Table;
use Cake\TestSuite\TestCase;
use GuzzleHttp\Psr7\Stream;
use \Mockery as m;
/**
* AwsS3Table Testcase
*/
class AwsS3TableTest extends TestCase
{
/**
* tear down method
*
* @return void
*/
public function tearDown()
{
m::close();
}
/**
* Test Connection APIs
*/
public function testConnectionApi()
{
// Create Connection mock -> using ConnectionManager mock
$connectionMock = m::mock('\CakeS3\Datasource\Connection');
$connectionMock->shouldReceive('copyObject')
->once()
->with('/test-src-key', '/test-dest-key', ['option' => true]);
$connectionMock->shouldReceive('deleteObject')
->once()
->with('/test-key', ['option' => true]);
$connectionMock->shouldReceive('deleteObjects')
->once()
->with(['/test-key1', '/test-key2', '/test-key3'], ['option' => true]);
$connectionMock->shouldReceive('doesObjectExist')
->once()
->with('/test-key', ['option' => true]);
$connectionMock->shouldReceive('getObject')
->once()
->with('/test-key', ['option' => true]);
$connectionMock->shouldReceive('headObject')
->once()
->with('/test-key', ['option' => true]);
$connectionMock->shouldReceive('putObject')
->once()
->with('/test-key', 'test-content', ['option' => true]);
// Create ConnectionManager mock
$connectionManagerMock = m::mock('overload:\Cake\Datasource\ConnectionManager');
$connectionManagerMock->shouldReceive('get')
->once()
->andReturn($connectionMock);
// Test start.
$AwsS3Table = new AwsS3Table();
$AwsS3Table->copyObject('/test-src-key', '/test-dest-key', ['option' => true]);
$AwsS3Table->deleteObject('/test-key', ['option' => true]);
$AwsS3Table->deleteObjects(['/test-key1', '/test-key2', '/test-key3'], ['option' => true]);
$AwsS3Table->doesObjectExist('/test-key', ['option' => true]);
$AwsS3Table->getObject('/test-key', ['option' => true]);
$AwsS3Table->headObject('/test-key', ['option' => true]);
$AwsS3Table->putObject('/test-key', 'test-content', ['option' => true]);
}
/**
* Test getObjectBody method
*/
public function testGetObjectBody()
{
// Create string stream -> using \Aws\Result mock
$contentString = 'Sample Text';
$stream = fopen('php://memory', 'r+');
fwrite($stream, $contentString);
rewind($stream);
// Create \Aws\Result mock -> using Connection mock
$awsResultMock = m::mock('\Aws\Result');
$awsResultMock->shouldReceive('get')
->once()
->with('Body')
->andReturn(new Stream($stream));
// Create Connection mock -> using ConnectionManager mock
$connectionMock = m::mock('\CakeS3\Datasource\Connection');
$connectionMock->shouldReceive('getObject')
->once()
->with('/test-key', [])
->andReturn($awsResultMock);
// Create ConnectionManager mock
$connectionManagerMock = m::mock('overload:\Cake\Datasource\ConnectionManager');
$connectionManagerMock->shouldReceive('get')
->once()
->andReturn($connectionMock);
// Test start.
$AwsS3Table = new AwsS3Table();
$result = $AwsS3Table->getObjectBody('/test-key');
// Assertion
$this->assertEquals($contentString, $result->__toString());
}
/**
* Test moveObject method
*/
public function testMoveObject()
{
// Create Connection mock -> using ConnectionManager mock
$connectionMock = m::mock('\CakeS3\Datasource\Connection');
$connectionMock->shouldReceive('copyObject')
->once()
->with('/test-src-key', '/test-dest-key', []);
$connectionMock->shouldReceive('deleteObject')
->once()
->with('/test-src-key', []);
// Create ConnectionManager mock
$connectionManagerMock = m::mock('overload:\Cake\Datasource\ConnectionManager');
$connectionManagerMock->shouldReceive('get')
->once()
->andReturn($connectionMock);
// Test start.
$AwsS3Table = new AwsS3Table();
$AwsS3Table->moveObject('/test-src-key', '/test-dest-key');
}
}