mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-26 04:05:40 +01:00
parent
84509fbb3e
commit
7f949b1a95
@ -90,6 +90,7 @@ func init() {
|
|||||||
beego.Router("/api/policies/replication/:id([0-9]+)/enablement", &RepPolicyAPI{}, "put:UpdateEnablement")
|
beego.Router("/api/policies/replication/:id([0-9]+)/enablement", &RepPolicyAPI{}, "put:UpdateEnablement")
|
||||||
beego.Router("/api/systeminfo/volumes", &SystemInfoAPI{}, "get:GetVolumeInfo")
|
beego.Router("/api/systeminfo/volumes", &SystemInfoAPI{}, "get:GetVolumeInfo")
|
||||||
beego.Router("/api/systeminfo/getcert", &SystemInfoAPI{}, "get:GetCert")
|
beego.Router("/api/systeminfo/getcert", &SystemInfoAPI{}, "get:GetCert")
|
||||||
|
beego.Router("/api/ldap/ping", &LdapAPI{}, "post:Ping")
|
||||||
|
|
||||||
_ = updateInitPassword(1, "Harbor12345")
|
_ = updateInitPassword(1, "Harbor12345")
|
||||||
|
|
||||||
@ -897,3 +898,19 @@ func (a testapi) CertGet(authInfo usrInfo) (int, []byte, error) {
|
|||||||
httpStatusCode, body, err := request(_sling, jsonAcceptHeader, authInfo)
|
httpStatusCode, body, err := request(_sling, jsonAcceptHeader, authInfo)
|
||||||
return httpStatusCode, body, err
|
return httpStatusCode, body, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Post ldap test
|
||||||
|
func (a testapi) LdapPost(authInfo usrInfo, ldapConf apilib.LdapConf) (int, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Post(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/api/ldap/ping"
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// body params
|
||||||
|
_sling = _sling.BodyJSON(ldapConf)
|
||||||
|
httpStatusCode, _, err := request(_sling, jsonAcceptHeader, authInfo)
|
||||||
|
return httpStatusCode, err
|
||||||
|
}
|
||||||
|
95
src/ui/api/ldap_test.go
Normal file
95
src/ui/api/ldap_test.go
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/vmware/harbor/tests/apitests/apilib"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
var ldapConf apilib.LdapConf
|
||||||
|
|
||||||
|
func TestLdapPost(t *testing.T) {
|
||||||
|
fmt.Println("Testing ldap post")
|
||||||
|
assert := assert.New(t)
|
||||||
|
apiTest := newHarborAPI()
|
||||||
|
|
||||||
|
//case 1: ping ldap server without admin role
|
||||||
|
CommonAddUser()
|
||||||
|
code, err := apiTest.LdapPost(*testUser, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(403, code, "Ping ldap server status should be 403")
|
||||||
|
}
|
||||||
|
//case 2: ping ldap server with admin role, but empty ldapConf
|
||||||
|
code, err = apiTest.LdapPost(*admin, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(400, code, "Ping ldap server status should be 400")
|
||||||
|
}
|
||||||
|
|
||||||
|
//case 3: ping ldap server with admin role, but bad format of ldapConf
|
||||||
|
ldapConf.LdapURL = "http://127.0.0.1"
|
||||||
|
code, err = apiTest.LdapPost(*admin, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(400, code, "Ping ldap server status should be 400")
|
||||||
|
}
|
||||||
|
//case 4: ping ldap server with admin role, but bad format of ldapConf
|
||||||
|
ldapConf.LdapURL = "127.0.0.1:sss"
|
||||||
|
code, err = apiTest.LdapPost(*admin, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(400, code, "Ping ldap server status should be 400")
|
||||||
|
}
|
||||||
|
//case 5: ping ldap server with admin role, ldap protocol, without port
|
||||||
|
ldapConf.LdapURL = "127.0.0.1"
|
||||||
|
code, err = apiTest.LdapPost(*admin, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(200, code, "Ping ldap server status should be 200")
|
||||||
|
}
|
||||||
|
//not success, will try later
|
||||||
|
/*
|
||||||
|
//case 6: ping ldap server with admin role, ldaps protocol without port
|
||||||
|
ldapConf.LdapURL = "ldaps://127.0.0.1"
|
||||||
|
code, err = apiTest.LdapPost(*admin, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(200, code, "Ping ldap server status should be 200")
|
||||||
|
}*/
|
||||||
|
//case 7: ping ldap server with admin role, ldap protocol, port, ldapSearchDn, but wrong password
|
||||||
|
ldapConf.LdapURL = "ldap://127.0.0.1:389"
|
||||||
|
ldapConf.LdapSearchDn = "cn=admin,dc=example,dc=org"
|
||||||
|
code, err = apiTest.LdapPost(*admin, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(400, code, "Ping ldap server status should be 400")
|
||||||
|
}
|
||||||
|
//case 8: ping ldap server with admin role, ldap protocol, port, ldapSearchDn, right password
|
||||||
|
ldapConf.LdapURL = "ldap://127.0.0.1:389"
|
||||||
|
ldapConf.LdapSearchDn = "cn=admin,dc=example,dc=org"
|
||||||
|
ldapConf.LdapSearchPassword = "admin"
|
||||||
|
code, err = apiTest.LdapPost(*admin, ldapConf)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Error occured while ping ldap server")
|
||||||
|
t.Log(err)
|
||||||
|
} else {
|
||||||
|
assert.Equal(200, code, "Ping ldap server status should be 200")
|
||||||
|
}
|
||||||
|
CommonDelUser()
|
||||||
|
}
|
34
tests/apitests/apilib/ldap.go
Normal file
34
tests/apitests/apilib/ldap.go
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Harbor API
|
||||||
|
*
|
||||||
|
* These APIs provide services for manipulating Harbor project.
|
||||||
|
*
|
||||||
|
* OpenAPI spec version: 0.3.0
|
||||||
|
*
|
||||||
|
* Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package apilib
|
||||||
|
|
||||||
|
type LdapConf struct {
|
||||||
|
LdapURL string `json:"ldap_url"`
|
||||||
|
LdapSearchDn string `json:"ldap_search_dn"`
|
||||||
|
LdapSearchPassword string `json:"ldap_search_password"`
|
||||||
|
LdapBaseDn string `json:"ldap_base_dn"`
|
||||||
|
LdapFilter string `json:"ldap_filter"`
|
||||||
|
LdapUID string `json:"ldap_uid"`
|
||||||
|
LdapScope int `json:"ldap_scope"`
|
||||||
|
LdapConnectionTimeout int `json:"ldap_connection_timeout"`
|
||||||
|
}
|
@ -21,3 +21,34 @@ services:
|
|||||||
- ./common/config/db/env
|
- ./common/config/db/env
|
||||||
ports:
|
ports:
|
||||||
- 3306:3306
|
- 3306:3306
|
||||||
|
ldap:
|
||||||
|
image: osixia/openldap:1.1.7
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
LDAP_LOG_LEVEL: "256"
|
||||||
|
LDAP_ORGANISATION: "Example Inc."
|
||||||
|
LDAP_DOMAIN: "example.org"
|
||||||
|
LDAP_BASE_DN: ""
|
||||||
|
LDAP_ADMIN_PASSWORD: "admin"
|
||||||
|
LDAP_CONFIG_PASSWORD: "config"
|
||||||
|
LDAP_READONLY_USER: "false"
|
||||||
|
LDAP_BACKEND: "hdb"
|
||||||
|
LDAP_TLS: "true"
|
||||||
|
LDAP_TLS_CRT_FILENAME: "ldap.crt"
|
||||||
|
LDAP_TLS_KEY_FILENAME: "ldap.key"
|
||||||
|
LDAP_TLS_CA_CRT_FILENAME: "ca.crt"
|
||||||
|
LDAP_TLS_ENFORCE: "false"
|
||||||
|
LDAP_TLS_CIPHER_SUITE: "SECURE256:-VERS-SSL3.0"
|
||||||
|
LDAP_TLS_PROTOCOL_MIN: "3.1"
|
||||||
|
LDAP_TLS_VERIFY_CLIENT: "demand"
|
||||||
|
LDAP_REPLICATION: "false"
|
||||||
|
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
|
||||||
|
LDAP_SSL_HELPER_PREFIX: "ldap"
|
||||||
|
volumes:
|
||||||
|
- /var/lib/ldap
|
||||||
|
- /etc/ldap/slapd.d
|
||||||
|
- /container/service/slapd/assets/certs/
|
||||||
|
hostname: "example.org"
|
||||||
|
ports:
|
||||||
|
- 389:389
|
||||||
|
- 636:636
|
||||||
|
Loading…
Reference in New Issue
Block a user