Code Duplication    Length = 41-41 lines in 3 locations

tests/CommentsTest.php 3 locations

@@ 274-314 (lines=41) @@
271
        $this->assertFalse($check && $check->exists());
272
    }
273
274
    public function testSpamComment()
275
    {
276
        // Test anonymous user
277
        if ($member = Member::currentUser()) {
278
            $member->logOut();
279
        }
280
        $comment = $this->objFromFixture('Comment', 'firstComA');
281
        $commentID = $comment->ID;
282
        $this->assertNull($comment->SpamLink(), 'No permission to see mark as spam link');
283
        $spam = $this->get('CommentingController/spam/'.$comment->ID.'?ajax=1');
284
        $this->assertEquals(403, $spam->getStatusCode());
285
        $check = DataObject::get_by_id('Comment', $commentID);
286
        $this->assertEquals(0, $check->IsSpam, 'No permission to mark as spam');
287
288
        // Test non-authenticated user
289
        $this->logInAs('visitor');
290
        $this->assertNull($comment->SpamLink(), 'No permission to see mark as spam link');
291
292
        // Test authenticated user
293
        $this->logInAs('commentadmin');
294
        $comment = $this->objFromFixture('Comment', 'firstComA');
295
        $commentID = $comment->ID;
296
        $adminComment1Link = $comment->SpamLink();
297
        $this->assertContains('CommentingController/spam/'.$commentID.'?t=', $adminComment1Link);
298
299
        // Test that this link can't be shared / XSS exploited
300
        $this->logInAs('commentadmin2');
301
        $spam = $this->get($adminComment1Link);
302
        $this->assertEquals(400, $spam->getStatusCode());
303
        $check = DataObject::get_by_id('Comment', $comment->ID);
304
        $this->assertEquals(0, $check->IsSpam, 'No permission to mark as spam');
305
306
        // Test that this other admin can spam the comment with their own link
307
        $adminComment2Link = $comment->SpamLink();
308
        $this->assertNotEquals($adminComment2Link, $adminComment1Link);
309
        $this->autoFollowRedirection = false;
310
        $spam = $this->get($adminComment2Link);
311
        $this->assertEquals(302, $spam->getStatusCode());
312
        $check = DataObject::get_by_id('Comment', $commentID);
313
        $this->assertEquals(1, $check->IsSpam);
314
315
        // Cannot re-spam spammed comment
316
        $this->assertNull($check->SpamLink());
317
    }
@@ 319-359 (lines=41) @@
316
        $this->assertNull($check->SpamLink());
317
    }
318
319
    public function testHamComment()
320
    {
321
        // Test anonymous user
322
        if ($member = Member::currentUser()) {
323
            $member->logOut();
324
        }
325
        $comment = $this->objFromFixture('Comment', 'secondComC');
326
        $commentID = $comment->ID;
327
        $this->assertNull($comment->HamLink(), 'No permission to see mark as ham link');
328
        $ham = $this->get('CommentingController/ham/'.$comment->ID.'?ajax=1');
329
        $this->assertEquals(403, $ham->getStatusCode());
330
        $check = DataObject::get_by_id('Comment', $commentID);
331
        $this->assertEquals(1, $check->IsSpam, 'No permission to mark as ham');
332
333
        // Test non-authenticated user
334
        $this->logInAs('visitor');
335
        $this->assertNull($comment->HamLink(), 'No permission to see mark as ham link');
336
337
        // Test authenticated user
338
        $this->logInAs('commentadmin');
339
        $comment = $this->objFromFixture('Comment', 'secondComC');
340
        $commentID = $comment->ID;
341
        $adminComment1Link = $comment->HamLink();
342
        $this->assertContains('CommentingController/ham/'.$commentID.'?t=', $adminComment1Link);
343
344
        // Test that this link can't be shared / XSS exploited
345
        $this->logInAs('commentadmin2');
346
        $ham = $this->get($adminComment1Link);
347
        $this->assertEquals(400, $ham->getStatusCode());
348
        $check = DataObject::get_by_id('Comment', $comment->ID);
349
        $this->assertEquals(1, $check->IsSpam, 'No permission to mark as ham');
350
351
        // Test that this other admin can ham the comment with their own link
352
        $adminComment2Link = $comment->HamLink();
353
        $this->assertNotEquals($adminComment2Link, $adminComment1Link);
354
        $this->autoFollowRedirection = false;
355
        $ham = $this->get($adminComment2Link);
356
        $this->assertEquals(302, $ham->getStatusCode());
357
        $check = DataObject::get_by_id('Comment', $commentID);
358
        $this->assertEquals(0, $check->IsSpam);
359
360
        // Cannot re-ham hammed comment
361
        $this->assertNull($check->HamLink());
362
    }
@@ 364-404 (lines=41) @@
361
        $this->assertNull($check->HamLink());
362
    }
363
364
    public function testApproveComment()
365
    {
366
        // Test anonymous user
367
        if ($member = Member::currentUser()) {
368
            $member->logOut();
369
        }
370
        $comment = $this->objFromFixture('Comment', 'secondComB');
371
        $commentID = $comment->ID;
372
        $this->assertNull($comment->ApproveLink(), 'No permission to see approve link');
373
        $approve = $this->get('CommentingController/approve/'.$comment->ID.'?ajax=1');
374
        $this->assertEquals(403, $approve->getStatusCode());
375
        $check = DataObject::get_by_id('Comment', $commentID);
376
        $this->assertEquals(0, $check->Moderated, 'No permission to approve');
377
378
        // Test non-authenticated user
379
        $this->logInAs('visitor');
380
        $this->assertNull($comment->ApproveLink(), 'No permission to see approve link');
381
382
        // Test authenticated user
383
        $this->logInAs('commentadmin');
384
        $comment = $this->objFromFixture('Comment', 'secondComB');
385
        $commentID = $comment->ID;
386
        $adminComment1Link = $comment->ApproveLink();
387
        $this->assertContains('CommentingController/approve/'.$commentID.'?t=', $adminComment1Link);
388
389
        // Test that this link can't be shared / XSS exploited
390
        $this->logInAs('commentadmin2');
391
        $approve = $this->get($adminComment1Link);
392
        $this->assertEquals(400, $approve->getStatusCode());
393
        $check = DataObject::get_by_id('Comment', $comment->ID);
394
        $this->assertEquals(0, $check->Moderated, 'No permission to approve');
395
396
        // Test that this other admin can approve the comment with their own link
397
        $adminComment2Link = $comment->ApproveLink();
398
        $this->assertNotEquals($adminComment2Link, $adminComment1Link);
399
        $this->autoFollowRedirection = false;
400
        $approve = $this->get($adminComment2Link);
401
        $this->assertEquals(302, $approve->getStatusCode());
402
        $check = DataObject::get_by_id('Comment', $commentID);
403
        $this->assertEquals(1, $check->Moderated);
404
405
        // Cannot re-approve approved comment
406
        $this->assertNull($check->ApproveLink());
407
    }