"Stock", "id" => 1))); $datos['api/devices/check'] = json_encode(array(array('result' => true, 'errors' => null))); $datos['api/devices'] = json_encode(array(array('name' => true, 'errors' => null))); return $datos; } /** * Genera los datos a manipular. * @param string $key Contiene la key a buscar en los datos. * @return array|string Retorna el array con los datos o el valor de la key pasada como parametro. * @throws \Exception Lanza un excepcion en caso de no encontrar la key. */ protected function obtainData($key = null) { $datos = array(); $datos['oltId'] = ''; $datos['modelId'] = '1'; $datos['napId'] = '1'; $datos['profileId'] = '1'; $datos['mac'] = '00:11:22:33'; $datos['ponSerialNumber'] = 'pon'; $datos['clientId'] = array('name' => 'Stock GZ [pruebass]'); $datos['transitionState'] = 'ts'; $datos['tenancyId'] = 1; $datos['deviceId'] = 1; if ($key == null) { return $datos; } else { if (isset($datos[$key])) { return $datos[$key]; } else { throw new \Exception("No se seteo la key del dato a obtener. key=" . $key); } } } /** * Realiza una busqueda. * get_onus -> /api/onus.{_format} * controller: ClientBundle:ClientREST:cget * Method: GET * @param string $uri Contiene la direccion. * @param array $data Contiene los filtros a utilizar en la busqueda. * @return null|Response Retorna el response. */ private function generateGET($uri = null, $data = null) { $this->initDefault(); if ($uri == null) { $uri = $this->getUri(); } // realizo la consulta if ($data == null) { $data = array('mac' => $this->obtainData('mac'), 'tenancyId' => $this->obtainData('tenancyId')); } $this->getClient()->request('GET', $uri . $this->generateFilters($data)); // obtengo la respuesta return $this->getClient()->getResponse(); } /** * Realiza el alta. * post_onu -> /api/onus.{_format} * controller: ClientBundle:ClientREST:post * Method: POST */ public function testPOST() { // 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(); $this->assertEquals(201, $response->getStatusCode(), "Error en la respuesta http."); } /** * Realiza una busqueda. * get_onus -> /api/onus.{_format} * controller: ClientBundle:ClientREST:cget * Method: GET */ public function testGET_POST() { // obtengo la respuesta $response = $this->generateGET(); // verifco el resultado $this->assertEquals(200, $response->getStatusCode(), "Error en la respuesta http."); $this->assertJson($response->getContent(), "No se obtuvo un objeto json."); $this->assertContains($this->obtainData('ponSerialNumber'), strtolower($response->getContent()), "Error al buscar al onu."); } /** * Realiza una modificacion. * put_onu -> /api/onus.{_format} * controller: ClientBundle:ClientREST:put * Method: PUT */ public function testPUT() { // realizo la consulta $response = $this->generateGET(); // busco el id $id = $this->getProperty($response, 'id'); // 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(); $this->assertEquals(200, $response->getStatusCode(), "Error en la respuesta http."); } /** * Realiza una busqueda. * get_onus -> /api/onus.{_format} * controller: ClientBundle:ClientREST:cget * Method: GET */ public function testGET_PUT() { $response = $this->generateGET(); // verifco el resultado $this->assertEquals(200, $response->getStatusCode(), "Error en la respuesta http."); $this->assertJson($response->getContent(), "No se obtuvo un objeto json."); $this->assertContains('pon_modifi', strtolower($response->getContent()), "Error al buscar al onu modificado."); } /** * Aplica una transicion de un workflow a una entidad * apply_onus -> /api/onu/apply/{id}/{workflow}/{transition}.{_format} * controller: ClientBundle:ClientREST:cget * Method: GET */ public function testAPPLY() { $this->initDefault($this->obtainDataWebService()); $response = $this->generateGET(); // verifco el resultado $this->assertEquals(200, $response->getStatusCode(), "Error en la respuesta http."); $this->assertJson($json = $response->getContent(), "No se obtuvo un objeto json."); $json = json_decode($json, true); $json = $json[0]; $this->assertEquals("active", $json["administrativeState"]); $this->initDefault($this->obtainDataWebService()); $this->getClient()->request('PATCH', $this->getUriPutDelete(). "apply/". $json["id"] . "/administrative_state/active_to_suspend.json" , array()); $response = $this->getClient()->getResponse(); $json = json_decode($response->getContent(), true); $this->assertEquals(201, $response->getStatusCode(), "Error en la respuesta http."); $this->assertEquals("suspend", $json["administrativeState"]); $response = $this->getClient()->getResponse(); var_dump( $response->getStatusCode()); } /** * Realiza una baja. * delete_onu -> /api/onus.{_format} * controller: ClientBundle:ClientREST:delete * Method: DELETE */ public function testDELETE() { // realizo la consulta $response = $this->generateGET(); // obtengo el id de la respuesta de la busqueda $id = $this->getProperty($response, 'id'); $this->initDefault(); // realizo la consulta $data = array('tenancy' => 1); $this->getClient()->request('DELETE', $this->getUriPutDelete() . $id, $data); // obtengo la respuesta $response = $this->getClient()->getResponse(); $this->assertEquals(204, $response->getStatusCode(), "Error en la respuesta http."); } /** * Realiza una busqueda. * get_onus -> /api/onus.{_format} * controller: ClientBundle:ClientREST:cget * Method: GET */ public function testGET_DELETE() { $response = $this->generateGET(); // verifco el resultado $this->assertEquals(200, $response->getStatusCode(), "Error en la respuesta http."); $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); } }