<commit_before># Copyright 2016-2017 VMware, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#	http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License

*** Settings ***
Documentation  This resource provides any keywords related to the Harbor private registry appliance
Resource  ../../resources/Util.robot

*** Variables ***
${HARBOR_VERSION}  v1.1.1

*** Keywords ***
Init LDAP
    ${rc}  ${output}=  Run And Return Rc And Output  ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}'
    Log  ${output}
    Sleep  2
    Input Text  xpath=//*[@id="ldapUrl"]  ldaps://${output}
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchDN"]  cn=admin,dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchPwd"]  admin
    Sleep  1
    Input Text  xpath=//*[@id="ldapBaseDN"]  dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapFilter"]  (&(objectclass=inetorgperson)(memberof=cn=harbor_users,ou=groups,dc=example,dc=com))
    Sleep  1
    Input Text  xpath=//*[@id="ldapUid"]  cn
    Sleep  1
    Capture Page Screenshot
    Disable Ldap Verify Cert Checkbox
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Sleep  2
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[3]
    Sleep  1
    Capture Page Screenshot

Switch To Configure
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/nav/section/section/ul/li[3]/a
    Sleep  2

Test Ldap Connection
    ${rc}  ${output}=  Run And Return Rc And Output  ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}'
    Log  ${output}
    Sleep  2
    Input Text  xpath=//*[@id="ldapUrl"]  ldaps://${output}
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchDN"]  cn=admin,dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchPwd"]  admin
    Sleep  1
    Input Text  xpath=//*[@id="ldapBaseDN"]  dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapUid"]  cn
    Sleep  1

    # default is checked, click test connection to verify fail as no cert.
    Click Element  xpath=${test_ldap_xpath}
    Sleep  1
    Wait Until Page Contains  Failed to verify LDAP server with error
    Sleep  5

    Disable Ldap Verify Cert Checkbox
    # ldap checkbox unchecked, click test connection to verify success.
    Sleep  1
    Click Element  xpath=${test_ldap_xpath}
    Capture Page Screenshot
    Wait Until Page Contains  Connection to LDAP server is verified  timeout=15

Disable Ldap Verify Cert Checkbox
    Mouse Down  xpath=//*[@id="clr-checkbox-ldapVerifyCert"]
    Mouse Up  xpath=//*[@id="clr-checkbox-ldapVerifyCert"]
    Sleep  2
    Capture Page Screenshot
    Ldap Verify Cert Checkbox Should Be Disabled

Ldap Verify Cert Checkbox Should Be Disabled
    Checkbox Should Not Be Selected  xpath=//*[@id="clr-checkbox-ldapVerifyCert"]

Set Pro Create Admin Only	
    #set limit to admin only
    Sleep  2
    Click Element  xpath=//clr-main-container//nav//ul/li[3]
    Sleep  1
    Click Element  xpath=//select[@id="proCreation"]
    Click Element  xpath=//select[@id="proCreation"]//option[@value="adminonly"]
    Sleep  1
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  AdminCreateOnly.png

Set Pro Create Every One	
    #set limit to Every One	
    Click Element  xpath=//clr-main-container//nav//ul/li[3]
    Sleep  1
    Click Element  xpath=//select[@id="proCreation"]
    Click Element  xpath=//select[@id="proCreation"]//option[@value="everyone"]
    Sleep  1	
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Sleep  2
    Capture Page Screenshot  EveryoneCreate.png

Disable Self Reg	
    Click Element  xpath=//clr-main-container//nav//ul/li[3]
    Mouse Down  xpath=${self_reg_xpath}
    Mouse Up  xpath=${self_reg_xpath}
    Sleep  1
    Self Reg Should Be Disabled
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  DisableSelfReg.png
    Sleep  1

Enable Self Reg	
    Mouse Down  xpath=${self_reg_xpath}
    Mouse Up  xpath=${self_reg_xpath}
    Sleep  1
    Self Reg Should Be Enabled
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  EnableSelfReg.png
    Sleep  1

