Added Tests for RESTCONF on NIC
authorAlton Fong <alton.fong@hp.com>
Wed, 24 Jun 2015 14:59:39 +0000 (07:59 -0700)
committerAlton Fong <alton.fong@hp.com>
Wed, 24 Jun 2015 15:29:46 +0000 (08:29 -0700)
Change-Id: Ic5e4feb43e56d38f9f3ed9e875f913634cfffdd7
Signed-off-by: Alton Fong <alton.fong@hp.com>
test/csit/suites/nic/basic/010_Restconf_OK.robot

index 0547df3f2c27da7f0b1e06252596921762678979..7c47fea53e297373c506872b5c90584eae8d557f 100644 (file)
@@ -3,11 +3,23 @@ Documentation     Test suite to verify Restconf is OK
 Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
 Suite Teardown    Delete All Sessions
 Library           RequestsLibrary
+Library           Collections
+Library           HttpLibrary.HTTP
 Variables         ../../../variables/Variables.py
 Resource          ../../../libraries/Utils.txt
 
 *** Variables ***
 ${REST_CONTEXT}    /restconf/modules
+${INTENT_CONTEXT}    /restconf/config/intent:intents
+@{intent1_correct}    10.0.0.5    10.0.0.2,10.0.0.3    allow
+@{intent2_correct}    10.0.0.5    10.0.0.2,10.0.0.10    block
+@{intent3_correct}    10.0.0.1,10.0.0.4    10.0.0.2    allow
+@{all_intents_correct}    ${intent1_correct}    ${intent2_correct}    ${intent3_correct}
+@{intent1_bad}    10.0.0.3    10.0.0.22,10.0.0.33    allow
+@{intent2_bad}    10.0.0.1    10.0.0.12,10.0.0.102    block
+@{intent3_bad}    10.0.0.2,10.0.0.10    10.0.0.42    allow
+@{all_intents_bad}    ${intent1_bad}    ${intent2_bad}    ${intent3_bad}
+@{all_intents_ids}
 
 *** Test Cases ***
 Get Controller Modules
@@ -17,3 +29,90 @@ Get Controller Modules
     Should Be Equal As Strings    ${resp.status_code}    200
     Should Contain    ${resp.content}    ietf-restconf
 
+Verify REST Command Add, Update and Remove
+    REST Delete All Intents
+    : FOR    ${intent}    IN    @{all_intents_bad}
+    \    ${intent_id}=    REST Add Intent    @{intent}
+    \    Append To List    ${all_intents_ids}    ${intent_id}
+    ${resp}=    REST Get List of Intents
+    : FOR    ${intent_id}    IN    @{all_intents_ids}
+    \    Should Contain    ${resp}    ${intent_id}
+    ${size}=    Get Length    ${all_intents_correct}
+    : FOR    ${index}    IN RANGE    ${size}
+    \    ${intent}=    Get From List    ${all_intents_correct}    ${index}
+    \    ${intent_id}=    Get From List    ${all_intents_ids}    ${index}
+    \    REST Update Intent By Id    ${intent_id}    @{intent}
+    \    ${intent_from}=    Get From List    ${intent}    0
+    \    ${intent_to}=    Get From List    ${intent}    1
+    \    ${intent_permission}=    Get From List    ${intent}    2
+    \    ${resp}=    REST Get Intent From Id    ${intent_id}
+    \    Should Contain    ${resp}    ${intent_from}
+    \    Should Contain    ${resp}    ${intent_to}
+    \    Should Contain    ${resp}    ${intent_permission}
+    : FOR    ${id}    IN    @{all_intents_ids}
+    \    REST Delete Intent By Id    ${id}
+
+*** Keywords ***
+REST Get List of Intents
+    [Documentation]    Get the list of intents configured
+    ${resp}    RequestsLibrary.Get    session    ${INTENT_CONTEXT}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Should Contain    ${resp.content}    "intents"
+    [Return]    ${resp.content}
+
+REST Get Intent From Id
+    [Arguments]    ${id}
+    [Documentation]    Get the intent detail from id
+    ${resp}    RequestsLibrary.Get    session    ${INTENT_CONTEXT}/intent/${id}
+    Log Json    ${resp.content}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Should Contain    ${resp.content}    ${id}
+    [Return]    ${resp.content}
+
+Generate Random UUID
+    [Documentation]    Generates random UUID for use with creating intents on REST API. Has the format
+    ...    (alphanumeric) 8-4-4-4-12.
+    ${id1}=    Generate Random String    8    [NUMBERS]abcdef
+    ${id2}=    Generate Random String    4    [NUMBERS]abcdef
+    ${id3}=    Generate Random String    4    [NUMBERS]abcdef
+    ${id4}=    Generate Random String    4    [NUMBERS]abcdef
+    ${id5}=    Generate Random String    12    [NUMBERS]abcdef
+    ${id}=    Catenate    SEPARATOR=-    ${id1}    ${id2}    ${id3}    ${id4}
+    ...    ${id5}
+    [Return]    ${id}
+
+REST Add Intent
+    [Arguments]    ${intent_from}    ${intent_to}    ${intent_permission}
+    [Documentation]    Make an Intent and return the id of the new intent
+    ${headers}=    Create Dictionary    Content-Type=application/json
+    ${id}=    Generate Random UUID
+    ${data}=    Catenate    {"intent":{"id": "${id}","subjects":[{"order": 1,"end-point-group": {"name": "${intent_from}"}},{"order": 2,"end-point-group": { "name": "${intent_to}"}}],"actions": [{"order": 1,"${intent_permission}": {}}]}}
+    ${resp}    RequestsLibrary.Post    session    ${INTENT_CONTEXT}    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    204
+    [Return]    ${id}
+
+REST Update Intent By Id
+    [Arguments]    ${id}    ${intent_from}    ${intent_to}    ${intent_permission}
+    [Documentation]    Make an Intent and return the id of the new intent
+    ${headers}=    Create Dictionary    Content-Type=application/json
+    ${data}=    Catenate    {"intent":{"id": "${id}","subjects":[{"order": 1,"end-point-group": {"name": "${intent_from}"}},{"order": 2,"end-point-group": { "name": "${intent_to}"}}],"actions": [{"order": 1,"${intent_permission}": {}}]}}
+    ${resp}    RequestsLibrary.Put    session    ${INTENT_CONTEXT}/intent/${id}    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    [Return]    ${resp}
+
+REST Delete All Intents
+    [Documentation]    Delete all of the Intents
+    ${headers}=    Create Dictionary    Content-Type=application/json
+    ${resp}    RequestsLibrary.Delete    session    ${INTENT_CONTEXT}    headers=${headers}
+    Log    ${resp}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    [Return]    ${resp.content}
+
+REST Delete Intent By Id
+    [Arguments]    ${id}
+    [Documentation]    Delete Intent by Id
+    ${headers}=    Create Dictionary    Content-Type=application/json
+    ${resp}    RequestsLibrary.Delete    session    ${INTENT_CONTEXT}/intent/${id}    headers=${headers}
+    Log    ${resp}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    [Return]    ${resp.content}