diff --git a/tests/resources/Harbor-Pages/OIDC_Auth.robot b/tests/resources/Harbor-Pages/OIDC_Auth.robot index f948e52f0..8a665b263 100644 --- a/tests/resources/Harbor-Pages/OIDC_Auth.robot +++ b/tests/resources/Harbor-Pages/OIDC_Auth.robot @@ -37,3 +37,12 @@ Sign In Harbor With OIDC User ${isVisible}= Run Keyword And Return Status Element Should Be Visible ${oidc_username_input} Run Keyword If '${isVisible}' == 'True' Run Keywords Retry Text Input ${oidc_username_input} ${username} AND Retry Element Click ${save_btn} Retry Wait Element ${head_username} + +Get Secrete By API + [Arguments] ${url} ${username}=${OIDC_USERNAME} + ${json}= Run Curl And Return Json curl -s -k -X GET --header 'Accept: application/json' -u '${HARBOR_ADMIN}:${HARBOR_PASSWORD}' '${url}/api/users/search?username=${username}' + ${user_info}= Set Variable ${json[0]} + ${user_id}= Set Variable ${user_info["user_id"]} + ${json}= Run Curl And Return Json curl -s -k -X GET --header 'Accept: application/json' -u '${HARBOR_ADMIN}:${HARBOR_PASSWORD}' '${url}/api/users/${user_id}' + ${secret}= Set Variable ${json["oidc_user_meta"]["secret"]} + [Return] ${secret} diff --git a/tests/resources/Harbor-Pages/Project-Members.robot b/tests/resources/Harbor-Pages/Project-Members.robot index f8f5d3a3f..127bb6d18 100644 --- a/tests/resources/Harbor-Pages/Project-Members.robot +++ b/tests/resources/Harbor-Pages/Project-Members.robot @@ -117,16 +117,19 @@ User Should Be Owner Of Project Logout Harbor User Should Not Be A Member Of Project - [Arguments] ${user} ${pwd} ${project} - Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + [Arguments] ${user} ${pwd} ${project} ${is_oidc_mode}=${false} + Run Keyword If ${is_oidc_mode} == ${false} Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + ... ELSE Sign In Harbor With OIDC User ${HARBOR_URL} username=${user} + ${pwd}= Run Keyword And Return If ${is_oidc_mode} == ${true} Get Secrete By API ${HARBOR_URL} Project Should Not Display ${project} Logout Harbor Cannot Pull image ${ip} ${user} ${pwd} ${project} ${ip}/${project}/hello-world Cannot Push image ${ip} ${user} ${pwd} ${project} hello-world Manage Project Member - [Arguments] ${admin} ${pwd} ${project} ${user} ${op} ${has_image}=${true} - Sign In Harbor ${HARBOR_URL} ${admin} ${pwd} + [Arguments] ${admin} ${pwd} ${project} ${user} ${op} ${has_image}=${true} ${is_oidc_mode}=${false} + Run Keyword If ${is_oidc_mode} == ${false} Sign In Harbor ${HARBOR_URL} ${admin} ${pwd} + ... ELSE Sign In Harbor With OIDC User ${HARBOR_URL} username=${admin} Go Into Project ${project} ${has_image} Switch To Member Run Keyword If '${op}' == 'Add' Add Guest Member To Project ${user} @@ -135,15 +138,18 @@ Manage Project Member Logout Harbor Change User Role In Project - [Arguments] ${admin} ${pwd} ${project} ${user} ${role} - Sign In Harbor ${HARBOR_URL} ${admin} ${pwd} + [Arguments] ${admin} ${pwd} ${project} ${user} ${role} ${is_oidc_mode}=${false} + Run Keyword If ${is_oidc_mode} == ${false} Sign In Harbor ${HARBOR_URL} ${admin} ${pwd} + ... ELSE Sign In Harbor With OIDC User ${HARBOR_URL} username=${admin} Wait Until Element Is Visible //clr-dg-cell//a[contains(.,'${project}')] Change Project Member Role ${project} ${user} ${role} Logout Harbor User Should Be Guest - [Arguments] ${user} ${pwd} ${project} - Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + [Arguments] ${user} ${pwd} ${project} ${is_oidc_mode}=${false} + Run Keyword If ${is_oidc_mode} == ${false} Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + ... ELSE Sign In Harbor With OIDC User ${HARBOR_URL} username=${user} + ${pwd}= Run Keyword And Return If ${is_oidc_mode} == ${true} Get Secrete By API ${HARBOR_URL} Project Should Display ${project} Go Into Project ${project} Switch To Member @@ -154,8 +160,10 @@ User Should Be Guest Cannot Push image ${ip} ${user} ${pwd} ${project} hello-world User Should Be Developer - [Arguments] ${user} ${pwd} ${project} - Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + [Arguments] ${user} ${pwd} ${project} ${is_oidc_mode}=${false} + Run Keyword If ${is_oidc_mode} == ${false} Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + ... ELSE Sign In Harbor With OIDC User ${HARBOR_URL} username=${user} + ${pwd}= Run Keyword And Return If ${is_oidc_mode} == ${true} Get Secrete By API ${HARBOR_URL} Project Should Display ${project} Go Into Project ${project} Switch To Member @@ -165,8 +173,10 @@ User Should Be Developer Push Image With Tag ${ip} ${user} ${pwd} ${project} hello-world v1 User Should Be Admin - [Arguments] ${user} ${pwd} ${project} ${guest} - Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + [Arguments] ${user} ${pwd} ${project} ${guest} ${is_oidc_mode}=${false} + Run Keyword If ${is_oidc_mode} == ${false} Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + ... ELSE Sign In Harbor With OIDC User ${HARBOR_URL} username=${user} + ${pwd}= Run Keyword And Return If ${is_oidc_mode} == ${true} Get Secrete By API ${HARBOR_URL} Project Should Display ${project} Go Into Project ${project} Switch To Member @@ -177,8 +187,10 @@ User Should Be Admin Push Image With Tag ${ip} ${user} ${pwd} ${project} hello-world v2 User Should Be Master - [Arguments] ${user} ${pwd} ${project} - Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + [Arguments] ${user} ${pwd} ${project} ${is_oidc_mode}=${false} + Run Keyword If ${is_oidc_mode} == ${false} Sign In Harbor ${HARBOR_URL} ${user} ${pwd} + ... ELSE Sign In Harbor With OIDC User ${HARBOR_URL} username=${user} + ${pwd}= Run Keyword And Return If ${is_oidc_mode} == ${true} Get Secrete By API ${HARBOR_URL} Project Should Display ${project} Go Into Project ${project} Delete Repo ${project} diff --git a/tests/resources/TestCaseBody.robot b/tests/resources/TestCaseBody.robot index 83ad7c89a..f7169c147 100644 --- a/tests/resources/TestCaseBody.robot +++ b/tests/resources/TestCaseBody.robot @@ -120,4 +120,25 @@ Delete A Project Without Sign In Harbor Go Into Project project${d} Delete Repo project${d} Navigate To Projects - Project Should Be Deleted project${d} \ No newline at end of file + Project Should Be Deleted project${d} + +Manage Project Member Without Sign In Harbor + [Arguments] ${sign_in_user}=user004 ${sign_in_pwd}=Test1@34 ${test_user1}=user005 ${test_user2}=user006 ${is_oidc_mode}=${false} + ${d}= Get current Date result_format=%m%s + Create An New Project project${d} + Push image ip=${ip} user=${sign_in_user} pwd=${sign_in_pwd} project=project${d} image=hello-world + Logout Harbor + + User Should Not Be A Member Of Project ${test_user1} ${sign_in_pwd} project${d} is_oidc_mode=${is_oidc_mode} + Manage Project Member ${sign_in_user} ${sign_in_pwd} project${d} ${test_user1} Add is_oidc_mode=${is_oidc_mode} + User Should Be Guest ${test_user1} ${sign_in_pwd} project${d} is_oidc_mode=${is_oidc_mode} + Change User Role In Project ${sign_in_user} ${sign_in_pwd} project${d} ${test_user1} Developer is_oidc_mode=${is_oidc_mode} + User Should Be Developer ${test_user1} ${sign_in_pwd} project${d} is_oidc_mode=${is_oidc_mode} + Change User Role In Project ${sign_in_user} ${sign_in_pwd} project${d} ${test_user1} Admin is_oidc_mode=${is_oidc_mode} + User Should Be Admin ${test_user1} ${sign_in_pwd} project${d} ${test_user2} is_oidc_mode=${is_oidc_mode} + Change User Role In Project ${sign_in_user} ${sign_in_pwd} project${d} ${test_user1} Master is_oidc_mode=${is_oidc_mode} + User Should Be Master ${test_user1} ${sign_in_pwd} project${d} is_oidc_mode=${is_oidc_mode} + Manage Project Member ${sign_in_user} ${sign_in_pwd} project${d} ${test_user1} Remove is_oidc_mode=${is_oidc_mode} + User Should Not Be A Member Of Project ${test_user1} ${sign_in_pwd} project${d} is_oidc_mode=${is_oidc_mode} + Push image ip=${ip} user=${sign_in_user} pwd=${sign_in_pwd} project=project${d} image=hello-world + User Should Be Guest ${test_user2} ${sign_in_pwd} project${d} is_oidc_mode=${is_oidc_mode} \ No newline at end of file diff --git a/tests/robot-cases/Group1-Nightly/Common.robot b/tests/robot-cases/Group1-Nightly/Common.robot index 86b559d5e..85c381e2b 100644 --- a/tests/robot-cases/Group1-Nightly/Common.robot +++ b/tests/robot-cases/Group1-Nightly/Common.robot @@ -303,27 +303,8 @@ Test Case - User View Logs Test Case - Manage Project Member Init Chrome Driver - ${d}= Get current Date result_format=%m%s - Sign In Harbor ${HARBOR_URL} user004 Test1@34 - Create An New Project project${d} - Push image ip=${ip} user=user004 pwd=Test1@34 project=project${d} image=hello-world - Logout Harbor - - User Should Not Be A Member Of Project user005 Test1@34 project${d} - Manage Project Member user004 Test1@34 project${d} user005 Add - User Should Be Guest user005 Test1@34 project${d} - Change User Role In Project user004 Test1@34 project${d} user005 Developer - User Should Be Developer user005 Test1@34 project${d} - Change User Role In Project user004 Test1@34 project${d} user005 Admin - User Should Be Admin user005 Test1@34 project${d} user006 - Change User Role In Project user004 Test1@34 project${d} user005 Master - User Should Be Master user005 Test1@34 project${d} - Manage Project Member user004 Test1@34 project${d} user005 Remove - User Should Not Be A Member Of Project user005 Test1@34 project${d} - Push image ip=${ip} user=user004 pwd=Test1@34 project=project${d} image=hello-world - User Should Be Guest user006 Test1@34 project${d} - + Manage Project Member Without Sign In Harbor Close Browser Test Case - Manage project publicity diff --git a/tests/robot-cases/Group1-Nightly/OIDC.robot b/tests/robot-cases/Group1-Nightly/OIDC.robot index 882fcf5ba..6d5cb38c8 100644 --- a/tests/robot-cases/Group1-Nightly/OIDC.robot +++ b/tests/robot-cases/Group1-Nightly/OIDC.robot @@ -27,6 +27,7 @@ Test Case - Get Harbor Version Get Harbor Version Test Case - OIDC User Sign In + #Sign in with all 9 users is for user population, other test cases might use these users. Sign In Harbor With OIDC User ${HARBOR_URL} Sleep 2 Sign In Harbor With OIDC User ${HARBOR_URL} test2 @@ -48,18 +49,21 @@ Test Case - OIDC User Sign In Close Browser Test Case - Create An New Project - Sign In Harbor With OIDC User ${HARBOR_URL} + Sign In Harbor With OIDC User ${HARBOR_URL} ${d}= Get Current Date result_format=%M%S Create An New Project test${d} Close Browser Test Case - Delete A Project Init Chrome Driver - Sign In Harbor With OIDC User ${HARBOR_URL} - ${json}= Run Curl And Return Json curl -s -k -X GET --header 'Accept: application/json' -u '${HARBOR_ADMIN}:${HARBOR_PASSWORD}' 'https://${ip}/api/users/search?username=${OIDC_USERNAME}' - ${user_info}= Set Variable ${json[0]} - ${user_id}= Set Variable ${user_info["user_id"]} - ${json}= Run Curl And Return Json curl -s -k -X GET --header 'Accept: application/json' -u '${HARBOR_ADMIN}:${HARBOR_PASSWORD}' 'https://${ip}/api/users/${user_id}' - ${secret}= Set Variable ${json["oidc_user_meta"]["secret"]} + Sign In Harbor With OIDC User ${HARBOR_URL} + ${secret}= Get Secrete By API ${HARBOR_URL} Delete A Project Without Sign In Harbor harbor_ip=${OIDC_HOSTNAME} username=${OIDC_USERNAME} password=${secret} - Close Browser \ No newline at end of file + Close Browser + +Test Case - Manage Project Member + Init Chrome Driver + Sign In Harbor With OIDC User ${HARBOR_URL} + ${secret}= Get Secrete By API ${HARBOR_URL} + Manage Project Member Without Sign In Harbor sign_in_user=${OIDC_USERNAME} sign_in_pwd=${secret} test_user1=test2 test_user2=test3 is_oidc_mode=${true} + Close Browser