Self Reg Should Be Disabled
    Checkbox Should Not Be Selected  xpath=${self_reg_xpath}

Self Reg Should Be Enabled
    Checkbox Should Be Selected  xpath=${self_reg_xpath}

Project Creation Should Display
    Page Should Contain Element  xpath=${project_create_xpath}

Project Creation Should Not Display
    Page Should Not Contain Element  xpath=${project_create_xpath}

## System settings	
Switch To System Settings
    Sleep  1
    Click Element  xpath=//clr-main-container//nav//ul/li[3]
    Click Element  xpath=//*[@id="config-system"]

Modify Token Expiration
    [Arguments]  ${minutes}
    Input Text  xpath=//*[@id="tokenExpiration"]  ${minutes}
    Click Button  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1] 
    Sleep  1

Token Must Be Match
    [Arguments]  ${minutes}
    Textfield Value Should Be  xpath=//*[@id="tokenExpiration"]  ${minutes}

## Replication	
Check Verify Remote Cert	
    Mouse Down  xpath=//*[@id="clr-checkbox-verifyRemoteCert"] 
    Mouse Up  xpath=//*[@id="clr-checkbox-verifyRemoteCert"]
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  RemoteCert.png
    Sleep  1

Switch To System Replication
    Sleep  1
    Switch To Configure
    Click Element  xpath=//*[@id="config-replication"]
    Sleep  1

Should Verify Remote Cert Be Enabled
    Checkbox Should Not Be Selected  xpath=//*[@id="clr-checkbox-verifyRemoteCert"]

## Email	
Switch To Email
    Switch To Configure
    Click Element  xpath=//*[@id="config-email"]
    Sleep  1

Config Email
    Input Text  xpath=//*[@id="mailServer"]  smtp.vmware.com
    Input Text  xpath=//*[@id="emailPort"]  25
    Input Text  xpath=//*[@id="emailUsername"]  <EMAIL> 
    Input Text  xpath=//*[@id="emailPassword"]  example
    Input Text  xpath=//*[@id="emailFrom"]  example<<EMAIL>>
    Sleep  1    
    Mouse Down  xpath=//*[@id="clr-checkbox-emailSSL"]
    Mouse Up  xpath=//*[@id="clr-checkbox-emailSSL"]
    Sleep  1
    Mouse Down  xpath=//*[@id="clr-checkbox-emailInsecure"]
    Mouse Up  xpath=//*[@id="clr-checkbox-emailInsecure"]
    Sleep  1
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Sleep  6

Verify Email
    Textfield Value Should Be  xpath=//*[@id="mailServer"]  smtp.vmware.com
    Textfield Value Should Be  xpath=//*[@id="emailPort"]  25
    Textfield Value Should Be  xpath=//*[@id="emailUsername"]  <EMAIL>
    Textfield Value Should Be  xpath=//*[@id="emailFrom"]  example<<EMAIL>>
    Checkbox Should Be Selected  xpath=//*[@id="clr-checkbox-emailSSL"]
    Checkbox Should Not Be Selected  xpath=//*[@id="clr-checkbox-emailInsecure"]

Set Scan All To None
    click element  //vulnerability-config//select
    click element  //vulnerability-config//select/option[@value='none']
    sleep  1
    click element  //config//div/button[contains(.,'SAVE')]
Set Scan All To Daily
    click element  //vulnerability-config//select
    click element  //vulnerability-config//select/option[@value='daily']
    sleep  1
    click element  //config//div/button[contains(.,'SAVE')]
Click Scan Now
    click element  //vulnerability-config//button[contains(.,'SCAN')]<commit_msg>Modify test case about configuration for replication enhancment<commit_after># Copyright 2016-2017 VMware, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#	http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License

*** Settings ***
Documentation  This resource provides any keywords related to the Harbor private registry appliance
Resource  ../../resources/Util.robot

