Sfoglia il codice sorgente

Merge branch 'master' of bitbucket.org:ikflowdat/ftth into FD3-201

Luciano Andrade 7 anni fa
parent
commit
5bed07c046

+ 16 - 26
.drone.yml

@@ -4,50 +4,40 @@ services:
     environment:
       - MYSQL_ROOT_PASSWORD=
       - MYSQL_ALLOW_EMPTY_PASSWORD=yes
+      - MYSQL_USER=drone
+      - MYSQL_PASSWORD=drone
   amqp:
     image: rabbitmq:3-management
 pipeline:
  build:
-    image: debian:8.0
+    image: docker.infra.flowdat.com/fd3/sf-php:latest
     environment:
-      HOST_FTTH: ftth.fd3.flowdat.com
-      HOST_STATS: stats.fd3.flowdat.com
-      HOST_MAPAS: mapas.fd3.flowdat.com
-      HOST_BASE: base.fd3.flowdat.com
+      HOST_FTTH: ftth.test.fd3.flowdat.com
+      HOST_STATS: stats.test.fd3.flowdat.com
+      HOST_MAPAS: mapas.test.fd3.flowdat.com
+      HOST_BASE: base.test.fd3.flowdat.com
+      OAUTH_CLIENT_ID: ""
+      OAUTH_CLIENT_SECRET: ""
     commands:
-      - echo 'Acquire::http { Proxy "http://200.50.168.30:3142"; };' > /etc/apt/apt.conf.d/01proxy  
-      
-      - apt-get update && apt-get install -yq build-essential git unzip wget
-      
-      - echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
-      - echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
-      - wget https://www.dotdeb.org/dotdeb.gpg
-      - apt-key add dotdeb.gpg
-      - rm dotdeb.gpg
-      - apt-get update 
-      - apt-get install -yq php7.0-cli php7.0-mysql mysql-client php7.0-curl php7.0-xml php7.0-bcmath php7.0-mbstring
+      - command -v mysqladmin >/dev/null 2>&1 || { echo "I require mysqladmin but it's not installed.  Aborting." >&2; exit 1; }
+      - while ! mysqladmin ping -h 127.0.0.1 --silent; do :; done
 
       - yes | mysqladmin -h 127.0.0.1 create fd3_ftth
       - yes | mysqladmin -h 127.0.0.1 create fd_session
       
-      - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
-      - php composer-setup.php --install-dir=/usr/local/bin/ --filename=composer
-      - php -r "unlink('composer-setup.php');"
       - echo 'client = Flowdat3-FTTH-Drone-Test' | tee /etc/flowdat.conf
       - echo 'date.timezone="America/Argentina/Buenos_Aires"' >> /etc/php/7.0/cli/php.ini
-      - yes | mysqladmin -h 127.0.0.1 create flowdat_ftth
-      - mkdir -p /root/.ssh/
-      - ssh-keyscan -p222 200.50.168.30 >> ~/.ssh/known_hosts
-      - ssh-keyscan -p222 infra.flowdat.com >> ~/.ssh/known_hosts
-      - ssh-keyscan -p222 gogs.infra.flowdat.com >> ~/.ssh/known_hosts
-      - ssh-keyscan -p22 bitbucket.org >> ~/.ssh/known_hosts
+
       - chmod 0400 keys/bitbucket.id_rsa
       - eval $(ssh-agent); ssh-add keys/bitbucket.id_rsa
+      - cp app/config/bundles/ik/device-bundle/parameters.yml.drone app/config/bundles/ik/device-bundle/parameters.yml
       - composer install -n --no-progress
       - composer dump-autoload --optimize
       - chmod 0777 -R var/logs var/cache var/sessions
       - php bin/console doctrine:schema:update --force -vvv --env=test
