+++ /dev/null
-*** Settings ***
-Documentation Basic REST AAA Tests for IdMLight
-...
-... Copyright (c) 2015 Hewlett-Packard Development Company, L.P. and others. All rights reserved.
-...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/ep1-v10.html
-Suite Setup IdMLight Suite Setup
-Suite Teardown IdMLight Suite Teardown
-Library Collections
-Library RequestsLibrary
-Library OperatingSystem
-Library String
-Library HttpLibrary.HTTP
-Library DateTime
-Library ../../../libraries/Common.py
-Library ../../../libraries/AAAJsonUtils.py
-Resource ../../../libraries/Utils.robot
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/AAAKeywords.robot
-
-*** Variables ***
-# port is fixed in Jetty configuration, as well
-${URI} http://${CONTROLLER}:8282
-# create lists for Domains, Roles and Users - that can be cleaned up upon Teardown
-@{cleanup_domain_list}
-@{cleanup_role_list}
-@{cleanup_user_list}
-@{cleanup_grant_list}
-# will modify value in Setup and use throughout the code
-${HEADERS} ${EMPTY}
-
-*** Test Cases ***
-Test Post New Domain
- [Documentation] Create a domain using REST POST command.
- # create a temp name, set it to domainName
- ${domainName}= Create Random Name domain-Other
- # Create the new domain, initialize some values to test against
- ${domaindesc}= Set Variable "testdomain other"
- ${domainstatus}= Set Variable "true"
-
- # Have to escape the quotes, need quotes to make the POST work properly
- ${data}= Set Variable {"description":${domaindesc},"domainid":"7","name":\"${domainName}\","enabled":${domainstatus}}
- Log ${data}
- # now post it
- ${domain}= Post New Domain ${domainName} ${data}
- Log ${domain}
-
- ${domainid}= Parse Item From Blob By Offset ${domain} 0
- Log ${domainid}
-
- # get the domain to verify
- ${fetched_domain}= Get Specific Domain ${domainid}
- # add new domain json string to the cleanup list for later cleanup
- Append To List ${cleanup_domain_list} ${fetched_domain}
- # count the number of domainid's that appear in this block of JSON
- ${depth}= Fieldcount ${fetched_domain} "domainid"
- ${fetchedDomStatus}= Get Domain State By Domainid ${domain} ${domainid} ${depth}
- ${fetchedDomDesc}= Get Domain Description By Domainid ${domain} ${domainid} ${depth}
- # Set Test Disposition based on comparison of what was posted and what was fetched
- ${testdisposition}= Set Variable If '${fetched_domain}' == '${domain}' '${fetchedDomStatus}' == '${domainstatus}' '${fetchedDomDesc}' == '${domaindesc}'
- Log ${testdisposition}
-
-Test Get Domains
- [Documentation] Exercise REST GET command to get all domains.
- # rely on the creation of a test role in the Setup routine
- # pop item off of end of the cleanup list, for use (does not alter list)
- Log ${cleanup_domain_list}
- ${domain_item}= Get From List ${cleanup_domain_list} -1
- Log ${domain_item}
-
- # parse out the domainid from the domain info we just grabbed
- ${domainid}= Parse Item From Blob By Offset ${domain_item} 0
- Log ${domainid}
-
- # parse out the name from the same info
- ${domainname}= Parse Item From Blob By Offset ${domain_item} 1
- Log ${domainname}
-
- # get the entire dump of created domains
- ${content}= Get Domains
-
- # parse through that massive blob and get the individual name created in Setup
- ${node_count}= Nodecount ${content} domains domainid
- ${domainid}= Convert To Integer ${domainid}
-
- # Get the domain name from the database, looking it up by its domainid
- ${domainentry}= Get Domain Name By Domainid ${content} ${domainid} ${node_count}
-
- Log ${domainentry}
- # compare to see if the parsed user id matches the one we grabbed from list
- Should Be Equal ${domainentry} ${domainname}
-
-Test Get Specific Domain
- [Documentation] Get a specific domain using REST GET command.
- # from the pre-created (see Setup routine) list, grab a domain id for testing
- ${listlength}= Get Length ${cleanup_domain_list}
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_domain_list}
- ${domain_item}= Get From List ${cleanup_domain_list} -1
- ${item}= Pop Name Off Json ${domain_item}
- # convert this crap to unicode
- # ${item}= Convert To String ${item}
- Log ${item}
- # make a GET call to find the material we want to delete
- ${domains}= Get Domains
- # convert name on the list to an ID, by which we delete this stuff
- ${node_count}= Nodecount ${domains} domains domainid
- ${node_count}= Convert To Integer ${node_count}
- ${domainid}= Get Domain Id By Domainname ${domains} ${item} ${node_count}
- # now, get the specific domain by it's domainid
- ${domaininfo}= Get Specific Domain ${domainid}
- Should Contain ${domaininfo} ${item}
- Log ${domaininfo}
-
-Test Update Specific Domain
- [Documentation] Update a specific domain using REST PUT command.
- # rely on the creation of a test domain in the Setup routine
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_domain_list}
- ${domain_item}= Get From List ${cleanup_domain_list} -1
- Log ${domain_item}
-
- # parse out the domain id from the domain info we just grabbed
- ${domid}= Parse Item From Blob By Offset ${domain_item} 0
- Log ${domid}
-
- # parse out the name from the same info
- ${domname}= Parse Item From Blob By Offset ${domain_item} 1
- Log ${domname}
-
- ${data}= Set Variable {"name":"MasterTest Domain"}
- Update Specific Domain ${data} ${domid}
- ${domname}= Get Specific Domain Name ${domid}
- Log ${domname}
- ${z}= Split String ${data} :
- ${dname}= Get From List ${z} 1
- ${dname}= Replace String ${dname} " ${EMPTY}
- ${dname}= Replace String ${dname} } ${EMPTY}
- Log ${dname}
- ${modified_name}= Pop Name Off Json ${domname}
- Log ${modified_name}
- Should Be Equal ${dname} ${modified_name}
-
-Test Delete Domain
- [Documentation] Delete a specific domain using REST DELETE command.
- # create a temporary test domain
- ${tempdomain}= Create Random Name temp-domain-name
- ${domaindata}= Set Variable {"description":"temporary test domain","domainid":"1","name":"${tempdomain}","enabled":"true"}
- # Post that temp domain
- ${newdomain}= Post New Domain ${tempdomain} ${domaindata}
- Log ${newdomain}
- # parse out the domain-id from the domain info we just created
- ${domainid}= Parse Item From Blob By Offset ${newdomain} 0
- Log ${domainid}
-
- # now wipe if off the map
- Delete Domain ${domainid}
- # we should not be able to fetch this domain from the database of domains...should fail...
- ${content}= Check Specific Id Does Not Exist domain ${domainid}
- Log ${content}
-
-Test Get Users
- [Documentation] Exercise REST GET command for obtaining all users.
- # rely on the creation of a test user in the Setup routine
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_user_list}
- ${user_item}= Get From List ${cleanup_user_list} -1
- Log ${user_item}
-
- # parse out the userid from the user info we just grabbed
- ${userid}= Parse Item From Blob By Offset ${user_item} 0
- Log ${userid}
-
- # parse out the name from the same info
- ${username}= Parse Item From Blob By Offset ${user_item} 1
- Log ${username}
-
- # get the entire blob of users
- ${content}= Get Users
- # parse through that massive blob and get the individual name
- ${node_count}= Nodecount ${content} users userid
- ${userid}= Convert To Integer ${userid}
- ${userentry}= Get User Name By Userid ${content} ${userid} ${node_count}
- Log ${userentry}
- # compare to see if the parsed user id matches the one we grabbed from list
- Should Be Equal ${userentry} ${username}
-
-Test Get Specific User
- [Documentation] Exercise REST GET command to obtain a specific user.
- # from the pre-created (see Setup routine) list, grab a user id for testing
- ${listlength}= Get Length ${cleanup_user_list}
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_user_list}
- ${user_item}= Get From List ${cleanup_user_list} -1
- ${item}= Pop Name Off Json ${user_item}
- # convert this to unicode
- # ${item}= Convert To String ${item}
- Log ${item}
-
- # parse out the userid from the user info we just grabbed
- ${userid}= Parse Item From Blob By Offset ${user_item} 0
- Log ${userid}
-
- # parse out the name from the same info
- ${username}= Parse Item From Blob By Offset ${user_item} 1
- Log ${username}
-
- # make a GET call to find the material we want
- ${content}= Get Specific User ${userid}
-
- # parse out the user name from the content we just fetched
- ${fetched_username}= Parse Item From Blob By Offset ${content} 1
- Log ${fetched_username}
-
- # compare to see if the parsed user name matches the one we grabbed from list
- Should Contain ${fetched_username} ${username}
-
-Test Update User
- [Documentation] Exercise PUT command against an existing User ID.
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_user_list}
- ${user_item}= Get From List ${cleanup_user_list} -1
- Log ${user_item}
-
- # parse out the user-id from the user info we just created
- ${userid}= Parse Item From Blob By Offset ${user_item} 0
- Log ${userid}
-
- # update the information for the userid
- ${testusername}= Create Random Name force-accomplish
- ${data}= Set Variable {"description":"sample test description", "name":"${testusername}"}
- ${content}= Update Specific User ${data} ${userid}
- Log ${testusername}
- # now, make a GET call to find the material we modified
- ${existing_useritem}= Get Specific User ${userid}
-
- # parse out the name from the existing userinfo
- ${expected_username}= Parse Item From Blob By Offset ${existing_useritem} 1
- Log ${expected_username}
-
- # compare to see if the GOTTEN user id matches the one we grabbed from list
- Should Be Equal ${expected_username} ${testusername}
-
-Test Post New User
- [Documentation] Test the POST command to create a new user.
- # create information for a new role (for the test)
- ${testusername}= Create Random Name Darth-Maul
- ${data}= Set Variable {"description":"sample user description", "name":"${testusername}", "userid":1}
- Log ${testusername}
-
- # Post this puppy
- ${content}= Post New User ${testusername} ${data}
- # parse out the userid from the content we just created
- ${userid}= Parse Item From Blob By Offset ${content} 0
- Log ${userid}
-
- # now go GET the userid info and compare to the name we fabricated
- ${existing_useritem}= Get Specific User ${userid}
-
- ${expected_username}= Parse Item From Blob By Offset ${existing_useritem} 1
- Log ${expected_username}
-
- # compare to see if the GOTTEN role id matches the one we grabbed from list
- Should Be Equal ${expected_username} ${testusername}
-
-Test Delete User
- [Documentation] Exercise REST command for DELETE user command.
- # create a user and then delete it. Use Get to verify it's gone
- # create information for a new user (for the test)
- ${testusername}= Create Random Name force-user
- ${data}= Set Variable {"description":"sample test description", "name":"${testusername}", "userid":1}
- Log ${testusername}
- # Post this disposable user
- ${content}= Post New User ${testusername} ${data}
- # parse out the user-id from the content we just created
- ${userid}= Parse Item From Blob By Offset ${content} 0
- Log ${userid}
-
- # now delete it...
- ${content2}= Delete User ${userid}
- # should fail...
- ${content}= Check Specific Id Does Not Exist user ${userid}
- Log ${content}
-
-Test Get Specific Role
- [Documentation] Exercise REST command for roles GET command.
- # from the pre-created (see Setup routine) list, grab a role id for testing
- ${listlength}= Get Length ${cleanup_role_list}
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_role_list}
- ${role_item}= Get From List ${cleanup_role_list} -1
- Log ${role_item}
- # parse out the role-id from the role info we just created
- ${roleid}= Parse Item From Blob By Offset ${roleitem} 0
- Log ${roleid}
-
- # make a GET call to find the material we want
- ${existing_roleitem}= Get Specific Role ${roleid}
-
- # parse out the expected role-id from the content we just created
- ${eroleid}= Parse Item From Blob By Offset ${existing_roleitem} 0
- Log ${eroleid}
- # compare to see if the GOTTEN role id matches the one we grabbed from list
- Should Be Equal ${eroleid} ${roleid}
-
-Test Get Roles
- [Documentation] Exercise REST command for roles GET command.
- # rely on the creation of a test role in the Setup routine
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_role_list}
- ${role_item}= Get From List ${cleanup_role_list} -1
- Log ${role_item}
-
- # parse out the role-id from the info we just grabbed
- ${roleid}= Parse Item From Blob By Offset ${role_item} 0
- Log ${roleid}
- # parse out the name from the same info
- ${rolename}= Parse Item From Blob By Offset ${role_item} 1
- Log ${rolename}
-
- # get the entire blob of roles
- ${content}= Get Roles
- # parse through that massive blob and get the individual name
- ${node_count}= Nodecount ${content} roles roleid
- ${roleid}= Convert To Integer ${roleid}
- ${roleentry}= Get Role Name By Roleid ${content} ${roleid} ${node_count}
- Log ${roleentry}
- # compare to see if the parsed user id matches the one we grabbed from list
- Should Be Equal ${roleentry} ${rolename}
-
-Test Update Role
- [Documentation] Exercise PUT command against an existing Role ID.
- # pop item off of end of the list, for use (does not alter list)
- Log ${cleanup_role_list}
- ${role_item}= Get From List ${cleanup_role_list} -1
- Log ${role_item}
- # parse out the role-id from the role info we just created
- ${roleid}= Parse Item From Blob By Offset ${role_item} 0
- Log ${roleid}
-
- # update the information for the roleid
- ${testrolename}= Create Random Name force-accomplish
- ${data}= Set Variable {"description":"sample test description", "name":"${testrolename}"}
- ${content}= Update Specific Role ${data} ${roleid}
- Log ${testrolename}
- # now, make a GET call to find the material we modified
- ${existing_roleitem}= Get Specific Role ${roleid}
-
- # parse out the name from the same info
- ${expected_rolename}= Parse Item From Blob By Offset ${existing_roleitem} 1
- Log ${expected_rolename}
-
- # compare to see if the GOTTEN role id matches the one we grabbed from list
- Should Be Equal ${expected_rolename} ${testrolename}
-
-Test Post New Role
- [Documentation] Exercise POST command to create a new Role.
- # create information for a new role (for the test)
- ${testrolename}= Create Random Name force-brother-cousin
- ${data}= Set Variable {"description":"sample test description", "name":"${testrolename}", "roleid":1}
- Log ${testrolename}
- # Post this puppy
- ${content}= Post New Role ${data}
- # parse out the role-id from the content we just created
- ${roleid}= Parse Item From Blob By Offset ${content} 0
- Log ${roleid}
-
- # now got GET the roleid info and compare to the name we fabricated
- # and parse out role name
- ${existing_roleitem}= Get Specific Role ${roleid}
- ${expected_rolename}= Parse Item From Blob By Offset ${content} 1
- Log ${expected_rolename}
-
- # compare to see if the GOTTEN role id matches the one we grabbed from list
- Should Be Equal ${expected_rolename} ${testrolename}
-
-Test Delete Role
- [Documentation] Exercise REST command for DELETE role command.
- # create a role and then delete it. Use Get to verify it's gone
- # create information for a new role (for the test)
- ${testrolename}= Create Random Name force-usurper
- ${data}= Set Variable {"description":"sample test description", "name":"${testrolename}", "roleid":1}
- Log ${testrolename}
- # Post this disposable role
- ${content}= Post New Role ${data}
- # parse out the role-id from the content we just created
- ${roleid}= Parse Item From Blob By Offset ${content} 0
- Log ${roleid}
-
- # now delete it...
- ${content2}= Delete Role ${roleid}
- # should fail...
- ${content}= Check Specific Id Does Not Exist role ${roleid}
- Log ${content}
-
-Test Grant Role To Domain And User
- [Documentation] Test the POST of a Role to Domain and User
-
- # rely on the creation of a test role, user and domain in the Setup routine
- # pop item off of end of the list, for use (does not alter list)
- ${role_item}= Get From List ${cleanup_role_list} -1
- Log ${role_item}
- ${user_item}= Get From List ${cleanup_user_list} -1
- Log ${user_item}
- ${domain_item}= Get From List ${cleanup_domain_list} -1
- Log ${domain_item}
-
- # parse out the roleid from the role info we just grabbed
- ${roleid}= Parse Item From Blob By Offset ${role_item} 0
- Log ${roleid}
-
- # parse out the name from the same info
- ${rolename}= Parse Item From Blob By Offset ${role_item} 1
- Log ${rolename}
-
- # parse out the userid from the user info we just grabbed
- ${userid}= Parse Item From Blob By Offset ${user_item} 0
- Log ${userid}
-
- # parse out the name from the same info
- ${username}= Parse Item From Blob By Offset ${user_item} 1
- Log ${username}
-
- # parse out the domain-id from the domain info we just grabbed
- ${domainid}= Parse Item From Blob By Offset ${domain_item} 0
- Log ${domainid}
-
- # parse out the name from the same info
- ${domainname}= Parse Item From Blob By Offset ${domain_item} 1
- Log ${domainname}
-
- # generate the data payload that we wish to post
- ${data}= Set Variable {"roleid":"${roleid}", "description":"fabricated test roleid"}
- # post this monster
- ${content}= Post Role To Domain And User ${data} ${domainid} ${userid}
- # add new json string to the cleanup list for later cleanup
- Append To List ${cleanup_grant_list} ${content}
- Should Contain ${content} ${domainid}
- Should Contain ${content} ${roleid}
- Should Contain ${content} ${userid}
-
-
-*** Keywords ***
-IdMLight Suite Setup
- Log Suite Setup
- # create a domain, role and user for testing.
- ${HEADERS}= Create Dictionary Content-Type=application/json
- Log ${HEADERS}
- Set Global Variable ${HEADERS}
- # create a name to use in each case
- ${testdomain}= Create Random Name Alderaan
- Log ${testdomain}
- ${testuser}= Create Random Name Leia
- Log ${testuser}
- ${testrole}= Create Random Name Force-User
- Log ${testrole}
- # now create the domain, role and userid
-
- # create the test domain
- Create Session httpbin ${URI}
- ${domaindata}= Set Variable {"description":"planetary domain","domainid":"7","name":"${testdomain}","enabled":"true"}
- ${newdomain}= Post New Domain ${testdomain} ${domaindata}
- Log ${newdomain}
- # add new domain name to the cleanup list for later cleanup
- Append To List ${cleanup_domain_list} ${newdomain}
- # now create the test user
- ${userdata}= Set Variable {"description":"User-of-the-Force","name":"${testuser}","enabled":"true"}
- ${newuser}= Post New User ${testuser} ${userdata}
- Log ${newuser}
- # add new user name to the cleanup list for later cleanup
- Append To List ${cleanup_user_list} ${newuser}
- # now create the test role
- ${roledata}= Set Variable {"name":"${testrole}","description":"Force User"}
- ${newrole}= Post New Role ${roledata}
- # add new role name to the cleanup list for later cleanup
- Append To List ${cleanup_role_list} ${newrole}
- #
- # return the three item names to the caller of setup
- [Return] ${newdomain} ${newuser} ${newrole}
-
-IdMLight Suite Teardown
- Log Suite Teardown
- ${ELEMENT}= Create Session httpbin ${URI}
- # if the test domain, role or user exists, wipe it out.
- : FOR ${ELEMENT} IN @{cleanup_domain_list}
- \ ${ELEMENT} Replace String ${ELEMENT} ${SPACE} ${EMPTY}
- \ Log ${ELEMENT}
- \ # split it up to get the domainid
- \ ${x}= Split String ${ELEMENT} ,
- \ ${y}= Get From List ${x} 0
- \ ${z}= Split String ${y} :
- \ ${domainid}= Get From List ${z} 1
- \ Log ${domainid}
- \ # convert name on the list to an ID, by which we delete this stuff
- \ Delete Domain ${domainid}
- Log ${cleanup_domain_list}
- # Cleanup roles that were created during testing
- : FOR ${ELEMENT} IN @{cleanup_role_list}
- \ Log ${ELEMENT}
- \ ${ELEMENT} Replace String ${ELEMENT} ${SPACE} ${EMPTY}
- \ Log ${ELEMENT}
- \ # split it up to get the roleid
- \ ${x}= Split String ${ELEMENT} ,
- \ ${y}= Get From List ${x} 0
- \ ${z}= Split String ${y} :
- \ ${roleid}= Get From List ${z} 1
- \ Log ${roleid}
- \ # convert name on the list to an ID, by which we delete this stuff
- \ Delete Role ${roleid}
- Log ${cleanup_role_list}
- # Cleanup users that were created during testing
- : FOR ${ELEMENT} IN @{cleanup_user_list}
- \ Log ${ELEMENT}
- \ ${ELEMENT} Replace String ${ELEMENT} ${SPACE} ${EMPTY}
- \ Log ${ELEMENT}
- \ # split it up to get the roleid
- \ ${x}= Split String ${ELEMENT} ,
- \ ${y}= Get From List ${x} 0
- \ ${z}= Split String ${y} :
- \ ${userid}= Get From List ${z} 1
- \ Log ${userid}
- \ Delete User ${userid}
- Log ${cleanup_user_list}
-
- Delete All Sessions
-
-Check Specific Id Does Not Exist
- [Arguments] ${area_to_look} ${id}
- [Documentation] Execute GET command on specified single id
- # the ITEM is the area to look under... users, domains, roles, etc
- ${n1}= Set Variable auth/v1/${area_to_look}/${id}
- # do the actual get
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 404
- ${id_string}= Convert To String ${id}
- Should Contain ${resp.content} ${id_string}
- [Return] ${resp.content}
-
-Get Specific Domain
- [Arguments] ${domainid}
- [Documentation] Execute GET command on specified single domain
- ${n1}= Set Variable auth/v1/domains/${domainid}
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 200
- ${domainid_string}= Convert To String ${domainid}
- Should Contain ${resp.content} ${domainid_string}
- [Return] ${resp.content}
-
-Get Specific Domain Name
- [Arguments] ${domainid}
- [Documentation] Execute GET command on specified single domain
- ${n1}= Set Variable auth/v1/domains/${domainid}
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Contain ${resp.content} ${domainid}
- Log ${resp.content}
- [Return] ${resp.content}
-
-Get Specific Role
- [Arguments] ${roleid}
- [Documentation] Exercise REST command to GET a specific role, based on role-id
- ${n1}= Set Variable auth/v1/roles/${roleid}
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${roleid}
- [Return] ${resp.content}
-
-Get Domains
- [Documentation] Execute getdomains GET command.
- ${n1}= Set Variable auth/v1/domains
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} "domains"
- [Return] ${resp.content}
-
-Get Roles
- [Documentation] Execute GET command to obtain list of roles.
- ${n1}= Set Variable auth/v1/roles
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} "roles"
- [Return] ${resp.content}
-
-Get Specific User
- [Arguments] ${user}
- [Documentation] Exercise REST command for users GET command.
- ${n1}= Set Variable auth/v1/users/${user}
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${user}
- [Return] ${resp.content}
-
-Get Users
- [Documentation] GET the complete set of users.
- ${n1}= Set Variable auth/v1/users
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${user}
- [Return] ${resp.content}
-
-Post New Domain
- [Arguments] ${domain} ${data}
- [Documentation] Exercise REST command for domains POST command.
- ${n1}= Set Variable auth/v1/domains
- ${resp} RequestsLibrary.Post httpbin ${n1} headers=${HEADERS} data=${data}
- Should Be Equal As Strings ${resp.status_code} 201
- Should Contain ${resp.content} ${domain}
- [Return] ${resp.content}
-
-Post New Role
- [Arguments] ${data}
- [Documentation] Use POST REST command to create specified Role.
- ${n1}= Set Variable auth/v1/roles
- ${resp} RequestsLibrary.Post httpbin ${n1} headers=${HEADERS} data=${data}
- # HTTP/1.1 201 Created
- Should Be Equal As Strings ${resp.status_code} 201
- [Return] ${resp.content}
-
-Post New User
- [Arguments] ${username} ${data}
- [Documentation] Exercise REST command for users POST command.
- ${n1}= Set Variable auth/v1/users
- ${resp} RequestsLibrary.Post httpbin ${n1} headers=${HEADERS} data=${data}
- # grab the list of users, count the list, and then search the list for the specific user id
- ${users}= Get Users
- ${depth}= Nodecount ${users} users userid
- ${abc}= Get User Id By Username ${users} ${username} ${depth}
- Should Be Equal As Strings ${resp.status_code} 201
- Should Contain ${resp.content} ${username}
- [Return] ${resp.content}
-
-Get User By Name
- [Arguments] ${jsonblock} ${property}
- [Documentation] hand this function a block of Json, and it will find your
- ... user by name and return userid
- ${foundit}= Get From Dictionary ${jsonblock} ${property}
-
-Update Specific Domain
- [Arguments] ${data} ${domainid}
- [Documentation] Update the specified domainid with a new name specified in domain-name
- ${n1}= Set Variable auth/v1/domains/${domainid}
- ${resp} RequestsLibrary.Put httpbin ${n1} headers=${HEADERS} data=${data}
- # Should Be Equal As Strings ${resp.status_code} 201
- Log ${resp.content}
-
-Update Specific Role
- [Arguments] ${data} ${roleid}
- [Documentation] Update the specified roleid with a new information name specified
- ${n1}= Set Variable auth/v1/roles/${roleid}
- ${resp} RequestsLibrary.Put httpbin ${n1} headers=${HEADERS} data=${data}
- # Should Be Equal As Strings ${resp.status_code} 201
- Log ${resp.content}
-
-Update Specific User
- [Arguments] ${data} ${userid}
- [Documentation] Update the specified userid with a new information name specified
- ${n1}= Set Variable auth/v1/users/${userid}
- ${resp} RequestsLibrary.Put httpbin ${n1} headers=${HEADERS} data=${data}
- # Should Be Equal As Strings ${resp.status_code} 201
- Log ${resp.content}
-
-Delete Domain
- [Arguments] ${domainid}
- [Documentation] Delete the specified domain, by id
- ${n1}= Set Variable auth/v1/domains/${domainid}
- Log ${n1}
- ${resp} RequestsLibrary.Delete httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 204
- Log ${resp.content}
-
-Delete User
- [Arguments] ${userid}
- [Documentation] Delete the specified user, by id
- ${n1}= Set Variable auth/v1/users/${userid}
- ${resp} RequestsLibrary.Delete httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 204
- Log ${resp.content}
-
-Delete Role
- [Arguments] ${roleid}
- [Documentation] Use DELETE REST command to wipe out a Role created for testing.
- ${n1}= Set Variable auth/v1/roles/${roleid}
- ${resp} RequestsLibrary.Delete httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 204
- #Should NOT Contain ${resp.content} ${roleid}
- [Return] ${resp.content}
-
-Post Role To Domain And User
- [Arguments] ${data} ${domainid} ${userid}
- [Documentation] Exercise REST POST command for posting a role to particular domain and user
- ${n1}= Set Variable auth/v1/domains/${domainid}/users/${userid}/roles
- # now post it
- ${resp} RequestsLibrary.Post httpbin ${n1} headers=${HEADERS} data=${data}
- Should Be Equal As Strings ${resp.status_code} 201
- [Return] ${resp.content}
-
-Get Roles For Specific Domain And User
- [Arguments] ${domainid} ${userid}
- [Documentation] Exercise REST GET command for roles in a specific domain and user
- ${n1}= Set Variable auth/v1/domains/${domainid}/users/${userid}/roles
- # now get it
- ${resp} RequestsLibrary.Get httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 200
- [Return] ${resp.content}
-
-Delete Specific Grant
- [Arguments] ${domainid} ${userid} ${roleid}
- [Documentation] Exercise REST DELETE command for a grant by roleid
- ${n1}= Set Variable auth/v1/domains/${domainid}/users/${userid}/roles/${roleid}
- # now delete it
- ${resp} RequestsLibrary.Delete httpbin ${n1} headers=${HEADERS}
- Should Be Equal As Strings ${resp.status_code} 204
- [Return] ${resp.content}
-
-Parse Item From Blob By Offset
- [Documentation] Parse out a field from JSON structure
- [Arguments] ${item} ${offset}
- ${x}= Split String ${item} ,
- ${y}= Get From List ${x} ${offset}
- ${z}= Split String ${y} :
-
- # offset is one in next line because you are looking at a key:value pair
- ${return_item_}= Get From List ${z} 1
- ${return_item}= Replace String ${return_item_} " ${EMPTY}
- [Return] ${return_item}
-
-Create Random Name
- [Arguments] ${basename}
- [Documentation] Take the basename given and return a new name with date-time-stamp appended.
- ${datetime}= Get Current Date result_format=%Y-%m-%d-%H-%M
- Log ${datetime}
- ${newname}= Catenate SEPARATOR=- ${basename} ${datetime}
- [Return] ${newname}
-
-Pop Name Off Json
- [Arguments] ${jsonstring}
- [Documentation] Pop the name item out of the Json string
- # split it up to get the id
- ${x}= Split String ${jsonstring} ,
- ${y}= Get From List ${x} 1
- ${z}= Split String ${y} :
- ${name}= Get From List ${z} 1
- ${name}= Replace String ${name} " ${EMPTY}
- Log ${name}
- [Return] ${name}
-
-Verify Contents
- [Arguments] ${content_block} ${keyvar}
- [Documentation] Verify that the content block passed in, contains the variable identified in second argument
- Should Contain ${content_block} ${keyvar}
-
-Rough Clean
- [Documentation] Clean up domains, users, roles in db, keep original 4 of each
- ${domains}= Get Domains
- ${roles}= Get Roles
- ${users}= Get Users
- ${domcount}= Nodecount ${domains} domains "domainid"
- ${rolecount}= Nodecount ${roles} roles "roleid"
- ${usercount}= Nodecount ${users} users "userid"
- : FOR ${index} IN RANGE 5 ${domains}
- \ Delete Domain ${index}
- : FOR ${index} IN RANGE 5 ${roles}
- \ Delete Role ${index}
- : FOR ${index} IN RANGE 5 ${users}
- \ Delete User ${index}