*** Variables ***
${HARBOR_VERSION}  v1.1.1

*** Keywords ***
Init LDAP
    ${rc}  ${output}=  Run And Return Rc And Output  ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}'
    Log  ${output}
    Sleep  2
    Input Text  xpath=//*[@id="ldapUrl"]  ldaps://${output}
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchDN"]  cn=admin,dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchPwd"]  admin
    Sleep  1
    Input Text  xpath=//*[@id="ldapBaseDN"]  dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapFilter"]  (&(objectclass=inetorgperson)(memberof=cn=harbor_users,ou=groups,dc=example,dc=com))
    Sleep  1
    Input Text  xpath=//*[@id="ldapUid"]  cn
    Sleep  1
    Capture Page Screenshot
    Disable Ldap Verify Cert Checkbox
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Sleep  2
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[3]
    Sleep  1
    Capture Page Screenshot

Switch To Configure
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/nav/section/section/ul/li[4]/a
    Sleep  2

Test Ldap Connection
    ${rc}  ${output}=  Run And Return Rc And Output  ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}'
    Log  ${output}
    Sleep  2
    Input Text  xpath=//*[@id="ldapUrl"]  ldaps://${output}
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchDN"]  cn=admin,dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapSearchPwd"]  admin
    Sleep  1
    Input Text  xpath=//*[@id="ldapBaseDN"]  dc=example,dc=com
    Sleep  1
    Input Text  xpath=//*[@id="ldapUid"]  cn
    Sleep  1

    # default is checked, click test connection to verify fail as no cert.
    Click Element  xpath=${test_ldap_xpath}
    Sleep  1
    Wait Until Page Contains  Failed to verify LDAP server with error
    Sleep  5

    Disable Ldap Verify Cert Checkbox
    # ldap checkbox unchecked, click test connection to verify success.
    Sleep  1
    Click Element  xpath=${test_ldap_xpath}
    Capture Page Screenshot
    Wait Until Page Contains  Connection to LDAP server is verified  timeout=15

Disable Ldap Verify Cert Checkbox
    Mouse Down  xpath=//*[@id="clr-checkbox-ldapVerifyCert"]
    Mouse Up  xpath=//*[@id="clr-checkbox-ldapVerifyCert"]
    Sleep  2
    Capture Page Screenshot
    Ldap Verify Cert Checkbox Should Be Disabled

Ldap Verify Cert Checkbox Should Be Disabled
    Checkbox Should Not Be Selected  xpath=//*[@id="clr-checkbox-ldapVerifyCert"]

Set Pro Create Admin Only	
    #set limit to admin only
    Sleep  2
    Click Element  xpath=//clr-main-container//nav//ul/li[4]
    Sleep  1
    Click Element  xpath=//select[@id="proCreation"]
    Click Element  xpath=//select[@id="proCreation"]//option[@value="adminonly"]
    Sleep  1
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  AdminCreateOnly.png

Set Pro Create Every One	
    #set limit to Every One	
    Click Element  xpath=//clr-main-container//nav//ul/li[4]
    Sleep  1
    Click Element  xpath=//select[@id="proCreation"]
    Click Element  xpath=//select[@id="proCreation"]//option[@value="everyone"]
    Sleep  1	
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Sleep  2
    Capture Page Screenshot  EveryoneCreate.png

Disable Self Reg	
    Click Element  xpath=//clr-main-container//nav//ul/li[4]
    Mouse Down  xpath=${self_reg_xpath}
    Mouse Up  xpath=${self_reg_xpath}
    Sleep  1
    Self Reg Should Be Disabled
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  DisableSelfReg.png
    Sleep  1

Enable Self Reg	
    Mouse Down  xpath=${self_reg_xpath}
    Mouse Up  xpath=${self_reg_xpath}
    Sleep  1
    Self Reg Should Be Enabled
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  EnableSelfReg.png
    Sleep  1

Self Reg Should Be Disabled
    Checkbox Should Not Be Selected  xpath=${self_reg_xpath}