-      - vendor/phpunit/phpunit/phpunit --tap -c phpunit.xml.dist
+      - touch var/logs/{dev,test}.log
+      - tail -f var/logs/*.log &
+      - vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist
 
  docker:
    repo : docker.infra.flowdat.com/fd3/ftth

+ 6 - 19
Dockerfile

@@ -1,25 +1,10 @@
-FROM debian:9
+FROM docker.infra.flowdat.com/fd3/sf-php:latest
 EXPOSE 8000
 
-RUN apt-get update && apt-get install -yq python git wget vim tmux php-cli php-mysql php-curl graphviz php-amqplib php-xml php-zip
-
-RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
-RUN php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
-RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer
-RUN php -r "unlink('composer-setup.php');"
-
 ADD . /opt/ftth
 
-RUN mkdir ~/.ssh
-RUN ssh-keyscan -H bitbucket.org >> ~/.ssh/known_hosts
-RUN ssh-keyscan -H -p 222 infra.flowdat.com >> ~/.ssh/known_hosts
-RUN ssh-keyscan -H -p 222 200.50.168.30 >> ~/.ssh/known_hosts
-RUN ssh-keyscan -H -p 222 gogs.infra.flowdat.com >> ~/.ssh/known_hosts
-
 WORKDIR /opt/ftth
 
-RUN chmod 0600 keys/*
-
 RUN rm -rf /opt/ftth/vendor/*
 RUN rm -f app/config/parameters.yml
 RUN rm -f app/config/url_webservice.yml
@@ -31,14 +16,16 @@ RUN cp app/config/hwioauthbundle/parameters.yml.docker app/config/hwioauthbundle
 
 RUN cp app/config/bundles/ik/device-bundle/parameters.yml.docker app/config/bundles/ik/device-bundle/parameters.yml
 
-
 RUN rm -rf /opt/ftth/app/config/parameters.yml /opt/ftth/app/config/url_webservice.yml
 
-RUN cp -r keys /opt/keys/
 RUN chmod 0600 /opt/keys/*
 
 RUN eval $(ssh-agent) ; ssh-add /opt/keys/bitbucket.id_rsa ; composer install --no-scripts --no-interaction --no-progress
 
+RUN apt-get install -yq php-soap
+
+RUN eval $(ssh-agent) ; ssh-add /opt/keys/bitbucket.id_rsa ; git clone git@bitbucket.org:ikflowdat/json-wsdl.git /opt/json-wsdl ;  cd /opt/json-wsdl ; composer install --no-scripts --no-interaction --no-progress
+
 CMD eval $(ssh-agent) ; ssh-add /opt/keys/bitbucket.id_rsa ; composer install --no-scripts --no-interaction --no-progress;\
 	rm var/cache/* -rf ;\
  	cp app/config/parameters.yml.docker app/config/parameters.yml ;\
@@ -46,5 +33,5 @@ CMD eval $(ssh-agent) ; ssh-add /opt/keys/bitbucket.id_rsa ; composer install --
  	cp app/config/url_webservice.yml.docker app/config/url_webservice.yml ;\
  	cp app/config/hwioauthbundle/parameters.yml.docker app/config/hwioauthbundle/parameters.yml ;\
 	cp app/config/bundles/ik/device-bundle/parameters.yml.docker app/config/bundles/ik/device-bundle/parameters.yml ;\
-        composer run-script post-install-cmd --no-interaction ;\
+    composer run-script post-install-cmd --no-interaction ;\
  	cat app/config/hwioauthbundle/parameters.yml ; bin/console server:run 0.0.0.0 --env=dev

+ 6 - 0
app/config/bundles/ik/device-bundle/parameters.yml.drone

@@ -0,0 +1,6 @@
+parameters:
+   device_check_url: 'http://device.check.url/base/app_dev.php/api/devices/check.json'
+   device_post_url: 'http://device.post.url/base/app_dev.php/api/devices.json'
+   device_delete_post_url: 'http://device.delete.post.url/base/app_dev.php/api/device.json'
+   device_put_url: 'http://device.put.url/base/app_dev.php/api/devices/'
+ 

+ 1 - 1
app/config/config.yml

@@ -61,7 +61,7 @@ twig:
     form_themes:
         - 'WebserviceBundle:Type:remote_client_widget.html.twig'
     globals:
-        base_url: %url_base%
+        base_url: "%url_base%"
         fd_alerts: '@base_admin.alert_service'
         token_security: '@security.token_storage'
         owner_voter: '@owner_voter.voter'

+ 23 - 0
app/config/config_test.yml

@@ -17,3 +17,26 @@ web_profiler:
 
 swiftmailer:
     disable_delivery: true
+
+services:
+    backtrace_formatter:
+      class:  Monolog\Formatter\LineFormatter
+      calls:
+        - [ includeStacktraces ]
+# run 181
+# unexpected '1' (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /drone/src/bitbucket.org/ikflowdat/ftth/var/cache/test/appTestDebugProjectContainer.php:638
+#      calls: { includeStacktraces: [true] }
+
+monolog:
+    handlers:
+        main:
+            type: stream
+            path: "%kernel.logs_dir%/%kernel.environment%.log"
+            level: debug
+            channels: [!event]
+            formatter : backtrace_formatter
+
+        console:
+            type:   console
+            channels: [!event, !doctrine]
+

+ 2 - 2
app/config/parameters.yml.dist

@@ -4,7 +4,7 @@
 parameters:
     database_host:     127.0.0.1
     database_port:     ~
-    database_name:     flowdat_ftth
+    database_name:     fd3_ftth
     database_user:     root
     database_password: ~
     # You should uncomment this if you want use pdo_sqlite
@@ -33,4 +33,4 @@ parameters:
     db_session_port: null
     db_session_name: fd_session
     db_session_user: root
-    db_session_password: null
+    db_session_password: null

+ 2 - 1
app/config/url_webservice.yml.dist

@@ -5,7 +5,7 @@ parameters:
 
     client: '%url_base%/api/clients.json'
 
-    sidebar_menu: # urls para el sidebar menu 
+    sidebar_menu: # urls para el sidebar menu
         Base: '%url_base%'
         Mapas: '%url_mapas%'
         Stats: '%url_stats%'
@@ -15,3 +15,4 @@ parameters:
     remote_device_url: '%url_base%/api/devices.json'
     remote_device_log_url: '%url_base%/api/devicelogs.json'
     remote_get_map_url: '%url_mapas%/api/maps.json'
+    remote_get_object_type_url: '%url_mapas%/api/objecttypes.json'

+ 31 - 8
src/FTTHBundle/tests/ONURESTControllerTest.php

@@ -37,8 +37,10 @@ class ONURESTControllerTest extends WebTestCaseBase
     protected function obtainDataWebService()
     {
         $datos = array();
-        $datos['client'] =
+        $datos['api/clients'] =
             json_encode(array(array("name" => "Stock", "id" => 1)));
+        $datos['api/devices/check'] =
+            json_encode(array(array('result' => true, 'errors' => null)));
         return $datos;
     }
 
@@ -58,9 +60,9 @@ class ONURESTControllerTest extends WebTestCaseBase
         $datos['mac'] = '00:11:22:33';
         $datos['ponSerialNumber'] = 'pon';
         $datos['clientId'] = array('name' => 'Stock GZ [pruebass]');
-//        $datos['clientId'] = '1';
         $datos['transitionState'] = 'ts';
         $datos['tenancyId'] = 1;
+        $datos['deviceId'] = 1;
 
         if ($key == null) {
             return $datos;
@@ -105,8 +107,11 @@ class ONURESTControllerTest extends WebTestCaseBase
      */
     public function testPOST()
     {
-        echo "\n";
+        // inicializo con los datos del webservicemock
         $this->initDefault($this->obtainDataWebService());
+        // seteo los datos del listener
+        $this->setListener();
+        // hago la inserccion llamando al servicio por post
         $this->getClient()->request('POST', $this->getUri(), $this->obtainData());
         // obtengo la respuesta
         $response = $this->getClient()->getResponse();
@@ -137,11 +142,17 @@ class ONURESTControllerTest extends WebTestCaseBase
      */
     public function testPUT()
     {
+        // realizo la consulta
         $response = $this->generateGET();
+        // busco el id
         $id = $this->getProperty($response, 'id');
-        $this->initDefault();
-        // realizo la consulta
+        // inicializo con los datos del webservicemock
+        $this->initDefault($this->obtainDataWebService());
+        // seteo los datos del listener
+        $this->setListener();
+        // creo el nuevo set de datos a enviar.
         $data = $this->obtainDataChange($this->obtainData(), array('ponSerialNumber' => 'pon_modifi', 'id' => $id));
+        // hago la modificacion llamando al servicio por put
         $this->getClient()->request('PUT', $this->getUriPutDelete() . $id, $data);
         // obtengo la respuesta
         $response = $this->getClient()->getResponse();
@@ -172,7 +183,7 @@ class ONURESTControllerTest extends WebTestCaseBase
      */
     public function testDELETE()
     {
-        // busco el id de
+        // realizo la consulta
         $response = $this->generateGET();
         // obtengo el id de la respuesta de la busqueda
         $id = $this->getProperty($response, 'id');
@@ -196,8 +207,20 @@ class ONURESTControllerTest extends WebTestCaseBase
         $response = $this->generateGET();
         // verifco el resultado
         $this->assertEquals(200, $response->getStatusCode(), "Error en la respuesta http.");
-        $json = json_decode($response->getContent());
-        $this->assertTrue(empty($json), "No se obtuvo un objeto json.");
+        $this->assertJson($response->getContent(), "No se obtuvo un objeto json.");
     }
 
+    /**
+     * Sobreescribe el device.device_listener
+     */
+    private function setListener()
+    {
+        $webservicemock = $this->getContainerObject('webService');
+        $listener = $this->getContainerObject('device.device_listener');
+        $listener->setWebservice($webservicemock);
+        $this->setContainerObject('device.device_listener', $listener);
+        $validator = $this->getContainerObject('device.device_validator');
+        $validator->setWebservice($webservicemock);
+        $this->setContainerObject('device.device_validator', $validator);
+    }
 }