mirror of
https://github.com/goharbor/harbor.git
synced 2025-01-09 17:37:44 +01:00
Merge pull request #7328 from stonezdj/debts
Fix issue 6450 Test LDAP server error without save configuration
This commit is contained in:
commit
36d13e8243
@ -43,19 +43,9 @@ type Session struct {
|
|||||||
ldapConn *goldap.Conn
|
ldapConn *goldap.Conn
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadSystemLdapConfig - load LDAP configure from adminserver
|
// LoadSystemLdapConfig - load LDAP configure
|
||||||
func LoadSystemLdapConfig() (*Session, error) {
|
func LoadSystemLdapConfig() (*Session, error) {
|
||||||
|
|
||||||
authMode, err := config.AuthMode()
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("can't load auth mode from system, error: %v", err)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if authMode != "ldap_auth" {
|
|
||||||
return nil, fmt.Errorf("system auth_mode isn't ldap_auth, please check configuration")
|
|
||||||
}
|
|
||||||
|
|
||||||
ldapConf, err := config.LDAPConf()
|
ldapConf, err := config.LDAPConf()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -158,14 +148,8 @@ func ConnectionTestWithConfig(ldapConfig models.LdapConf) error {
|
|||||||
// ConnectionTestWithAllConfig - test ldap session connection, out of the scope of normal session create/close
|
// ConnectionTestWithAllConfig - test ldap session connection, out of the scope of normal session create/close
|
||||||
func ConnectionTestWithAllConfig(ldapConfig models.LdapConf, ldapGroupConfig models.LdapGroupConf) error {
|
func ConnectionTestWithAllConfig(ldapConfig models.LdapConf, ldapGroupConfig models.LdapGroupConf) error {
|
||||||
|
|
||||||
authMode, err := config.AuthMode()
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("Connection test failed %v", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// If no password present, use the system default password
|
// If no password present, use the system default password
|
||||||
if ldapConfig.LdapSearchPassword == "" && authMode == "ldap_auth" {
|
if ldapConfig.LdapSearchPassword == "" {
|
||||||
|
|
||||||
session, err := LoadSystemLdapConfig()
|
session, err := LoadSystemLdapConfig()
|
||||||
|
|
||||||
|
@ -23,6 +23,9 @@ import (
|
|||||||
"github.com/goharbor/harbor/src/core/auth"
|
"github.com/goharbor/harbor/src/core/auth"
|
||||||
|
|
||||||
"errors"
|
"errors"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/goharbor/harbor/src/core/config"
|
||||||
goldap "gopkg.in/ldap.v2"
|
goldap "gopkg.in/ldap.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -52,6 +55,19 @@ func (l *LdapAPI) Prepare() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check the auth_mode except ping
|
||||||
|
if strings.EqualFold(l.Ctx.Request.RequestURI, "/api/ldap/ping") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
authMode, err := config.AuthMode()
|
||||||
|
if err != nil {
|
||||||
|
l.SendInternalServerError(fmt.Errorf("Can't load system configuration, error: %v", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if authMode != "ldap_auth" {
|
||||||
|
l.SendInternalServerError(fmt.Errorf("Can't load system configuration, error: %v", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
ldapCfg, err := ldapUtils.LoadSystemLdapConfig()
|
ldapCfg, err := ldapUtils.LoadSystemLdapConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.SendInternalServerError(fmt.Errorf("Can't load system configuration, error: %v", err))
|
l.SendInternalServerError(fmt.Errorf("Can't load system configuration, error: %v", err))
|
||||||
|
40
tests/apitests/python/test_ldap_ping.py
Normal file
40
tests/apitests/python/test_ldap_ping.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
Harbor API
|
||||||
|
These APIs provide services for manipulating Harbor project.
|
||||||
|
OpenAPI spec version: 1.4.0
|
||||||
|
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
sys.path.append(os.environ["SWAGGER_CLIENT_PATH"])
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import testutils
|
||||||
|
from swagger_client.models.ldap_conf import LdapConf
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
#Testcase
|
||||||
|
# Define a LDAP group with harbor admin
|
||||||
|
class TestLdapPing(unittest.TestCase):
|
||||||
|
"""AccessLog unit test stubs"""
|
||||||
|
product_api = testutils.GetProductApi("admin", "Harbor12345")
|
||||||
|
project_id = 0
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def testLdapPing(self):
|
||||||
|
"""Test LdapAdminRole"""
|
||||||
|
result = self.product_api.ldap_ping_post(ldapconf=LdapConf(ldap_url="10.161.127.236", ldap_search_dn="cn=admin,dc=example,dc=com", ldap_search_password="admin", ldap_scope=2))
|
||||||
|
pprint(result)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
Loading…
Reference in New Issue
Block a user