跳转到主要内容

临时slapd启动器,用于测试目的

项目描述

https://secure.travis-ci.org/rbarrois/volatildap.png?branch=master Latest Version Supported Python versions Wheel status License

volatildap 为针对 LDAP 数据库测试代码提供简单的辅助工具。

其主要功能包括

  • 简单配置: 不提供任何内容;LDAP 服务器将使用合理的默认值启动

  • 内置清理: 一旦测试结束/测试进程退出,服务器将立即删除

  • 跨发行版设置: 自动发现系统路径,例如 OpenLDAP 二进制文件、模式等。

用法

import volatildap

class MyTests(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        super(MyTests, cls).setUpClass()
        cls._slapd = volatildap.LdapServer(suffix='dc=example,dc=org')

    def setUp(self):
        # Will start the server, or reset/restart it if already started from a previous test.
        self._slapd.start()

    def test_something(self):
        conn = ldap.connection(self._slapd.uri)
        # Do some tests

    def test_with_data(self):
        # Load some data
        self._slapd.add({'ou=people': {'cn': [b'Users']}})
        # Run the tests

volatildap.LdapServer 提供了一些有用的方法

start()

启动或重启服务器。这将

  • 清除所有数据(如果有)

  • 如果服务器尚未运行,则启动服务器

  • 填充初始数据

stop()

停止服务器。

这将清理所有数据并终止进程。

wait()

等待服务器请求停止。

主要用于以其他方式控制服务器,或使用 volatildap 服务器作为开发实例。

add(data)

添加一些数据,请参见下面的 initial_data 结构。

get(dn)

通过其唯一名称检索对象;

返回一个字典,将属性映射到其值的列表,以字节形式。

如果底层数据库不知道唯一名称,将引发 KeyError

add_ldif(contents)

添加LDIF文件的行 - 内容应为字节。

get_ldif(dn)

返回LDIF文件的一个条目作为行列表

reset()

将服务器恢复到其原始、初始状态。这包括加载初始数据。

它还公开以下属性

uri

用于连接服务器的URI(例如 ldap://localhost:10389/

rootdn

管理员账户的唯一定名

rootpw

管理员账户的密码

suffix

LDAP服务器使用的后缀

port

LDAP服务器监听的TCP端口

host

LDAP服务器监听的hostname

tls_config

一个命名元组,包含TLS属性。唯一保证的属性是 tls_config.root,其中包含PEM格式的服务器证书。

配置

volatildap.LdapServer 类接受一些参数

suffix

用于LDAP树的suffix

默认: dc=example,dc=org

rootdn

LDAP服务器的管理员账户

默认: cn=testadmin,dc=example,dc=org

rootpw

管理员密码。

默认: 一个随机值,可通过 LdapServer.rootpw 获取

schemas

要加载的schema列表;可以是简单名称(例如 cosine.schema;在openldap安装中查找)或自定义路径。

默认: ['core.schema']

initial_data

将唯一定名映射到属性/值字典的字典

slapd(initial_data={
    'ou=people': {
        'objectClass': ['organizationalUnit'],
        'cn': ['People'],
    },
})

注意:在添加数据时,可以省略对象DN的suffix。

默认: {}

skip_missing_schemas

在加载schema时,此标志指示 volatildap 如果某些schema找不到则继续。

默认: False

port

要使用的端口。

默认: 系统上可用的TCP端口

host

监听的hostname或IP。

默认: localhost

slapd_debug

slapd的调试级别;见 slapd.conf

默认: 0

max_server_startup_delay

允许服务器启动的最大延迟,以秒为单位。

默认: 30

tls_config

用于配置服务器的TLS证书文件集。为 localhost 提供了一个有效的集合 volatildap.LOCALHOST_TLS_CONFIG,但用户也可以提供自己的

tls_config = volatildap.TLSConfig(
   root=read(ca_path),
   chain=[
      read(intermediate_path),
   ],
   certificate=read(certificate_path),
   key=read(key_path),
)

命令行

volatildap提供命令行入口以简化操作: python -m volatildap.cli

其用法如下

usage: cli.py [-h] [--port PORT] [--host HOST] [--suffix SUFFIX]
              [--rootdn ROOTDN] [--rootpw ROOTPW] [--debug DEBUG]
              [--control CONTROL] [--initial INITIAL]
              [--schemas [SCHEMAS [SCHEMAS ...]]] [--tls]

optional arguments:
  -h, --help            show this help message and exit
  --port PORT           Port to listen on; empty for a dynamic port
  --host HOST           Host to listen on; defaults to localhost
  --suffix SUFFIX       LDAP suffix
  --rootdn ROOTDN       Distinguished Name of LDAP admin user
  --rootpw ROOTPW       Password of LDAP admin user
  --debug DEBUG         slapd debug level
  --control CONTROL     Start the HTTP control server on this address
  --initial INITIAL     Load initial objects from the provided LDIF file
  --schemas [SCHEMAS [SCHEMAS ...]]
                        Schemas to load (multi-valued)
  --tls                 Enable TLS, using a built-in stack

远程控制

一旦启动了此类服务器,如果提供了控制服务器(例如 --control :10380),则可以启动Python代理以控制它

def setUpClass(cls):
    super().setUpClass()
    cls._slapd = volatildap.ProxyServer('http://localhost:10380')

代理将提供正常实例上的所有命令: resetstartstopaddadd_ldifgetget_ldif

只读属性也适用:urisuffixrootdnrootpwporthosttls_config

当使用TLS时,可以通过proxy.tls_config.root访问服务器的根证书颁发机构。

特定发行版的特点

Ubuntu

在Ubuntu下,默认的AppArmor策略不允许slapd(LDAP守护进程)读取临时文件夹。用户应更新/etc/apparmor.d/usr.sbin.slapd文件,并在此处添加/tmp/** rwk,。使用k选项以获取对文件的锁定。用户还必须添加一个包含其家目录路径的行。使用变量$HOME不会起作用,因此您必须添加完整路径。例如:/path/to/my/home/** rw,

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

volatildap-1.5.0.tar.gz (28.4 kB 查看哈希值)

上传时间

构建分发

volatildap-1.5.0-py2.py3-none-any.whl (18.8 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者