ldif для добавления класса 'user' в org.zapodot.junit.ldap.EmbeddedLdapRule - PullRequest
0 голосов
/ 01 мая 2018

Попытка запустить 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')
            //...
}

schema.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

import.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', поскольку она нарушает предоставленную схему: запись содержит объектный класс user, который не определен в схеме.

Что я делаю не так?

Спасибо!

1 Ответ

0 голосов
/ 01 мая 2018

Похоже, это не вопрос Спока, я думаю, у вас здесь проблема с синтаксисом LDAP. Я не имею понятия о LDAP, я просто заинтересовался и использовал этот файл LDIF , предоставленный используемым вами инструментом (embedded-ldap-junit) , чтобы показать вам, как он работает прекрасно со Spock, если вы просто используете правильные определения LDAP в вашем файле ресурсов:

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
  }
}
...