Add test case for oidc auth mode (#7860)

* Nightly test case user-view-logs failed several times, after debugging, the reason is checking too fast although the operation has not finsished, so I add a checking for end of the operation.

Signed-off-by: danfengliu <danfengl@vmware.com>

* Add test case Manage-Project-Member for oidc auth mode Jenkins pipeline, this test case reuse the same test case in common file.

Signed-off-by: danfengliu <danfengl@vmware.com>
This commit is contained in:
danfengliu 2019-05-23 15:43:59 +08:00 committed by GitHub
parent 588287629a
commit fed310a974
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 70 additions and 43 deletions

View File

@ -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}

View File

@ -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}

View File

@ -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}
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}

View File

@ -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

View File

@ -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
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