Commit 4fe6eb59875dc0cb87dc75abe3bd8dfe448c1dd8
Exists in
master
and in
1 other branch
Inclusão de estrutura para isolamento dos teste em banco separado e alterações n…
…o getUpdate para o novo agente.
Showing
9 changed files
with
262 additions
and
10 deletions
Show diff stats
app/AppKernel.php
... | ... | @@ -41,6 +41,10 @@ class AppKernel extends Kernel |
41 | 41 | $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); |
42 | 42 | } |
43 | 43 | |
44 | + if (in_array($this->getEnvironment(), array('test'))) { | |
45 | + $bundles[] = new Liip\FunctionalTestBundle\LiipFunctionalTestBundle(); | |
46 | + } | |
47 | + | |
44 | 48 | return $bundles; |
45 | 49 | } |
46 | 50 | ... | ... |
app/config/config_test.yml
... | ... | @@ -4,11 +4,23 @@ imports: |
4 | 4 | framework: |
5 | 5 | test: ~ |
6 | 6 | session: |
7 | - storage_id: session.storage.mock_file | |
7 | + storage_id: session.storage.filesystem | |
8 | + | |
9 | +doctrine: | |
10 | + dbal: | |
11 | + default_connection: default | |
12 | + connections: | |
13 | + default: | |
14 | + driver: pdo_sqlite | |
15 | + path: %kernel.cache_dir%/test.db | |
16 | + charset: UTF8 | |
17 | + | |
18 | +liip_functional_test: | |
19 | + cache_sqlite_db: true | |
8 | 20 | |
9 | 21 | web_profiler: |
10 | 22 | toolbar: false |
11 | 23 | intercept_redirects: false |
12 | 24 | |
13 | 25 | swiftmailer: |
14 | 26 | - disable_delivery: true |
27 | + disable_delivery: true | |
15 | 28 | \ No newline at end of file | ... | ... |
composer.json
... | ... | @@ -60,7 +60,8 @@ |
60 | 60 | "ddeboer/data-import-bundle": "dev-master", |
61 | 61 | "twbs/bootstrap": "3.0.*", |
62 | 62 | "doctrine/migrations": "dev-master", |
63 | - "doctrine/doctrine-migrations-bundle": "dev-master" | |
63 | + "doctrine/doctrine-migrations-bundle": "dev-master", | |
64 | + "liip/functional-test-bundle": "~1.0" | |
64 | 65 | }, |
65 | 66 | "scripts": { |
66 | 67 | "post-install-cmd": [ | ... | ... |
composer.lock
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", |
5 | 5 | "This file is @generated automatically" |
6 | 6 | ], |
7 | - "hash": "c5bdcf452360fdac257f1b3f2477a9f1", | |
7 | + "hash": "2bfd0da0469386a6510b8353b8fd1ce5", | |
8 | 8 | "packages": [ |
9 | 9 | { |
10 | 10 | "name": "braincrafted/bootstrap-bundle", |
... | ... | @@ -2322,6 +2322,63 @@ |
2322 | 2322 | "time": "2014-09-22 12:29:23" |
2323 | 2323 | }, |
2324 | 2324 | { |
2325 | + "name": "liip/functional-test-bundle", | |
2326 | + "version": "1.0.2", | |
2327 | + "target-dir": "Liip/FunctionalTestBundle", | |
2328 | + "source": { | |
2329 | + "type": "git", | |
2330 | + "url": "https://github.com/liip/LiipFunctionalTestBundle.git", | |
2331 | + "reference": "e665bb4fca6ca449e225db569db671348a2579e4" | |
2332 | + }, | |
2333 | + "dist": { | |
2334 | + "type": "zip", | |
2335 | + "url": "https://api.github.com/repos/liip/LiipFunctionalTestBundle/zipball/e665bb4fca6ca449e225db569db671348a2579e4", | |
2336 | + "reference": "e665bb4fca6ca449e225db569db671348a2579e4", | |
2337 | + "shasum": "" | |
2338 | + }, | |
2339 | + "require": { | |
2340 | + "doctrine/common": "2.*", | |
2341 | + "php": ">=5.3.2", | |
2342 | + "symfony/browser-kit": "~2.0", | |
2343 | + "symfony/framework-bundle": "~2.0" | |
2344 | + }, | |
2345 | + "suggest": { | |
2346 | + "doctrine/dbal": "Required when using the fixture loading functionality with an ORM and SQLite", | |
2347 | + "doctrine/doctrine-fixtures-bundle": "Required when using the fixture loading functionality", | |
2348 | + "doctrine/orm": "Required when using the fixture loading functionality with an ORM and SQLite" | |
2349 | + }, | |
2350 | + "type": "symfony-bundle", | |
2351 | + "extra": { | |
2352 | + "branch-alias": { | |
2353 | + "dev-master": "1.0.x-dev" | |
2354 | + } | |
2355 | + }, | |
2356 | + "autoload": { | |
2357 | + "psr-0": { | |
2358 | + "Liip\\FunctionalTestBundle": "" | |
2359 | + } | |
2360 | + }, | |
2361 | + "notification-url": "https://packagist.org/downloads/", | |
2362 | + "license": [ | |
2363 | + "MIT" | |
2364 | + ], | |
2365 | + "authors": [ | |
2366 | + { | |
2367 | + "name": "Liip AG", | |
2368 | + "homepage": "http://www.liip.ch/" | |
2369 | + }, | |
2370 | + { | |
2371 | + "name": "Community contributions", | |
2372 | + "homepage": "https://github.com/liip/LiipFunctionalTestBundle/contributors" | |
2373 | + } | |
2374 | + ], | |
2375 | + "description": "This bundles provides additional functional test-cases for Symfony2 applications", | |
2376 | + "keywords": [ | |
2377 | + "Symfony2" | |
2378 | + ], | |
2379 | + "time": "2014-06-27 14:00:35" | |
2380 | + }, | |
2381 | + { | |
2325 | 2382 | "name": "monolog/monolog", |
2326 | 2383 | "version": "1.10.0", |
2327 | 2384 | "source": { | ... | ... |
src/Cacic/CommonBundle/DataFixtures/ORM/LoadUsuarioData.php
... | ... | @@ -40,6 +40,7 @@ class LoadUsuarioData extends AbstractFixture implements FixtureInterface, Conta |
40 | 40 | ->getEncoder($userAdmin) |
41 | 41 | ; |
42 | 42 | $userAdmin->setTeSenha($encoder->encodePassword('123456', $userAdmin->getSalt())); |
43 | + $userAdmin->setApiKey('cacic123'); | |
43 | 44 | |
44 | 45 | //$userAdmin->setTeSenha('7c4a8d09ca3762af61e59520943dc26494f8941b'); |
45 | 46 | ... | ... |
src/Cacic/CommonBundle/Entity/ComputadorRepository.php
... | ... | @@ -511,7 +511,7 @@ class ComputadorRepository extends EntityRepository |
511 | 511 | ->select('computador') |
512 | 512 | ->andwhere('computador.teIpComputador = :ip_computador') |
513 | 513 | ->andWhere('computador.idSo = :idSo') |
514 | - ->andWhere("computador.teIpRede = '0.0.0.0'") | |
514 | + ->innerJoin('CacicCommonBundle:Rede', 'rede', 'WITH', "computador.idRede = rede.idRede AND rede.teIpRede = '0.0.0.0'") | |
515 | 515 | ->setMaxResults(1) |
516 | 516 | ->orderBy('computador.idComputador') |
517 | 517 | ->setParameter('ip_computador', $ip_computador) |
... | ... | @@ -524,13 +524,12 @@ class ComputadorRepository extends EntityRepository |
524 | 524 | // Em último caso pega primeiro computador com menor Id |
525 | 525 | $qb = $this->createQueryBuilder('computador') |
526 | 526 | ->select('computador') |
527 | - ->andwhere('computador.teIpComputador = :ip_computador') | |
528 | 527 | ->andWhere('computador.idSo = :idSo') |
529 | 528 | ->setMaxResults(1) |
530 | 529 | ->orderBy('computador.idComputador') |
531 | 530 | ->setParameter('idSo', $so->getIdSo()); |
532 | 531 | |
533 | - $computador = $qb->getQuery()->getSingleResult(); | |
532 | + $computador = $qb->getQuery()->getOneOrNullResult(); | |
534 | 533 | } |
535 | 534 | |
536 | 535 | } | ... | ... |
... | ... | @@ -0,0 +1,49 @@ |
1 | +<?php | |
2 | +/** | |
3 | + * Created by PhpStorm. | |
4 | + * User: eduardo | |
5 | + * Date: 07/10/14 | |
6 | + * Time: 12:47 | |
7 | + */ | |
8 | + | |
9 | +namespace Cacic\CommonBundle\Tests; | |
10 | + | |
11 | +use Liip\FunctionalTestBundle\Test\WebTestCase; | |
12 | + | |
13 | + | |
14 | +class BaseTestCase extends WebTestCase { | |
15 | + | |
16 | + /** | |
17 | + * Método construtor | |
18 | + */ | |
19 | + public function __construct() { | |
20 | + // Fixtures to be loaded on tests | |
21 | + $this->classes = array( | |
22 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadLocalData', | |
23 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadRedeData', | |
24 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadClasseData', | |
25 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadClassPropertyData', | |
26 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadAcaoData', | |
27 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadCollectDefClassData', | |
28 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadConfiguracaoPadraoData', | |
29 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadConfiguracaoLocalData', | |
30 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadGrupoUsuarioData', | |
31 | + 'Cacic\CommonBundle\DataFixtures\ORM\LoadUsuarioData', | |
32 | + ); | |
33 | + } | |
34 | + | |
35 | + /** | |
36 | + * Setup test data for all cases | |
37 | + */ | |
38 | + | |
39 | + public function setUp() { | |
40 | + $this->loadFixtures($this->classes); | |
41 | + } | |
42 | + | |
43 | + /** | |
44 | + * Clear test data for all cases | |
45 | + */ | |
46 | + public function tearDown() { | |
47 | + | |
48 | + } | |
49 | +} | |
0 | 50 | \ No newline at end of file | ... | ... |
src/Cacic/WSBundle/Controller/NeoController.php
... | ... | @@ -486,6 +486,22 @@ class NeoController extends Controller { |
486 | 486 | |
487 | 487 | $computador = $this->getComputadorSemMac($dados, $request); |
488 | 488 | |
489 | + if (empty($computador)){ | |
490 | + // Só vai retornar erro se não tiver nenhum computador cadastrado | |
491 | + $logger->error("Nenhum computador cadastrado!!! Erro no getUpdate"); | |
492 | + // Retorna erro se o JSON for inválido | |
493 | + $error_msg = '{ | |
494 | + "message": "Ainda não há computadores cadastrados", | |
495 | + "codigo": 3 | |
496 | + }'; | |
497 | + | |
498 | + | |
499 | + $response = new JsonResponse(); | |
500 | + $response->setStatusCode('500'); | |
501 | + $response->setContent($error_msg); | |
502 | + return $response; | |
503 | + } | |
504 | + | |
489 | 505 | // 0 - Array de saída |
490 | 506 | $saida['agentcomputer'] = ""; |
491 | 507 | ... | ... |
src/Cacic/WSBundle/Tests/Controller/NeoControllerTest.php
... | ... | @@ -8,19 +8,22 @@ |
8 | 8 | |
9 | 9 | namespace Cacic\WSBundle\Tests\Controller; |
10 | 10 | |
11 | -use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; | |
11 | +use Cacic\CommonBundle\Tests\BaseTestCase; | |
12 | 12 | use Symfony\Component\HttpFoundation\Session; |
13 | 13 | use Symfony\Component\Serializer\Serializer; |
14 | 14 | use Symfony\Component\Serializer\Encoder\JsonEncoder; |
15 | 15 | |
16 | 16 | |
17 | 17 | |
18 | -class NeoControllerTest extends WebTestCase | |
18 | +class NeoControllerTest extends BaseTestCase | |
19 | 19 | { |
20 | 20 | /** |
21 | 21 | * Método que cria dados comuns a todos os testes |
22 | 22 | */ |
23 | 23 | public function setUp() { |
24 | + // Load setup from BaseTestCase method | |
25 | + parent::setUp(); | |
26 | + | |
24 | 27 | $this->client = static::createClient(); |
25 | 28 | $this->container = $this->client->getContainer(); |
26 | 29 | $this->apiKey = $this->container->getParameter('test_api_key'); |
... | ... | @@ -246,7 +249,10 @@ class NeoControllerTest extends WebTestCase |
246 | 249 | |
247 | 250 | } |
248 | 251 | |
249 | - public function testUpdate() { | |
252 | + /** | |
253 | + * Essa função vai falhar se não tiver nenhum computador cadastrado | |
254 | + */ | |
255 | + public function testSemMac() { | |
250 | 256 | $logger = $this->container->get('logger'); |
251 | 257 | $this->client->request( |
252 | 258 | 'POST', |
... | ... | @@ -292,10 +298,115 @@ class NeoControllerTest extends WebTestCase |
292 | 298 | $logger->debug("Response status: $status"); |
293 | 299 | $logger->debug("JSON do getConfig: \n".$response->getContent()); |
294 | 300 | |
301 | + $this->assertEquals($status, 500); | |
302 | + | |
303 | + } | |
304 | + | |
305 | + /** | |
306 | + * Retorna o último computador cadastrado caso seja enviado um sem Mac | |
307 | + */ | |
308 | + public function testUpdate() { | |
309 | + $logger = $this->container->get('logger'); | |
310 | + // Primeiro insere um computador válido | |
311 | + $this->client->request( | |
312 | + 'POST', | |
313 | + '/ws/neo/getTest', | |
314 | + array(), | |
315 | + array(), | |
316 | + array( | |
317 | + 'CONTENT_TYPE' => 'application/json', | |
318 | + //'HTTPS' => true | |
319 | + ), | |
320 | + '{ | |
321 | + "computador": { | |
322 | + "networkDevices": [ | |
323 | + { | |
324 | + "ipv4": "10.1.0.56", | |
325 | + "ipv6": "fe80::295b:a8db:d433:ebe%4", | |
326 | + "mac": "9C:D2:1E:EA:E0:89", | |
327 | + "netmask_ipv4": "255.255.255.0", | |
328 | + "netmask_ipv6": "ffff:ffff:ffff:ffff::", | |
329 | + "nome": "Wi-Fi" | |
330 | + }, | |
331 | + { | |
332 | + "ipv4": "192.168.56.1", | |
333 | + "ipv6": "fe80::19f2:4739:8a9e:45e4%16", | |
334 | + "mac": "08:00:27:00:14:2B", | |
335 | + "netmask_ipv4": "255.255.255.0", | |
336 | + "netmask_ipv6": "ffff:ffff:ffff:ffff::", | |
337 | + "nome": "VirtualBox Host-Only Network" | |
338 | + } | |
339 | + ], | |
340 | + "operatingSystem": { | |
341 | + "idOs": 176, | |
342 | + "nomeOs": "Windows_NT" | |
343 | + }, | |
344 | + "usuario": "Eric Menezes", | |
345 | + "nmComputador": "Notebook-XPTO", | |
346 | + "versaoAgente": "2.8.0" | |
347 | + } | |
348 | + }' | |
349 | + ); | |
350 | + $logger->debug("Dados JSON do computador enviados antes do getUpdate \n".$this->client->getRequest()->getcontent()); | |
351 | + | |
352 | + $response = $this->client->getResponse(); | |
353 | + $status = $response->getStatusCode(); | |
354 | + $logger->debug("Response status: $status"); | |
355 | + | |
356 | + $this->assertEquals($status, 200); | |
357 | + | |
358 | + // Agora tenta inserir um sem MAC | |
359 | + $this->client->request( | |
360 | + 'POST', | |
361 | + '/ws/neo/update', | |
362 | + array(), | |
363 | + array(), | |
364 | + array( | |
365 | + 'CONTENT_TYPE' => 'application/json', | |
366 | + //'HTTPS' => true | |
367 | + ), | |
368 | + '{ | |
369 | + "computador": { | |
370 | + "networkDevices": [ | |
371 | + { | |
372 | + "ipv4": "10.1.0.56", | |
373 | + "ipv6": "fe80::295b:a8db:d433:ebe%4", | |
374 | + "netmask_ipv4": "255.255.255.0", | |
375 | + "netmask_ipv6": "ffff:ffff:ffff:ffff::", | |
376 | + "nome": "Wi-Fi" | |
377 | + }, | |
378 | + { | |
379 | + "ipv4": "192.168.56.1", | |
380 | + "ipv6": "fe80::19f2:4739:8a9e:45e4%16", | |
381 | + "netmask_ipv4": "255.255.255.0", | |
382 | + "netmask_ipv6": "ffff:ffff:ffff:ffff::", | |
383 | + "nome": "VirtualBox Host-Only Network" | |
384 | + } | |
385 | + ], | |
386 | + "operatingSystem": { | |
387 | + "idOs": 176, | |
388 | + "nomeOs": "Windows_NT" | |
389 | + }, | |
390 | + "usuario": "Eric Menezes", | |
391 | + "nmComputador": "Notebook-XPTO", | |
392 | + "versaoAgente": "2.8.0" | |
393 | + } | |
394 | + }' | |
395 | + ); | |
396 | + $logger->debug("Dados JSON do computador enviados sem MAC para o getUpdate \n".$this->client->getRequest()->getcontent()); | |
397 | + | |
398 | + $response = $this->client->getResponse(); | |
399 | + $status = $response->getStatusCode(); | |
400 | + $logger->debug("Response status: $status"); | |
401 | + $logger->debug("JSON do getUpdate: \n".$response->getContent()); | |
402 | + | |
295 | 403 | $this->assertEquals($status, 200); |
296 | 404 | |
297 | 405 | } |
298 | 406 | |
407 | + /** | |
408 | + * Teste de inserção das coletas | |
409 | + */ | |
299 | 410 | public function testColeta() { |
300 | 411 | $logger = $this->container->get('logger'); |
301 | 412 | $this->client->request( |
... | ... | @@ -451,6 +562,8 @@ class NeoControllerTest extends WebTestCase |
451 | 562 | * Método que apaga todos os dados criados no teste |
452 | 563 | */ |
453 | 564 | public function tearDown() { |
565 | + // Executa método de limpeza de todos os casos de teste | |
566 | + parent::tearDown(); | |
454 | 567 | |
455 | 568 | } |
456 | 569 | ... | ... |