testing - ldif 将“用户”类添加到 org.zapodot.junit.ldap.EmbeddedLdapRule
问题描述
尝试启动类似 AD 的服务器来验证“用户”实体的 ldap 查询。
考试:
import org.zapodot.junit.ldap.EmbeddedLdapRule
import org.zapodot.junit.ldap.EmbeddedLdapRuleBuilder
class FooSpec extends Specification {
@Rule
public EmbeddedLdapRule embeddedLdapRule = EmbeddedLdapRuleBuilder
.newInstance()
.withSchema('schema.ldif')
.importingLdifs('import.ldif')
//...
}
架构.ldif:
dn: cn=user,cn=schema,cn=configuration,dc=example,dc=com
changetype: add
objectclass: classSchema
governsId: 1.2.840.113556.1.5.9
objectClassCategory: 1
subClassOf: organizationalPerson
lDAPDisplayName: user
description: a user
进口.ldif:
dn: CN=alice,DC=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: user
cn: alice
sn: alice
得到:
无法添加条目“CN=alice,DC=example,dc=com”,因为它违反了提供的架构:该条目包含架构中未定义的对象类用户。
我究竟做错了什么?
谢谢!
解决方案
这似乎不是特定于 Spock 的问题,我猜您在这里遇到了 LDAP 语法问题。我对 LDAP 一无所知,我只是好奇并使用了您使用的工具(embedded-ldap-junit)提供的这个 LDIF 文件,以便向您展示如果您在您的文件中使用正确的 LDAP 定义,它如何与 Spock 完美配合资源文件:
package de.scrum_master.stackoverflow
import com.unboundid.ldap.sdk.SearchScope
import org.junit.Rule
import org.zapodot.junit.ldap.EmbeddedLdapRule
import org.zapodot.junit.ldap.EmbeddedLdapRuleBuilder
import spock.lang.Specification
import spock.lang.Unroll
class EmbeddedLDAPServerTest extends Specification {
static final String BASE_DN = "dc=zapodot,dc=org"
@Rule
public EmbeddedLdapRule embeddedLdapRule = EmbeddedLdapRuleBuilder
.newInstance()
.usingDomainDsn(BASE_DN)
.importingLdifs('example.ldif')
.build()
@Unroll
def "Search for #searchFor"() {
given:
def connection = embeddedLdapRule.ldapConnection()
when:
def searchResult = connection.search(BASE_DN, SearchScope.SUB, "($searchFor)")
then:
searchResult.entryCount == entryCount
where:
searchFor | entryCount
"objectClass=person" | 1
"cn=Sondre Eikanger Kvalo" | 1
"ou=people" | 1
"ou=groups" | 1
"objectclass=organizationalUnit" | 2
"objectclass=top" | 4
}
}
推荐阅读
- c# - 将 DelegatingHandler 与 HttpClient 上的自定义数据一起使用
- sapui5 - 过滤由多个实体集组成的 SmartTable
- javascript - Discord.js bot - 在设置中创建角色导致 RangeError
- macos - 我在 Macbook Pro 上只有 Firefox OverconstrainedError
- swift - 变量更改后更新屏幕上的文本 I Xcode Swift5
- r - tidyverse 中的分组事件链 ID
- cassandra - 如何在 Cassandra 主键中查找范围?
- amazon-web-services - Fargate 任务的环境变量设置
- php - 如何从供应商文件夹中正确设置配置路径?
- mongoose - Mongoose 聚合匹配字段值等于没有 $expr 的变量?