ogdhcp/tests/API-dhcp/robot/API.robot

216 lines
10 KiB
Plaintext

*** Settings ***
Documentation This is a basic skeleton for a Robot Framework test suite.
Library Collections
Library RequestsLibrary
*** Variables ***
${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
${wrong_subnet_data_address} Create Dictionary mask=255.255.255.0 address=444.168.1.0 nextServer=192.168.1.1 bootFileName=pxelinux.0
${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
${subnet_error} 0
*** Test Cases ***
Get Status of the DHCP server
[Documentation] Get status of the dhcp server and check services status
[Tags] status
${response}= GET ${BASE_URL}/status
Status Should Be 200 ${response}
Log ${response.json()}
# Convertir la respuesta a JSON usando ${response.json()}
${json}= Convert to Dictionary ${response.json()}
Dictionary Should Contain Key ${json} success
Dictionary Should Contain Key ${json} message
Should Contain ${response.json()['message']} disk_usage
Should Contain ${response.json()['message']} subnets
Should Contain ${response.json()['message']['disk_usage']} total
Get All Subnets
[Documentation] Este test verifica que la API retorna las subredes correctamente con el código 200.
[Tags] 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()}
# Verificar que la respuesta contiene las claves 'success' y 'message'
Dictionary Should Contain Key ${json} success
Dictionary Should Contain Key ${json} message
# 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
# 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} subnet
END
Post a new subnet
[Documentation] Post a new subnet
[Tags] subnets
${new_subnet} Create Dictionary
... subnetId=${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}
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"]} Subred agregada correctamente
Should Be Equal As Numbers ${json["message"]["id"]} ${valid_net_id}
Post a new subnet with existing id
[Documentation] Post a new subnet with invalid data
[Tags] subnets
${new_subnet} Create Dictionary
... subnetId=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"]} 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
${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']} 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
${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
# 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}
${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=404
# Verificar código de estado HTTP
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" mask="255.255.255.0" 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
${json}= Convert To Dictionary ${response.json()}
# 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 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 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
${json}= Convert To Dictionary ${response.json()}
# Verificar que la respuesta contiene el error esperado
Should Be Equal ${json['error']} Falta un parámetro requerido: mask
Modify subnet with invalid configuration netmask without address
[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 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']} Falta un parámetro requerido: address
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}/subnets/${invalid_net_id} expected_status=404
# Verificar código de estado HTTP
Should Be Equal As Numbers ${response.status_code} 404
${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']} La subred con el id '999' no existe