Completed
Push — master ( 7e6628...084203 )
by Jacob
02:15
created
tests/ArchangelTest.php 1 patch
Indentation   +685 added lines, -685 removed lines patch added patch discarded remove patch
@@ -10,690 +10,690 @@
 block discarded – undo
10 10
 class ArchangelTest extends PHPUnit_Framework_TestCase
11 11
 {
12 12
 
13
-    public function testIsInstanceOfArchangel()
14
-    {
15
-        $archangel = new Archangel();
16
-
17
-        $this->assertInstanceOf('Jacobemerick\Archangel\Archangel', $archangel);
18
-    }
19
-
20
-    public function testIsLoggerAwareInterface()
21
-    {
22
-        $archangel = new Archangel();
23
-
24
-        $this->assertInstanceOf('Psr\Log\LoggerAwareInterface', $archangel);
25
-    }
26
-
27
-    public function testConstructSetsDefaultMailer()
28
-    {
29
-        $archangel = new Archangel();
30
-        $mailer = sprintf('PHP/%s', phpversion());
31
-        $headers = array('X-Mailer' => $mailer);
32
-
33
-        $this->assertAttributeEquals($headers, 'headers', $archangel);
34
-    }
35
-
36
-    public function testConstructOverridesMailer()
37
-    {
38
-        $archangel = new Archangel('AwesomeMailer');
39
-        $headers = array('X-Mailer' => 'AwesomeMailer');
40
-
41
-        $this->assertAttributeEquals($headers, 'headers', $archangel);
42
-    }
43
-
44
-    public function testConstructSetsNullLogger()
45
-    {
46
-        $archangel = new Archangel();
47
-
48
-        $this->assertAttributeInstanceOf('Psr\Log\NullLogger', 'logger', $archangel);
49
-    }
50
-
51
-    public function testConstructSetsBoundaries()
52
-    {
53
-        $archangel = new Archangel();
54
-        $expectedBoundaryMixed = sprintf('PHP-mixed-%s', uniqid());
55
-        $expectedBoundaryAlternative = sprintf('PHP-alternative-%s', uniqid());
56
-
57
-        $this->assertAttributeEquals($expectedBoundaryMixed, 'boundaryMixed', $archangel);
58
-        $this->assertAttributeEquals($expectedBoundaryAlternative, 'boundaryAlternative', $archangel);
59
-    }
60
-
61
-    public function testSetLogger()
62
-    {
63
-        $logger = $this->getMock('Psr\Log\LoggerInterface');
64
-        $archangel = new Archangel();
65
-        $archangel->setLogger($logger);
66
-
67
-        $this->assertAttributeSame($logger, 'logger', $archangel);
68
-    }
69
-
70
-    public function testAddTo()
71
-    {
72
-        $archangel = new Archangel();
73
-        $archangel->addTo('[email protected]');
74
-
75
-        $this->assertAttributeContains('[email protected]', 'toAddresses', $archangel);
76
-    }
77
-
78
-    public function testAddToMultiple()
79
-    {
80
-        $archangel = new Archangel();
81
-        $archangel->addTo('[email protected]');
82
-        $archangel->addTo('[email protected]');
83
-
84
-        $this->assertAttributeContains('[email protected]', 'toAddresses', $archangel);
85
-        $this->assertAttributeContains('[email protected]', 'toAddresses', $archangel);
86
-    }
87
-
88
-    public function testAddToWithTitle()
89
-    {
90
-        $archangel = new Archangel();
91
-        $archangel->addTo('[email protected]', 'Mr. Test Alot');
92
-
93
-        $this->assertAttributeContains('"Mr. Test Alot" <[email protected]>', 'toAddresses', $archangel);
94
-    }
95
-
96
-    public function testAddCC()
97
-    {
98
-        $archangel = new Archangel();
99
-        $archangel->addCC('[email protected]');
100
-        $headersProperty = $this->getProtectedProperty('headers');
101
-        $headers = $headersProperty->getValue($archangel);
102
-
103
-        $this->assertArraySubset(
104
-            array('CC' => array('[email protected]')),
105
-            $headers
106
-        );
107
-    }
108
-
109
-    public function testAddCCMultiple()
110
-    {
111
-        $archangel = new Archangel();
112
-        $archangel->addCC('[email protected]');
113
-        $archangel->addCC('[email protected]');
114
-        $headersProperty = $this->getProtectedProperty('headers');
115
-        $headers = $headersProperty->getValue($archangel);
116
-
117
-        $this->assertArraySubset(
118
-            array('CC' => array('[email protected]', '[email protected]')),
119
-            $headers
120
-        );
121
-    }
122
-
123
-    public function testAddCCWithTitle()
124
-    {
125
-        $archangel = new Archangel();
126
-        $archangel->addCC('[email protected]', 'Mr. Test Alot');
127
-        $headersProperty = $this->getProtectedProperty('headers');
128
-        $headers = $headersProperty->getValue($archangel);
129
-
130
-        $this->assertArraySubset(
131
-            array('CC' => array('"Mr. Test Alot" <[email protected]>')),
132
-            $headers
133
-        );
134
-    }
135
-
136
-    public function testAddBCC()
137
-    {
138
-        $archangel = new Archangel();
139
-        $archangel->addBCC('[email protected]');
140
-        $headersProperty = $this->getProtectedProperty('headers');
141
-        $headers = $headersProperty->getValue($archangel);
142
-
143
-        $this->assertArraySubset(
144
-            array('BCC' => array('[email protected]')),
145
-            $headers
146
-        );
147
-    }
148
-
149
-    public function testAddBCCMultiple()
150
-    {
151
-        $archangel = new Archangel();
152
-        $archangel->addBCC('[email protected]');
153
-        $archangel->addBCC('[email protected]');
154
-        $headersProperty = $this->getProtectedProperty('headers');
155
-        $headers = $headersProperty->getValue($archangel);
156
-
157
-        $this->assertArraySubset(
158
-            array('BCC' => array('[email protected]', '[email protected]')),
159
-            $headers
160
-        );
161
-    }
162
-
163
-    public function testAddBCCWithTitle()
164
-    {
165
-        $archangel = new Archangel();
166
-        $archangel->addBCC('[email protected]', 'Mr. Test Alot');
167
-        $headersProperty = $this->getProtectedProperty('headers');
168
-        $headers = $headersProperty->getValue($archangel);
169
-
170
-        $this->assertArraySubset(
171
-            array('BCC' => array('"Mr. Test Alot" <[email protected]>')),
172
-            $headers
173
-        );
174
-    }
175
-
176
-    public function testSetFrom()
177
-    {
178
-        $archangel = new Archangel();
179
-        $archangel->setFrom('[email protected]');
180
-        $headersProperty = $this->getProtectedProperty('headers');
181
-        $headers = $headersProperty->getValue($archangel);
182
-
183
-        $this->assertArraySubset(array('From' => '[email protected]'), $headers);
184
-    }
185
-
186
-    public function testSetFromMultiple()
187
-    {
188
-        $archangel = new Archangel();
189
-        $archangel->setFrom('[email protected]');
190
-        $archangel->setFrom('[email protected]');
191
-        $headersProperty = $this->getProtectedProperty('headers');
192
-        $headers = $headersProperty->getValue($archangel);
193
-
194
-        $this->assertArraySubset(array('From' => '[email protected]'), $headers);
195
-        $this->assertNotContains('[email protected]', $headers);
196
-    }
197
-
198
-    public function testSetFromWithTitle()
199
-    {
200
-        $archangel = new Archangel();
201
-        $archangel->setFrom('[email protected]', 'Mr. Test Alot');
202
-        $headersProperty = $this->getProtectedProperty('headers');
203
-        $headers = $headersProperty->getValue($archangel);
204
-
205
-        $this->assertArraySubset(array('From' => '"Mr. Test Alot" <[email protected]>'), $headers);
206
-    }
207
-
208
-    public function testSetReplyTo()
209
-    {
210
-        $archangel = new Archangel();
211
-        $archangel->setReplyTo('[email protected]');
212
-        $headersProperty = $this->getProtectedProperty('headers');
213
-        $headers = $headersProperty->getValue($archangel);
214
-
215
-        $this->assertArraySubset(array('Reply-To' => '[email protected]'), $headers);
216
-    }
217
-
218
-    public function testSetReplyToMultiple()
219
-    {
220
-        $archangel = new Archangel();
221
-        $archangel->setReplyTo('[email protected]');
222
-        $archangel->setReplyTo('[email protected]');
223
-        $headersProperty = $this->getProtectedProperty('headers');
224
-        $headers = $headersProperty->getValue($archangel);
225
-
226
-        $this->assertArraySubset(array('Reply-To' => '[email protected]'), $headers);
227
-        $this->assertNotContains('[email protected]', $headers);
228
-    }
229
-
230
-    public function testSetReplyToWithTitle()
231
-    {
232
-        $archangel = new Archangel();
233
-        $archangel->setReplyTo('[email protected]', 'Mr. Test Alot');
234
-        $headersProperty = $this->getProtectedProperty('headers');
235
-        $headers = $headersProperty->getValue($archangel);
236
-
237
-        $this->assertArraySubset(array('Reply-To' => '"Mr. Test Alot" <[email protected]>'), $headers);
238
-    }
239
-
240
-    public function testFormatEmailAddress()
241
-    {
242
-        $archangel = new Archangel();
243
-        $formatMethod = $this->getProtectedMethod('formatEmailAddress');
244
-        $formattedEmail = $formatMethod->invokeArgs($archangel, array('[email protected]', ''));
245
-
246
-        $this->assertEquals('[email protected]', $formattedEmail);
247
-    }
248
-
249
-    public function testFormatEmailAddressWithTitle()
250
-    {
251
-        $archangel = new Archangel();
252
-        $formatMethod = $this->getProtectedMethod('formatEmailAddress');
253
-        $formattedEmail = $formatMethod->invokeArgs($archangel, array('[email protected]', 'Mr. Test Alot'));
254
-
255
-        $this->assertEquals('"Mr. Test Alot" <[email protected]>', $formattedEmail);
256
-    }
257
-
258
-    public function testSetSubject()
259
-    {
260
-        $archangel = new Archangel();
261
-        $archangel->setSubject('Test Subject');
262
-
263
-        $this->assertAttributeEquals('Test Subject', 'subject', $archangel);
264
-    }
265
-
266
-    public function testSetPlainMessage()
267
-    {
268
-        $archangel = new Archangel();
269
-        $archangel->setPlainMessage('Plain text message');
270
-
271
-        $this->assertAttributeEquals('Plain text message', 'plainMessage', $archangel);
272
-    }
273
-
274
-    public function testSetHTMLMessage()
275
-    {
276
-        $archangel = new Archangel();
277
-        $archangel->setHTMLMessage('<p>An HTML message.</p>');
278
-
279
-        $this->assertAttributeEquals('<p>An HTML message.</p>', 'htmlMessage', $archangel);
280
-    }
281
-
282
-    public function testAddAttachment()
283
-    {
284
-        $archangel = new Archangel();
285
-        $archangel->addAttachment('path', 'type');
286
-
287
-        $this->assertAttributeContains(
288
-            array('path' => 'path', 'type' => 'type', 'title' => ''),
289
-            'attachments',
290
-            $archangel
291
-        );
292
-    }
293
-
294
-    public function testAddAttachmentMultiple()
295
-    {
296
-        $archangel = new Archangel();
297
-        $archangel->addAttachment('pathOne', 'typeOne');
298
-        $archangel->addAttachment('pathTwo', 'typeTwo');
299
-
300
-        $this->assertAttributeContains(
301
-            array('path' => 'pathOne', 'type' => 'typeOne', 'title' => ''),
302
-            'attachments',
303
-            $archangel
304
-        );
305
-        $this->assertAttributeContains(
306
-            array('path' => 'pathTwo', 'type' => 'typeTwo', 'title' => ''),
307
-            'attachments',
308
-            $archangel
309
-        );
310
-    }
311
-
312
-    public function testAddAttachmentWithTitle()
313
-    {
314
-        $archangel = new Archangel();
315
-        $archangel->addAttachment('path', 'type', 'title');
316
-
317
-        $this->assertAttributeContains(
318
-            array('path' => 'path', 'type' => 'type', 'title' => 'title'),
319
-            'attachments',
320
-            $archangel
321
-        );
322
-    }
323
-
324
-    public function testSend()
325
-    {
326
-        $archangel = new Archangel();
327
-        $archangel->addTo('[email protected]');
328
-        $archangel->setSubject('Test Subject');
329
-        $archangel->setPlainMessage('Plain text message');
330
-        $response = $archangel->send();
331
-
332
-        $expectedResponse = array(
333
-            'to' => '[email protected]',
334
-            'subject' => 'Test Subject',
335
-            'message' => 'Plain text message',
336
-            'headers' => 'X-Mailer: PHP/6.0.0',
337
-        );
338
-
339
-        $this->assertEquals($expectedResponse, $response);
340
-    }
341
-
342
-    public function testSendFailure()
343
-    {
344
-        $archangel = new Archangel();
345
-        $response = $archangel->send();
346
-
347
-        $this->assertFalse($response);
348
-    }
349
-
350
-    /**
351
-     * @dataProvider dataCheckRequiredFields
352
-     */
353
-    public function testCheckRequiredFields(
354
-        $expectedResult,
355
-        $toAddresses,
356
-        $subject,
357
-        $plainMessage,
358
-        $htmlMessage,
359
-        $attachments
360
-    ) {
361
-        $archangel = new Archangel();
362
-
363
-        if (!empty($toAddresses)) {
364
-            $toAddressesProperty = $this->getProtectedProperty('toAddresses');
365
-            $toAddressesProperty->setValue($archangel, $toAddresses);
366
-        }
367
-
368
-        if (!empty($subject)) {
369
-            $subjectProperty = $this->getProtectedProperty('subject');
370
-            $subjectProperty->setValue($archangel, $subject);
371
-        }
372
-
373
-        if (!empty($plainMessage)) {
374
-            $plainMessageProperty = $this->getProtectedProperty('plainMessage');
375
-            $plainMessageProperty->setValue($archangel, $plainMessage);
376
-        }
377
-
378
-        if (!empty($htmlMessage)) {
379
-            $htmlMessageProperty = $this->getProtectedProperty('htmlMessage');
380
-            $htmlMessageProperty->setValue($archangel, $htmlMessage);
381
-        }
382
-
383
-        if (!empty($attachments)) {
384
-            $attachmentsProperty = $this->getProtectedProperty('attachments');
385
-            $attachmentsProperty->setValue($archangel, $attachments);
386
-        }
387
-
388
-        $checkMethod = $this->getProtectedMethod('checkRequiredFields');
389
-        $isValid = $checkMethod->invoke($archangel);
390
-
391
-        if ($expectedResult == true) {
392
-            $this->assertTrue($isValid);
393
-            return;
394
-        }
395
-        $this->assertNotTrue($isValid);
396
-    }
397
-
398
-    public function dataCheckRequiredFields()
399
-    {
400
-        return array(
401
-            array(
402
-                'expectedResult' => false,
403
-                'toAddresses' => array(),
404
-                'subject' => '',
405
-                'plainMessage' => '',
406
-                'htmlMessage' => '',
407
-                'attachments' => array(),
408
-            ),
409
-            array(
410
-                'expectedResult' => false,
411
-                'toAddresses' => array('[email protected]'),
412
-                'subject' => '',
413
-                'plainMessage' => '',
414
-                'htmlMessage' => '',
415
-                'attachments' => array(),
416
-            ),
417
-            array(
418
-                'expectedResult' => false,
419
-                'toAddresses' => array('[email protected]'),
420
-                'subject' => 'Test Subject',
421
-                'plainMessage' => '',
422
-                'htmlMessage' => '',
423
-                'attachments' => array(),
424
-            ),
425
-            array(
426
-                'expectedResult' => false,
427
-                'toAddresses' => array(),
428
-                'subject' => 'Test Subject',
429
-                'plainMessage' => '',
430
-                'htmlMessage' => '',
431
-                'attachments' => array(),
432
-            ),
433
-            array(
434
-                'expectedResult' => false,
435
-                'toAddresses' => array(),
436
-                'subject' => 'Test Subject',
437
-                'plainMessage' => 'Plain text message',
438
-                'htmlMessage' => '',
439
-                'attachments' => array(),
440
-            ),
441
-            array(
442
-                'expectedResult' => true,
443
-                'toAddresses' => array('[email protected]'),
444
-                'subject' => 'Test Subject',
445
-                'plainMessage' => 'Plain text message',
446
-                'htmlMessage' => '',
447
-                'attachments' => array(),
448
-            ),
449
-            array(
450
-                'expectedResult' => true,
451
-                'toAddresses' => array('[email protected]'),
452
-                'subject' => 'Test Subject',
453
-                'plainMessage' => '',
454
-                'htmlMessage' => '<p>An HTML message.</p>',
455
-                'attachments' => array(),
456
-            ),
457
-            array(
458
-                'expectedResult' => true,
459
-                'toAddresses' => array('[email protected]'),
460
-                'subject' => 'Test Subject',
461
-                'plainMessage' => '',
462
-                'htmlMessage' => '',
463
-                'attachments' => array(
464
-                    array('path' => 'path', 'type' => 'type'),
465
-                ),
466
-            ),
467
-            array(
468
-                'expectedResult' => true,
469
-                'toAddresses' => array('[email protected]'),
470
-                'subject' => 'Test Subject',
471
-                'plainMessage' => 'Plain text message',
472
-                'htmlMessage' => '<p>An HTML message.</p>',
473
-                'attachments' => array(
474
-                    array('path' => 'path', 'type' => 'type'),
475
-                ),
476
-            ),
477
-       );
478
-    }
13
+	public function testIsInstanceOfArchangel()
14
+	{
15
+		$archangel = new Archangel();
16
+
17
+		$this->assertInstanceOf('Jacobemerick\Archangel\Archangel', $archangel);
18
+	}
19
+
20
+	public function testIsLoggerAwareInterface()
21
+	{
22
+		$archangel = new Archangel();
23
+
24
+		$this->assertInstanceOf('Psr\Log\LoggerAwareInterface', $archangel);
25
+	}
26
+
27
+	public function testConstructSetsDefaultMailer()
28
+	{
29
+		$archangel = new Archangel();
30
+		$mailer = sprintf('PHP/%s', phpversion());
31
+		$headers = array('X-Mailer' => $mailer);
32
+
33
+		$this->assertAttributeEquals($headers, 'headers', $archangel);
34
+	}
35
+
36
+	public function testConstructOverridesMailer()
37
+	{
38
+		$archangel = new Archangel('AwesomeMailer');
39
+		$headers = array('X-Mailer' => 'AwesomeMailer');
40
+
41
+		$this->assertAttributeEquals($headers, 'headers', $archangel);
42
+	}
43
+
44
+	public function testConstructSetsNullLogger()
45
+	{
46
+		$archangel = new Archangel();
47
+
48
+		$this->assertAttributeInstanceOf('Psr\Log\NullLogger', 'logger', $archangel);
49
+	}
50
+
51
+	public function testConstructSetsBoundaries()
52
+	{
53
+		$archangel = new Archangel();
54
+		$expectedBoundaryMixed = sprintf('PHP-mixed-%s', uniqid());
55
+		$expectedBoundaryAlternative = sprintf('PHP-alternative-%s', uniqid());
56
+
57
+		$this->assertAttributeEquals($expectedBoundaryMixed, 'boundaryMixed', $archangel);
58
+		$this->assertAttributeEquals($expectedBoundaryAlternative, 'boundaryAlternative', $archangel);
59
+	}
60
+
61
+	public function testSetLogger()
62
+	{
63
+		$logger = $this->getMock('Psr\Log\LoggerInterface');
64
+		$archangel = new Archangel();
65
+		$archangel->setLogger($logger);
66
+
67
+		$this->assertAttributeSame($logger, 'logger', $archangel);
68
+	}
69
+
70
+	public function testAddTo()
71
+	{
72
+		$archangel = new Archangel();
73
+		$archangel->addTo('[email protected]');
74
+
75
+		$this->assertAttributeContains('[email protected]', 'toAddresses', $archangel);
76
+	}
77
+
78
+	public function testAddToMultiple()
79
+	{
80
+		$archangel = new Archangel();
81
+		$archangel->addTo('[email protected]');
82
+		$archangel->addTo('[email protected]');
83
+
84
+		$this->assertAttributeContains('[email protected]', 'toAddresses', $archangel);
85
+		$this->assertAttributeContains('[email protected]', 'toAddresses', $archangel);
86
+	}
87
+
88
+	public function testAddToWithTitle()
89
+	{
90
+		$archangel = new Archangel();
91
+		$archangel->addTo('[email protected]', 'Mr. Test Alot');
92
+
93
+		$this->assertAttributeContains('"Mr. Test Alot" <[email protected]>', 'toAddresses', $archangel);
94
+	}
95
+
96
+	public function testAddCC()
97
+	{
98
+		$archangel = new Archangel();
99
+		$archangel->addCC('[email protected]');
100
+		$headersProperty = $this->getProtectedProperty('headers');
101
+		$headers = $headersProperty->getValue($archangel);
102
+
103
+		$this->assertArraySubset(
104
+			array('CC' => array('[email protected]')),
105
+			$headers
106
+		);
107
+	}
108
+
109
+	public function testAddCCMultiple()
110
+	{
111
+		$archangel = new Archangel();
112
+		$archangel->addCC('[email protected]');
113
+		$archangel->addCC('[email protected]');
114
+		$headersProperty = $this->getProtectedProperty('headers');
115
+		$headers = $headersProperty->getValue($archangel);
116
+
117
+		$this->assertArraySubset(
118
+			array('CC' => array('[email protected]', '[email protected]')),
119
+			$headers
120
+		);
121
+	}
122
+
123
+	public function testAddCCWithTitle()
124
+	{
125
+		$archangel = new Archangel();
126
+		$archangel->addCC('[email protected]', 'Mr. Test Alot');
127
+		$headersProperty = $this->getProtectedProperty('headers');
128
+		$headers = $headersProperty->getValue($archangel);
129
+
130
+		$this->assertArraySubset(
131
+			array('CC' => array('"Mr. Test Alot" <[email protected]>')),
132
+			$headers
133
+		);
134
+	}
135
+
136
+	public function testAddBCC()
137
+	{
138
+		$archangel = new Archangel();
139
+		$archangel->addBCC('[email protected]');
140
+		$headersProperty = $this->getProtectedProperty('headers');
141
+		$headers = $headersProperty->getValue($archangel);
142
+
143
+		$this->assertArraySubset(
144
+			array('BCC' => array('[email protected]')),
145
+			$headers
146
+		);
147
+	}
148
+
149
+	public function testAddBCCMultiple()
150
+	{
151
+		$archangel = new Archangel();
152
+		$archangel->addBCC('[email protected]');
153
+		$archangel->addBCC('[email protected]');
154
+		$headersProperty = $this->getProtectedProperty('headers');
155
+		$headers = $headersProperty->getValue($archangel);
156
+
157
+		$this->assertArraySubset(
158
+			array('BCC' => array('[email protected]', '[email protected]')),
159
+			$headers
160
+		);
161
+	}
162
+
163
+	public function testAddBCCWithTitle()
164
+	{
165
+		$archangel = new Archangel();
166
+		$archangel->addBCC('[email protected]', 'Mr. Test Alot');
167
+		$headersProperty = $this->getProtectedProperty('headers');
168
+		$headers = $headersProperty->getValue($archangel);
169
+
170
+		$this->assertArraySubset(
171
+			array('BCC' => array('"Mr. Test Alot" <[email protected]>')),
172
+			$headers
173
+		);
174
+	}
175
+
176
+	public function testSetFrom()
177
+	{
178
+		$archangel = new Archangel();
179
+		$archangel->setFrom('[email protected]');
180
+		$headersProperty = $this->getProtectedProperty('headers');
181
+		$headers = $headersProperty->getValue($archangel);
182
+
183
+		$this->assertArraySubset(array('From' => '[email protected]'), $headers);
184
+	}
185
+
186
+	public function testSetFromMultiple()
187
+	{
188
+		$archangel = new Archangel();
189
+		$archangel->setFrom('[email protected]');
190
+		$archangel->setFrom('[email protected]');
191
+		$headersProperty = $this->getProtectedProperty('headers');
192
+		$headers = $headersProperty->getValue($archangel);
193
+
194
+		$this->assertArraySubset(array('From' => '[email protected]'), $headers);
195
+		$this->assertNotContains('[email protected]', $headers);
196
+	}
197
+
198
+	public function testSetFromWithTitle()
199
+	{
200
+		$archangel = new Archangel();
201
+		$archangel->setFrom('[email protected]', 'Mr. Test Alot');
202
+		$headersProperty = $this->getProtectedProperty('headers');
203
+		$headers = $headersProperty->getValue($archangel);
204
+
205
+		$this->assertArraySubset(array('From' => '"Mr. Test Alot" <[email protected]>'), $headers);
206
+	}
207
+
208
+	public function testSetReplyTo()
209
+	{
210
+		$archangel = new Archangel();
211
+		$archangel->setReplyTo('[email protected]');
212
+		$headersProperty = $this->getProtectedProperty('headers');
213
+		$headers = $headersProperty->getValue($archangel);
214
+
215
+		$this->assertArraySubset(array('Reply-To' => '[email protected]'), $headers);
216
+	}
217
+
218
+	public function testSetReplyToMultiple()
219
+	{
220
+		$archangel = new Archangel();
221
+		$archangel->setReplyTo('[email protected]');
222
+		$archangel->setReplyTo('[email protected]');
223
+		$headersProperty = $this->getProtectedProperty('headers');
224
+		$headers = $headersProperty->getValue($archangel);
225
+
226
+		$this->assertArraySubset(array('Reply-To' => '[email protected]'), $headers);
227
+		$this->assertNotContains('[email protected]', $headers);
228
+	}
229
+
230
+	public function testSetReplyToWithTitle()
231
+	{
232
+		$archangel = new Archangel();
233
+		$archangel->setReplyTo('[email protected]', 'Mr. Test Alot');
234
+		$headersProperty = $this->getProtectedProperty('headers');
235
+		$headers = $headersProperty->getValue($archangel);
236
+
237
+		$this->assertArraySubset(array('Reply-To' => '"Mr. Test Alot" <[email protected]>'), $headers);
238
+	}
239
+
240
+	public function testFormatEmailAddress()
241
+	{
242
+		$archangel = new Archangel();
243
+		$formatMethod = $this->getProtectedMethod('formatEmailAddress');
244
+		$formattedEmail = $formatMethod->invokeArgs($archangel, array('[email protected]', ''));
245
+
246
+		$this->assertEquals('[email protected]', $formattedEmail);
247
+	}
248
+
249
+	public function testFormatEmailAddressWithTitle()
250
+	{
251
+		$archangel = new Archangel();
252
+		$formatMethod = $this->getProtectedMethod('formatEmailAddress');
253
+		$formattedEmail = $formatMethod->invokeArgs($archangel, array('[email protected]', 'Mr. Test Alot'));
254
+
255
+		$this->assertEquals('"Mr. Test Alot" <[email protected]>', $formattedEmail);
256
+	}
257
+
258
+	public function testSetSubject()
259
+	{
260
+		$archangel = new Archangel();
261
+		$archangel->setSubject('Test Subject');
262
+
263
+		$this->assertAttributeEquals('Test Subject', 'subject', $archangel);
264
+	}
265
+
266
+	public function testSetPlainMessage()
267
+	{
268
+		$archangel = new Archangel();
269
+		$archangel->setPlainMessage('Plain text message');
270
+
271
+		$this->assertAttributeEquals('Plain text message', 'plainMessage', $archangel);
272
+	}
273
+
274
+	public function testSetHTMLMessage()
275
+	{
276
+		$archangel = new Archangel();
277
+		$archangel->setHTMLMessage('<p>An HTML message.</p>');
278
+
279
+		$this->assertAttributeEquals('<p>An HTML message.</p>', 'htmlMessage', $archangel);
280
+	}
281
+
282
+	public function testAddAttachment()
283
+	{
284
+		$archangel = new Archangel();
285
+		$archangel->addAttachment('path', 'type');
286
+
287
+		$this->assertAttributeContains(
288
+			array('path' => 'path', 'type' => 'type', 'title' => ''),
289
+			'attachments',
290
+			$archangel
291
+		);
292
+	}
293
+
294
+	public function testAddAttachmentMultiple()
295
+	{
296
+		$archangel = new Archangel();
297
+		$archangel->addAttachment('pathOne', 'typeOne');
298
+		$archangel->addAttachment('pathTwo', 'typeTwo');
299
+
300
+		$this->assertAttributeContains(
301
+			array('path' => 'pathOne', 'type' => 'typeOne', 'title' => ''),
302
+			'attachments',
303
+			$archangel
304
+		);
305
+		$this->assertAttributeContains(
306
+			array('path' => 'pathTwo', 'type' => 'typeTwo', 'title' => ''),
307
+			'attachments',
308
+			$archangel
309
+		);
310
+	}
311
+
312
+	public function testAddAttachmentWithTitle()
313
+	{
314
+		$archangel = new Archangel();
315
+		$archangel->addAttachment('path', 'type', 'title');
316
+
317
+		$this->assertAttributeContains(
318
+			array('path' => 'path', 'type' => 'type', 'title' => 'title'),
319
+			'attachments',
320
+			$archangel
321
+		);
322
+	}
323
+
324
+	public function testSend()
325
+	{
326
+		$archangel = new Archangel();
327
+		$archangel->addTo('[email protected]');
328
+		$archangel->setSubject('Test Subject');
329
+		$archangel->setPlainMessage('Plain text message');
330
+		$response = $archangel->send();
331
+
332
+		$expectedResponse = array(
333
+			'to' => '[email protected]',
334
+			'subject' => 'Test Subject',
335
+			'message' => 'Plain text message',
336
+			'headers' => 'X-Mailer: PHP/6.0.0',
337
+		);
338
+
339
+		$this->assertEquals($expectedResponse, $response);
340
+	}
341
+
342
+	public function testSendFailure()
343
+	{
344
+		$archangel = new Archangel();
345
+		$response = $archangel->send();
346
+
347
+		$this->assertFalse($response);
348
+	}
349
+
350
+	/**
351
+	 * @dataProvider dataCheckRequiredFields
352
+	 */
353
+	public function testCheckRequiredFields(
354
+		$expectedResult,
355
+		$toAddresses,
356
+		$subject,
357
+		$plainMessage,
358
+		$htmlMessage,
359
+		$attachments
360
+	) {
361
+		$archangel = new Archangel();
362
+
363
+		if (!empty($toAddresses)) {
364
+			$toAddressesProperty = $this->getProtectedProperty('toAddresses');
365
+			$toAddressesProperty->setValue($archangel, $toAddresses);
366
+		}
367
+
368
+		if (!empty($subject)) {
369
+			$subjectProperty = $this->getProtectedProperty('subject');
370
+			$subjectProperty->setValue($archangel, $subject);
371
+		}
372
+
373
+		if (!empty($plainMessage)) {
374
+			$plainMessageProperty = $this->getProtectedProperty('plainMessage');
375
+			$plainMessageProperty->setValue($archangel, $plainMessage);
376
+		}
377
+
378
+		if (!empty($htmlMessage)) {
379
+			$htmlMessageProperty = $this->getProtectedProperty('htmlMessage');
380
+			$htmlMessageProperty->setValue($archangel, $htmlMessage);
381
+		}
382
+
383
+		if (!empty($attachments)) {
384
+			$attachmentsProperty = $this->getProtectedProperty('attachments');
385
+			$attachmentsProperty->setValue($archangel, $attachments);
386
+		}
387
+
388
+		$checkMethod = $this->getProtectedMethod('checkRequiredFields');
389
+		$isValid = $checkMethod->invoke($archangel);
390
+
391
+		if ($expectedResult == true) {
392
+			$this->assertTrue($isValid);
393
+			return;
394
+		}
395
+		$this->assertNotTrue($isValid);
396
+	}
397
+
398
+	public function dataCheckRequiredFields()
399
+	{
400
+		return array(
401
+			array(
402
+				'expectedResult' => false,
403
+				'toAddresses' => array(),
404
+				'subject' => '',
405
+				'plainMessage' => '',
406
+				'htmlMessage' => '',
407
+				'attachments' => array(),
408
+			),
409
+			array(
410
+				'expectedResult' => false,
411
+				'toAddresses' => array('[email protected]'),
412
+				'subject' => '',
413
+				'plainMessage' => '',
414
+				'htmlMessage' => '',
415
+				'attachments' => array(),
416
+			),
417
+			array(
418
+				'expectedResult' => false,
419
+				'toAddresses' => array('[email protected]'),
420
+				'subject' => 'Test Subject',
421
+				'plainMessage' => '',
422
+				'htmlMessage' => '',
423
+				'attachments' => array(),
424
+			),
425
+			array(
426
+				'expectedResult' => false,
427
+				'toAddresses' => array(),
428
+				'subject' => 'Test Subject',
429
+				'plainMessage' => '',
430
+				'htmlMessage' => '',
431
+				'attachments' => array(),
432
+			),
433
+			array(
434
+				'expectedResult' => false,
435
+				'toAddresses' => array(),
436
+				'subject' => 'Test Subject',
437
+				'plainMessage' => 'Plain text message',
438
+				'htmlMessage' => '',
439
+				'attachments' => array(),
440
+			),
441
+			array(
442
+				'expectedResult' => true,
443
+				'toAddresses' => array('[email protected]'),
444
+				'subject' => 'Test Subject',
445
+				'plainMessage' => 'Plain text message',
446
+				'htmlMessage' => '',
447
+				'attachments' => array(),
448
+			),
449
+			array(
450
+				'expectedResult' => true,
451
+				'toAddresses' => array('[email protected]'),
452
+				'subject' => 'Test Subject',
453
+				'plainMessage' => '',
454
+				'htmlMessage' => '<p>An HTML message.</p>',
455
+				'attachments' => array(),
456
+			),
457
+			array(
458
+				'expectedResult' => true,
459
+				'toAddresses' => array('[email protected]'),
460
+				'subject' => 'Test Subject',
461
+				'plainMessage' => '',
462
+				'htmlMessage' => '',
463
+				'attachments' => array(
464
+					array('path' => 'path', 'type' => 'type'),
465
+				),
466
+			),
467
+			array(
468
+				'expectedResult' => true,
469
+				'toAddresses' => array('[email protected]'),
470
+				'subject' => 'Test Subject',
471
+				'plainMessage' => 'Plain text message',
472
+				'htmlMessage' => '<p>An HTML message.</p>',
473
+				'attachments' => array(
474
+					array('path' => 'path', 'type' => 'type'),
475
+				),
476
+			),
477
+	   );
478
+	}
479 479
  
480
-    public function testBuildTo()
481
-    {
482
-        $archangel = new Archangel();
483
-        $addressesProperty = $this->getProtectedProperty('toAddresses');
484
-        $addressesProperty->setValue($archangel, array('[email protected]'));
485
-        $buildMethod = $this->getProtectedMethod('buildTo');
486
-        $toAddresses = $buildMethod->invoke($archangel);
487
-
488
-        $this->assertEquals('[email protected]', $toAddresses);
489
-    }
490
-
491
-    public function testBuildToMultiple()
492
-    {
493
-        $archangel = new Archangel();
494
-        $addressesProperty = $this->getProtectedProperty('toAddresses');
495
-        $addressesProperty->setValue($archangel, array('[email protected]', '[email protected]'));
496
-        $buildMethod = $this->getProtectedMethod('buildTo');
497
-        $toAddresses = $buildMethod->invoke($archangel);
498
-
499
-        $this->assertEquals('[email protected], [email protected]', $toAddresses);
500
-    }
501
-
502
-    public function testBuildPlainMessageHeader()
503
-    {
504
-        $expectedMessageHeader = array(
505
-            'Content-Type: text/plain; charset="iso-8859"',
506
-            'Content-Transfer-Encoding: 7bit',
507
-            '',
508
-        );
509
-
510
-        $archangel = new Archangel();
511
-        $buildMethod = $this->getProtectedMethod('buildPlainMessageHeader');
512
-        $messageHeader = $buildMethod->invoke($archangel);
513
-
514
-        $this->assertEquals($expectedMessageHeader, $messageHeader);
515
-    }
516
-
517
-    public function testBuildHtmlMessageHeader()
518
-    {
519
-        $expectedMessageHeader = array(
520
-            'Content-Type: text/html; charset="iso-8859-1"',
521
-            'Content-Transfer-Encoding: 7bit',
522
-            '',
523
-        );
524
-
525
-        $archangel = new Archangel();
526
-        $buildMethod = $this->getProtectedMethod('buildHtmlMessageHeader');
527
-        $messageHeader = $buildMethod->invoke($archangel);
528
-
529
-        $this->assertEquals($expectedMessageHeader, $messageHeader);
530
-    }
531
-
532
-    /**
533
-     * @dataProvider dataBuildHeaders
534
-     */
535
-    public function testBuildHeaders(
536
-        $expectedHeaders,
537
-        $headers,
538
-        $attachments,
539
-        $plainMessage,
540
-        $htmlMessage
541
-    ) {
542
-        $archangel = new Archangel();
543
-        $headersProperty = $this->getProtectedProperty('headers');
544
-        $headersProperty->setValue($archangel, $headers);
545
-
546
-        if (!empty($attachments)) {
547
-            $attachmentsProperty = $this->getProtectedProperty('attachments');
548
-            $attachmentsProperty->setValue($archangel, $attachments);
549
-        }
550
-
551
-        if (!empty($plainMessage)) {
552
-            $plainMessageProperty = $this->getProtectedProperty('plainMessage');
553
-            $plainMessageProperty->setValue($archangel, $plainMessage);
554
-        }
555
-
556
-        if (!empty($htmlMessage)) {
557
-            $htmlMessageProperty = $this->getProtectedProperty('htmlMessage');
558
-            $htmlMessageProperty->setValue($archangel, $htmlMessage);
559
-        }
560
-
561
-        $buildHeadersMethod = $this->getProtectedMethod('buildHeaders');
562
-        $builtHeaders = $buildHeadersMethod->invoke($archangel);
563
-
564
-        $this->assertEquals($expectedHeaders, $builtHeaders);
565
-    }
566
-
567
-    public function dataBuildHeaders()
568
-    {
569
-        return array(
570
-            array(
571
-                'expectedHeaders' =>
572
-                    "From: [email protected]\r\n" .
573
-                    "X-Mailer: PHP/6.0.0",
574
-                'headers' => array(
575
-                    'From' => '[email protected]',
576
-                    'X-Mailer' => sprintf('PHP/%s', phpversion())
577
-                ),
578
-                'attachments' => null,
579
-                'plainMessage' => true,
580
-                'htmlMessage' => null,
581
-            ),
582
-            array(
583
-                'expectedHeaders' =>
584
-                    "CC: [email protected], [email protected]\r\n" .
585
-                    "From: [email protected]\r\n" .
586
-                    "X-Mailer: PHP/6.0.0",
587
-                'headers' => array(
588
-                    'CC' => array('[email protected]', '[email protected]'),
589
-                    'From' => '[email protected]',
590
-                    'X-Mailer' => sprintf('PHP/%s', phpversion())
591
-                ),
592
-                'attachments' => null,
593
-                'plainMessage' => true,
594
-                'htmlMessage' => null,
595
-            ),
596
-            array(
597
-                'expectedHeaders' =>
598
-                    "BCC: [email protected], [email protected]\r\n" .
599
-                    "From: [email protected]\r\n" .
600
-                    "X-Mailer: PHP/6.0.0",
601
-                'headers' => array(
602
-                    'BCC' => array('[email protected]', '[email protected]'),
603
-                    'From' => '[email protected]',
604
-                    'X-Mailer' => sprintf('PHP/%s', phpversion())
605
-                ),
606
-                'attachments' => null,
607
-                'plainMessage' => true,
608
-                'htmlMessage' => null,
609
-            ),
610
-            array(
611
-                'expectedHeaders' =>
612
-                    "From: [email protected]\r\n" .
613
-                    "X-Mailer: PHP/6.0.0\r\n" .
614
-                    "Content-Type: multipart/mixed; boundary=\"PHP-mixed-1234567890123\"",
615
-                'headers' => array(
616
-                    'From' => '[email protected]',
617
-                    'X-Mailer' => sprintf('PHP/%s', phpversion())
618
-                ),
619
-                'attachments' => true,
620
-                'plainMessage' => true,
621
-                'htmlMessage' => null,
622
-            ),
623
-            array(
624
-                'expectedHeaders' =>
625
-                    "From: [email protected]\r\n" .
626
-                    "X-Mailer: PHP/6.0.0\r\n" .
627
-                    "Content-Type: multipart/alternative; boundary=\"PHP-alternative-1234567890123\"",
628
-                'headers' => array(
629
-                    'From' => '[email protected]',
630
-                    'X-Mailer' => sprintf('PHP/%s', phpversion())
631
-                ),
632
-                'attachments' => null,
633
-                'plainMessage' => true,
634
-                'htmlMessage' => true,
635
-            ),
636
-            array(
637
-                'expectedHeaders' =>
638
-                    "From: [email protected]\r\n" .
639
-                    "X-Mailer: PHP/6.0.0\r\n" .
640
-                    "Content-type: text/html; charset=\"iso-8859-1\"",
641
-                'headers' => array(
642
-                    'From' => '[email protected]',
643
-                    'X-Mailer' => sprintf('PHP/%s', phpversion())
644
-                ),
645
-                'attachments' => null,
646
-                'plainMessage' => null,
647
-                'htmlMessage' => true,
648
-            ),
649
-        );
650
-    }
651
-
652
-    public function testBuildAttachmentContent()
653
-    {
654
-        $textContent = 'Dummy Content';
655
-        $expectedContent = chunk_split(base64_encode($textContent));
656
-
657
-        $path = __DIR__ . '/test.txt';
658
-        $handle = fopen($path, 'w');
659
-        fwrite($handle, $textContent);
660
-        fclose($handle);
661
-
662
-        $archangel = new Archangel();
663
-        $buildMethod = $this->getProtectedMethod('buildAttachmentContent');
664
-        $content = $buildMethod->invokeArgs($archangel, array($path));
665
-
666
-        unlink($path);
667
-        $this->assertEquals($expectedContent, $content);
668
-    }
669
-
670
-    public function testBuildAttachmentContentFailure()
671
-    {
672
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
673
-
674
-        $archangel = new Archangel();
675
-        $archangel->setLogger($logger);
676
-        $buildMethod = $this->getProtectedMethod('buildAttachmentContent');
677
-        $content = $buildMethod->invokeArgs($archangel, array('INVALID_PATH'));
678
-
679
-        $this->assertEmpty($content);
680
-    }
681
-
682
-    protected function getProtectedProperty($property)
683
-    {
684
-        $reflectedArchangel = new ReflectionClass('Jacobemerick\Archangel\Archangel');
685
-        $reflectedProperty = $reflectedArchangel->getProperty($property);
686
-        $reflectedProperty->setAccessible(true);
687
-
688
-        return $reflectedProperty;
689
-    }
690
-
691
-    protected function getProtectedMethod($method)
692
-    {
693
-        $reflectedArchangel = new ReflectionClass('Jacobemerick\Archangel\Archangel');
694
-        $reflectedMethod = $reflectedArchangel->getMethod($method);
695
-        $reflectedMethod->setAccessible(true);
696
-
697
-        return $reflectedMethod;
698
-    }
480
+	public function testBuildTo()
481
+	{
482
+		$archangel = new Archangel();
483
+		$addressesProperty = $this->getProtectedProperty('toAddresses');
484
+		$addressesProperty->setValue($archangel, array('[email protected]'));
485
+		$buildMethod = $this->getProtectedMethod('buildTo');
486
+		$toAddresses = $buildMethod->invoke($archangel);
487
+
488
+		$this->assertEquals('[email protected]', $toAddresses);
489
+	}
490
+
491
+	public function testBuildToMultiple()
492
+	{
493
+		$archangel = new Archangel();
494
+		$addressesProperty = $this->getProtectedProperty('toAddresses');
495
+		$addressesProperty->setValue($archangel, array('[email protected]', '[email protected]'));
496
+		$buildMethod = $this->getProtectedMethod('buildTo');
497
+		$toAddresses = $buildMethod->invoke($archangel);
498
+
499
+		$this->assertEquals('[email protected], [email protected]', $toAddresses);
500
+	}
501
+
502
+	public function testBuildPlainMessageHeader()
503
+	{
504
+		$expectedMessageHeader = array(
505
+			'Content-Type: text/plain; charset="iso-8859"',
506
+			'Content-Transfer-Encoding: 7bit',
507
+			'',
508
+		);
509
+
510
+		$archangel = new Archangel();
511
+		$buildMethod = $this->getProtectedMethod('buildPlainMessageHeader');
512
+		$messageHeader = $buildMethod->invoke($archangel);
513
+
514
+		$this->assertEquals($expectedMessageHeader, $messageHeader);
515
+	}
516
+
517
+	public function testBuildHtmlMessageHeader()
518
+	{
519
+		$expectedMessageHeader = array(
520
+			'Content-Type: text/html; charset="iso-8859-1"',
521
+			'Content-Transfer-Encoding: 7bit',
522
+			'',
523
+		);
524
+
525
+		$archangel = new Archangel();
526
+		$buildMethod = $this->getProtectedMethod('buildHtmlMessageHeader');
527
+		$messageHeader = $buildMethod->invoke($archangel);
528
+
529
+		$this->assertEquals($expectedMessageHeader, $messageHeader);
530
+	}
531
+
532
+	/**
533
+	 * @dataProvider dataBuildHeaders
534
+	 */
535
+	public function testBuildHeaders(
536
+		$expectedHeaders,
537
+		$headers,
538
+		$attachments,
539
+		$plainMessage,
540
+		$htmlMessage
541
+	) {
542
+		$archangel = new Archangel();
543
+		$headersProperty = $this->getProtectedProperty('headers');
544
+		$headersProperty->setValue($archangel, $headers);
545
+
546
+		if (!empty($attachments)) {
547
+			$attachmentsProperty = $this->getProtectedProperty('attachments');
548
+			$attachmentsProperty->setValue($archangel, $attachments);
549
+		}
550
+
551
+		if (!empty($plainMessage)) {
552
+			$plainMessageProperty = $this->getProtectedProperty('plainMessage');
553
+			$plainMessageProperty->setValue($archangel, $plainMessage);
554
+		}
555
+
556
+		if (!empty($htmlMessage)) {
557
+			$htmlMessageProperty = $this->getProtectedProperty('htmlMessage');
558
+			$htmlMessageProperty->setValue($archangel, $htmlMessage);
559
+		}
560
+
561
+		$buildHeadersMethod = $this->getProtectedMethod('buildHeaders');
562
+		$builtHeaders = $buildHeadersMethod->invoke($archangel);
563
+
564
+		$this->assertEquals($expectedHeaders, $builtHeaders);
565
+	}
566
+
567
+	public function dataBuildHeaders()
568
+	{
569
+		return array(
570
+			array(
571
+				'expectedHeaders' =>
572
+					"From: [email protected]\r\n" .
573
+					"X-Mailer: PHP/6.0.0",
574
+				'headers' => array(
575
+					'From' => '[email protected]',
576
+					'X-Mailer' => sprintf('PHP/%s', phpversion())
577
+				),
578
+				'attachments' => null,
579
+				'plainMessage' => true,
580
+				'htmlMessage' => null,
581
+			),
582
+			array(
583
+				'expectedHeaders' =>
584
+					"CC: [email protected], [email protected]\r\n" .
585
+					"From: [email protected]\r\n" .
586
+					"X-Mailer: PHP/6.0.0",
587
+				'headers' => array(
588
+					'CC' => array('[email protected]', '[email protected]'),
589
+					'From' => '[email protected]',
590
+					'X-Mailer' => sprintf('PHP/%s', phpversion())
591
+				),
592
+				'attachments' => null,
593
+				'plainMessage' => true,
594
+				'htmlMessage' => null,
595
+			),
596
+			array(
597
+				'expectedHeaders' =>
598
+					"BCC: [email protected], [email protected]\r\n" .
599
+					"From: [email protected]\r\n" .
600
+					"X-Mailer: PHP/6.0.0",
601
+				'headers' => array(
602
+					'BCC' => array('[email protected]', '[email protected]'),
603
+					'From' => '[email protected]',
604
+					'X-Mailer' => sprintf('PHP/%s', phpversion())
605
+				),
606
+				'attachments' => null,
607
+				'plainMessage' => true,
608
+				'htmlMessage' => null,
609
+			),
610
+			array(
611
+				'expectedHeaders' =>
612
+					"From: [email protected]\r\n" .
613
+					"X-Mailer: PHP/6.0.0\r\n" .
614
+					"Content-Type: multipart/mixed; boundary=\"PHP-mixed-1234567890123\"",
615
+				'headers' => array(
616
+					'From' => '[email protected]',
617
+					'X-Mailer' => sprintf('PHP/%s', phpversion())
618
+				),
619
+				'attachments' => true,
620
+				'plainMessage' => true,
621
+				'htmlMessage' => null,
622
+			),
623
+			array(
624
+				'expectedHeaders' =>
625
+					"From: [email protected]\r\n" .
626
+					"X-Mailer: PHP/6.0.0\r\n" .
627
+					"Content-Type: multipart/alternative; boundary=\"PHP-alternative-1234567890123\"",
628
+				'headers' => array(
629
+					'From' => '[email protected]',
630
+					'X-Mailer' => sprintf('PHP/%s', phpversion())
631
+				),
632
+				'attachments' => null,
633
+				'plainMessage' => true,
634
+				'htmlMessage' => true,
635
+			),
636
+			array(
637
+				'expectedHeaders' =>
638
+					"From: [email protected]\r\n" .
639
+					"X-Mailer: PHP/6.0.0\r\n" .
640
+					"Content-type: text/html; charset=\"iso-8859-1\"",
641
+				'headers' => array(
642
+					'From' => '[email protected]',
643
+					'X-Mailer' => sprintf('PHP/%s', phpversion())
644
+				),
645
+				'attachments' => null,
646
+				'plainMessage' => null,
647
+				'htmlMessage' => true,
648
+			),
649
+		);
650
+	}
651
+
652
+	public function testBuildAttachmentContent()
653
+	{
654
+		$textContent = 'Dummy Content';
655
+		$expectedContent = chunk_split(base64_encode($textContent));
656
+
657
+		$path = __DIR__ . '/test.txt';
658
+		$handle = fopen($path, 'w');
659
+		fwrite($handle, $textContent);
660
+		fclose($handle);
661
+
662
+		$archangel = new Archangel();
663
+		$buildMethod = $this->getProtectedMethod('buildAttachmentContent');
664
+		$content = $buildMethod->invokeArgs($archangel, array($path));
665
+
666
+		unlink($path);
667
+		$this->assertEquals($expectedContent, $content);
668
+	}
669
+
670
+	public function testBuildAttachmentContentFailure()
671
+	{
672
+		$logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
673
+
674
+		$archangel = new Archangel();
675
+		$archangel->setLogger($logger);
676
+		$buildMethod = $this->getProtectedMethod('buildAttachmentContent');
677
+		$content = $buildMethod->invokeArgs($archangel, array('INVALID_PATH'));
678
+
679
+		$this->assertEmpty($content);
680
+	}
681
+
682
+	protected function getProtectedProperty($property)
683
+	{
684
+		$reflectedArchangel = new ReflectionClass('Jacobemerick\Archangel\Archangel');
685
+		$reflectedProperty = $reflectedArchangel->getProperty($property);
686
+		$reflectedProperty->setAccessible(true);
687
+
688
+		return $reflectedProperty;
689
+	}
690
+
691
+	protected function getProtectedMethod($method)
692
+	{
693
+		$reflectedArchangel = new ReflectionClass('Jacobemerick\Archangel\Archangel');
694
+		$reflectedMethod = $reflectedArchangel->getMethod($method);
695
+		$reflectedMethod->setAccessible(true);
696
+
697
+		return $reflectedMethod;
698
+	}
699 699
 }
Please login to merge, or discard this patch.