Self Reg Should Be Enabled
    Checkbox Should Be Selected  xpath=${self_reg_xpath}

Project Creation Should Display
    Page Should Contain Element  xpath=${project_create_xpath}

Project Creation Should Not Display
    Page Should Not Contain Element  xpath=${project_create_xpath}

## System settings	
Switch To System Settings
    Sleep  1
    Click Element  xpath=//clr-main-container//nav//ul/li[4]
    Click Element  xpath=//*[@id="config-system"]

Modify Token Expiration
    [Arguments]  ${minutes}
    Input Text  xpath=//*[@id="tokenExpiration"]  ${minutes}
    Click Button  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1] 
    Sleep  1

Token Must Be Match
    [Arguments]  ${minutes}
    Textfield Value Should Be  xpath=//*[@id="tokenExpiration"]  ${minutes}

## Replication	
Check Verify Remote Cert	
    Mouse Down  xpath=//*[@id="clr-checkbox-verifyRemoteCert"] 
    Mouse Up  xpath=//*[@id="clr-checkbox-verifyRemoteCert"]
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Capture Page Screenshot  RemoteCert.png
    Sleep  1

Switch To System Replication
    Sleep  1
    Switch To Configure
    Click Element  xpath=//*[@id="config-replication"]
    Sleep  1

Should Verify Remote Cert Be Enabled
    Checkbox Should Not Be Selected  xpath=//*[@id="clr-checkbox-verifyRemoteCert"]

## Email	
Switch To Email
    Switch To Configure
    Click Element  xpath=//*[@id="config-email"]
    Sleep  1

Config Email
    Input Text  xpath=//*[@id="mailServer"]  smtp.vmware.com
    Input Text  xpath=//*[@id="emailPort"]  25
    Input Text  xpath=//*[@id="emailUsername"]  <EMAIL> 
    Input Text  xpath=//*[@id="emailPassword"]  example
    Input Text  xpath=//*[@id="emailFrom"]  example<<EMAIL>>
    Sleep  1    
    Mouse Down  xpath=//*[@id="clr-checkbox-emailSSL"]
    Mouse Up  xpath=//*[@id="clr-checkbox-emailSSL"]
    Sleep  1
    Mouse Down  xpath=//*[@id="clr-checkbox-emailInsecure"]
    Mouse Up  xpath=//*[@id="clr-checkbox-emailInsecure"]
    Sleep  1
    Click Element  xpath=/html/body/harbor-app/harbor-shell/clr-main-container/div/div/config/div/div/div/button[1]
    Sleep  6

Verify Email
    Textfield Value Should Be  xpath=//*[@id="mailServer"]  smtp.vmware.com
    Textfield Value Should Be  xpath=//*[@id="emailPort"]  25
    Textfield Value Should Be  xpath=//*[@id="emailUsername"]  <EMAIL>
    Textfield Value Should Be  xpath=//*[@id="emailFrom"]  example<<EMAIL>>
    Checkbox Should Be Selected  xpath=//*[@id="clr-checkbox-emailSSL"]
    Checkbox Should Not Be Selected  xpath=//*[@id="clr-checkbox-emailInsecure"]

Set Scan All To None
    click element  //vulnerability-config//select
    click element  //vulnerability-config//select/option[@value='none']
    sleep  1
    click element  //config//div/button[contains(.,'SAVE')]
Set Scan All To Daily
    click element  //vulnerability-config//select
    click element  //vulnerability-config//select/option[@value='daily']
    sleep  1
    click element  //config//div/button[contains(.,'SAVE')]
Click Scan Now
    click element  //vulnerability-config//button[contains(.,'SCAN')]
{'fraction_non_alphanumeric': 0.12330574547199233, 'fraction_numerical': 0.00995561952740794, 'mean_word_length': 3.3424479166666665, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5993794', 'n_tokens_mistral': 5641, 'n_tokens_neox': 5549, 'n_words': 1468}