diff --git a/tests/API-dhcp/robot/API.robot b/tests/API-dhcp/robot/API.robot index 539b358..b05aed8 100644 --- a/tests/API-dhcp/robot/API.robot +++ b/tests/API-dhcp/robot/API.robot @@ -6,7 +6,7 @@ Library RequestsLibrary *** Variables *** -${BASE_URL} http://localhost:8005/ogdhcp/v1 +${BASE_URL} http://localhost:8006/ogdhcp/v1 ${headers} Create Dictionary Content-Type application/json ${modified_subnet} Create Dictionary mask=255.255.192.0 address=192.168.1.0 nextServer=192.168.1.1 bootFileName=pxelinux.0 ${wrong_subnet_data_netmask} Create Dictionary mask=333.333.333.333 address=192.168.1.0 nextServer=192.168.1.1 bootFileName=pxelinux.0 @@ -14,7 +14,7 @@ ${wrong_subnet_data_address} Create Dictionary mask=255.255.255.0 addres ${wrong_subnet_data_server} Create Dictionary mask=255.255.255.0 address=192.168.1.0 nextServer=555.168.1.1 bootFileName=pxelinux.0 ${invalid_net_id} 999 ${valid_net_id} 2 -${new_subnet} Create Dictionary subnetId=${valid_net_id} mask=255.255.255.0 address=192.168.1.0 nextServer=192.168.1.1 bootFileName=pxelinux.0 +${subnet_error} 0 *** Test Cases *** Get Status of the DHCP server @@ -33,9 +33,9 @@ Get Status of the DHCP server Get All Subnets -[Documentation] Este test verifica que la API retorna las subredes correctamente con el código 200. + [Documentation] Este test verifica que la API retorna las subredes correctamente con el código 200. [Tags] subnets - ${response}= GET ${BASE_URL}/ogdhcp/v1/subnets + ${response}= GET ${BASE_URL}/subnets # Verificar código de estado HTTP Should Be Equal As Numbers ${response.status_code} 200 ${json}= Convert To Dictionary ${response.json()} @@ -45,105 +45,107 @@ Get All Subnets # Validar el mensaje de éxito Should Be Equal ${json['success']} Subredes obtenidas correctamente # Verificar que 'message' es una lista - Should Be True ${json['message']} is list + # Should Be True ${json['message']} is list # Verificar que cada subred en 'message' tiene los campos esperados FOR ${subred} IN @{json['message']} Dictionary Should Contain Key ${subred} id - Dictionary Should Contain Key ${subred} ip-address - Dictionary Should Contain Key ${subred} hw-address - Dictionary Should Contain Key ${subred} hostname + Dictionary Should Contain Key ${subred} subnet + Dictionary Should Contain Key ${subred} next-server + Dictionary Should Contain Key ${subred} boot-file-name END -## Revisar como forzar el error -# Get All subnets error -# [Documentation] Este test verifica que la API retorna un error correctamente con el código 400. -# [Tags] subnets -# ${response}= GET ${BASE_URL}/ogdhcp/v1/subnets params=${{"invalid_param": "value"}} expected_status=400 # Modificar para provocar el error -# # Verificar código de estado HTTP -# Should Be Equal As Numbers ${response.status_code} 400 -# ${json}= Convert To Dictionary ${response.json()} - -# # Verificar que la respuesta contiene la clave 'error' -# Dictionary Should Contain Key ${json} error - -# # Validar que el mensaje de error no está vacío -# Should Not Be Empty ${json['error']} - Post a new subnet [Documentation] Post a new subnet [Tags] subnets + ${new_subnet} Create Dictionary + ... id=${valid_net_id} + ... mask=255.255.255.0 + ... address=192.168.2.0 + ... nextServer=192.168.2.1 + ... bootFileName=pxelinux.0 ${headers}= Create Dictionary Content-Type=application/json - ${response}= POST ${BASE_URL}/subnets json=${new_subnet} headers=${headers} expected_status=200 + ${response}= POST ${BASE_URL}/subnets json=${new_subnet} headers=${headers} expected_status=200 Status Should Be 200 ${response} ${json}= Convert to Dictionary ${response.json()} Dictionary Should Contain Key ${json} success Dictionary Should Contain Key ${json} message - Should Contain ${json["success"]} Subnet agregada correctamente + Should Contain ${json["success"]} Subred agregada correctamente Should Be Equal As Numbers ${json["message"]["id"]} ${valid_net_id} - Should Be Equal ${json["message"]["mask"]} ${new_subnet["mask"]} - Should Be Equal ${json["message"]["address"]} ${new_subnet["address"]} - Should Be Equal ${json["message"]["nextServer"]} ${new_subnet["nextServer"]} - Should Be Equal ${json["message"]["bootFileName"]} ${new_subnet["bootFileName"]} + Post a new subnet with existing id [Documentation] Post a new subnet with invalid data [Tags] subnets + ${new_subnet} Create Dictionary + ... id=2 + ... mask=255.255.255.0 + ... address=192.168.3.0 + ... nextServer=192.168.3.1 + ... bootFileName=pxelinux.0 ${headers}= Create Dictionary Content-Type=application/json ${response}= POST ${BASE_URL}/subnets json=${new_subnet} headers=${headers} expected_status=400 Status Should Be 400 ${response} ${json}= Convert to Dictionary ${response.json()} Dictionary Should Contain Key ${json} error - Should Contain ${response.json()['error']} Subnet con id 2 ya existe - + Should Contain ${response.json()["error"]} Error: La subred con el id '${valid_net_id}' ya existe. Post a new subnet with existing address [Documentation] Post a new subnet with invalid data [Tags] subnets ${headers}= Create Dictionary Content-Type=application/json - ${new_subnet_invalid}= Create Dictionary subnetId=3 mask=255.255.255.0 address=192.168.1.0 nextServer=192.168.1.1 bootFileName=pxelinux.0 + ${new_subnet_invalid} Create Dictionary + ... id=3 + ... mask=255.255.255.0 + ... address=192.168.1.0 + ... nextServer=192.168.1.1 + ... bootFileName=pxelinux.0 + ${response}= POST ${BASE_URL}/subnets json=${new_subnet_invalid} headers=${headers} expected_status=400 Status Should Be 400 ${response} ${json}= Convert to Dictionary ${response.json()} Dictionary Should Contain Key ${json} error - Should Contain ${response.json()['error']} Error: La subred el subnet '192.168.1.0/24' ya existe en las subredes + Should Contain ${response.json()['error']} Error: La subred con la dirección '192.168.1.0/24' ya existe Modify an existing subnet by id [Documentation] Modify a subnet by id - [Tags] subnets - + [Tags] subnets + ${headers}= Create Dictionary Content-Type=application/json + ${modified_subnet}= Create Dictionary + ... mask=255.255.192.0 + ... address=192.168.1.0 + ... next-server=192.168.1.1 + ... bootFileName=pxelinux.0 # Modificar la subred con id=2 - ${response}= PUT ${BASE_URL}/subnets/2 json=${modified_subnet} headers=${headers} expected_status=200 - Status Should Be 200 - - + ${response}= PUT ${BASE_URL}/subnets/2 json=${modified_subnet} headers=${headers} expected_status=200 + Status Should Be 200 ${response} + ${json}= Convert to Dictionary ${response.json()} # Verificar que la respuesta contiene clave 'success' Dictionary Should Contain Key ${json} success # Validar el contenido del mensaje de éxito Should Be Equal ${json['success']} Subred modificada correctamente Should Be Equal ${json['message']['id']} 2 - + + Modify a subnet with invalid id [Documentation] Este test verifica que la modificación de una subred falla cuando el ID no existe. + [Tags] subnets ${headers}= Create Dictionary Content-Type=application/json ${modificar_subred}= Create Dictionary mask=255.255.192.0 address=192.168.1.0 nextServer=192.168.1.1 bootFileName=pxelinux.0 - ${response}= PUT ${BASE_URL}/ogdhcp/v1/subnets/${invalid_net_id} json=${modificar_subred} headers=${headers} expected_status=400 + ${response}= PUT ${BASE_URL}/ogdhcp/v1/subnets/${invalid_net_id} json=${modificar_subred} headers=${headers} expected_status=404 # Verificar código de estado HTTP - Should Be Equal As Numbers ${response.status_code} 400 - - ${json}= Convert To Dictionary ${response.json()} - - # Verificar que la respuesta contiene el error esperado - Should Be Equal ${json['error']} Error: La subred con el id '999' no existe + Should Be Equal As Numbers ${response.status_code} 404 + Modify subnet with error to save configuration [Documentation] Este test verifica que la modificación falla cuando hay un error al guardar la configuración en Kea DHCP. + [Tags] subnets ${headers}= Create Dictionary Content-Type=application/json - ${modificar_subred}= Create Dictionary subnet="192.168.1.0/24" next-server="192.168.1.1" boot-file-name="pxelinux.0" - ${response}= PUT ${BASE_URL}/ogdhcp/v1/subnets/2 json=${modificar_subred} headers=${headers} expected_status=400 + ${modificar_subred}= Create Dictionary subnet="192.168.1.0/24" nextServer="192.168.1.1" bootFileName="pxelinux.0" + ${response}= PUT ${BASE_URL}/subnets/${subnet_error} json=${modificar_subred} headers=${headers} expected_status=400 # Verificar código de estado HTTP Should Be Equal As Numbers ${response.status_code} 400 @@ -153,11 +155,13 @@ Modify subnet with error to save configuration # Verificar que la respuesta contiene el error esperado Should Be Equal ${json['error']} Error al guardar la configuración en Kea DHCP: Unable to save configuration -Modify subnet with invalid configuration +Modify subnet with invalid configuration address without netmask [Documentation] Este test verifica que la modificación falla cuando hay un error en la configuración de Kea DHCP. + [Tags] subnets ${headers}= Create Dictionary Content-Type=application/json - ${modificar_subred}= Create Dictionary subnet="192.168.1.0" next-server="192.168.1.1" boot-file-name="pxelinux.0" - ${response}= PUT ${BASE_URL}/ogdhcp/v1/subnets/2 json=${modificar_subred} headers=${headers} + ${modificar_subred}= Create Dictionary address="192.168.1.0" nextServer="192.168.1.1" bootFileName="pxelinux.0" + + ${response}= PUT ${BASE_URL}/subnets/2 json=${modificar_subred} headers=${headers} expected_status=400 # Verificar código de estado HTTP Should Be Equal As Numbers ${response.status_code} 400 @@ -165,15 +169,60 @@ Modify subnet with invalid configuration ${json}= Convert To Dictionary ${response.json()} # Verificar que la respuesta contiene el error esperado - Should Be Equal ${json['error']} Error kea configuration invalid: Invalid configuration syntax + Should Be Equal ${json['error']} Error: La máscara de red es requerida con el parametro 'address' -Delete a new subnet by id - [Documentation] Delete a subnet by id +Modify subnet with invalid configuration netmask without addres + [Documentation] Este test verifica que la modificación falla cuando hay un error en la configuración de Kea DHCP. [Tags] subnets - ${response}= DELETE ${BASE_URL}/subnets/2 headers=${headers} - Status Should Be 200 - ${json}= Set Variable ${response.json()} - Should Be Equal ${json["status"]} success - Should Be Equal ${json["message"]} Subred eliminada correctamente - Should Be Equal ${json["subnetId"]} 2 + ${headers}= Create Dictionary Content-Type=application/json + ${modificar_subred}= Create Dictionary mask="255.255.255.0" nextServer="192.168.1.1" bootFileName="pxelinux.0" + + ${response}= PUT ${BASE_URL}/subnets/2 json=${modificar_subred} headers=${headers} expected_status=400 + + # Verificar código de estado HTTP + Should Be Equal As Numbers ${response.status_code} 400 + + ${json}= Convert To Dictionary ${response.json()} + + # Verificar que la respuesta contiene el error esperado + Should Be Equal ${json['error']} Error: La dirección de red es requerida con el parametro 'mask' + +Delete subnet by id + [Documentation] Este test verifica que la subred se elimina correctamente con el código 200. + [Tags] subnets + ${response}= DELETE ${BASE_URL}/subnets/${valid_net_id} + # Verificar código de estado HTTP + Should Be Equal As Numbers ${response.status_code} 200 + ${json}= Convert To Dictionary ${response.json()} + # Verificar que la respuesta contiene la clave 'success' + Dictionary Should Contain Key ${json} success + # Validar el mensaje de éxito + Should Be Equal ${json['success']} Subred eliminada correctamente + +Delete subnet - Error: wrong subnet Id + [Documentation] Este test verifica que la eliminación falla si la subred con el ID no existe. + [Tags] subnets + ${response}= DELETE ${BASE_URL}/ogdhcp/v1/subnets/${invalid_net_id} expected_status=400 + # Verificar código de estado HTTP + Should Be Equal As Numbers ${response.status_code} 400 + ${json}= Convert To Dictionary ${response.json()} + # Verificar que la respuesta contiene la clave 'error' + Dictionary Should Contain Key ${json} error + # Validar el mensaje de error + Should Be Equal ${json['error']} Error: La subred con el id '999' no existe + +Delete subnet - Error: no subnets defined + [Documentation] Este test verifica que la eliminación falla cuando no hay subredes definidas. + [Tags] subnets + ${response}= DELETE ${BASE_URL}/ogdhcp/v1/subnets/${valid_net_id} expected_status=400 + # Verificar código de estado HTTP + Should Be Equal As Numbers ${response.status_code} 400 + ${json}= Convert To Dictionary ${response.json()} + # Verificar que la respuesta contiene la clave 'error' + Dictionary Should Contain Key ${json} error + # Validar el mensaje de error + Should Be Equal ${json['error']} Error: No hay subredes definidas + + +