From 50f15494572a1c185cb719479046bcfe67b38326 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 30 Jul 2016 14:42:09 +0200 Subject: [PATCH] Created ProcessVisitsCommand --- .../test/Command/ProcessVisitsCommandTest.php | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 module/CLI/test/Command/ProcessVisitsCommandTest.php diff --git a/module/CLI/test/Command/ProcessVisitsCommandTest.php b/module/CLI/test/Command/ProcessVisitsCommandTest.php new file mode 100644 index 00000000..23463123 --- /dev/null +++ b/module/CLI/test/Command/ProcessVisitsCommandTest.php @@ -0,0 +1,96 @@ +visitService = $this->prophesize(VisitService::class); + $this->ipResolver = $this->prophesize(IpLocationResolver::class); + $command = new ProcessVisitsCommand( + $this->visitService->reveal(), + $this->ipResolver->reveal(), + Translator::factory([]) + ); + $app = new Application(); + $app->add($command); + + $this->commandTester = new CommandTester($command); + } + + /** + * @test + */ + public function allReturnedVisitsIpsAreProcessed() + { + $visits = [ + (new Visit())->setRemoteAddr('1.2.3.4'), + (new Visit())->setRemoteAddr('4.3.2.1'), + (new Visit())->setRemoteAddr('12.34.56.78'), + ]; + $this->visitService->getUnlocatedVisits()->willReturn($visits) + ->shouldBeCalledTimes(1); + + $this->visitService->saveVisit(Argument::any())->shouldBeCalledTimes(count($visits)); + $this->ipResolver->resolveIpLocation(Argument::any())->willReturn([]) + ->shouldBeCalledTimes(count($visits)); + + $this->commandTester->execute([ + 'command' => 'visit:process', + ]); + $output = $this->commandTester->getDisplay(); + $this->assertTrue(strpos($output, 'Processing IP 1.2.3.4') === 0); + $this->assertTrue(strpos($output, 'Processing IP 4.3.2.1') > 0); + $this->assertTrue(strpos($output, 'Processing IP 12.34.56.78') > 0); + } + + /** + * @test + */ + public function localhostAddressIsIgnored() + { + $visits = [ + (new Visit())->setRemoteAddr('1.2.3.4'), + (new Visit())->setRemoteAddr('4.3.2.1'), + (new Visit())->setRemoteAddr('12.34.56.78'), + (new Visit())->setRemoteAddr('127.0.0.1'), + (new Visit())->setRemoteAddr('127.0.0.1'), + ]; + $this->visitService->getUnlocatedVisits()->willReturn($visits) + ->shouldBeCalledTimes(1); + + $this->visitService->saveVisit(Argument::any())->shouldBeCalledTimes(count($visits) - 2); + $this->ipResolver->resolveIpLocation(Argument::any())->willReturn([]) + ->shouldBeCalledTimes(count($visits) - 2); + + $this->commandTester->execute([ + 'command' => 'visit:process', + ]); + $output = $this->commandTester->getDisplay(); + $this->assertTrue(strpos($output, 'Ignored localhost address') > 0); + } +}