LdapRecord的PHP单元

LdapRecord的PHP单元,ldap,phpunit,slim,Ldap,Phpunit,Slim,我确实使用LdapRecord(不是Laravel one)编写了此服务,用于创建LDAP组和列出一些组织单位。问题是我想为它写一篇文章。 在这里测试什么是正确的,如果调用了确切的方法 use LdapRecord\Connection; use LdapRecord\Container; use LdapRecord\Models\ActiveDirectory\OrganizationalUnit; class LdapService { private const APP_BAS

我确实使用LdapRecord(不是Laravel one)编写了此服务,用于创建LDAP组和列出一些组织单位。问题是我想为它写一篇文章。 在这里测试什么是正确的,如果调用了确切的方法

use LdapRecord\Connection;
use LdapRecord\Container;
use LdapRecord\Models\ActiveDirectory\OrganizationalUnit;

class LdapService {
    private const APP_BASE_DN = 'OU=ApplicationGroups,DC=my,DC=domain,DC=com';

    public function __construct(Connection $connection) {
        Container::addConnection($connection);
    }

    /**
     * @return array|\LdapRecord\Query\Collection
     */
    public function findAllOrganizationalUnits() {
        return OrganizationalUnit::query()
            ->in(self::APP_BASE_DN)
            ->listing()
            ->select(['objectguid', 'ou', 'distinguishedname'])
            ->get();
    }


    /**
     * @param String $guid
     * @return array|\LdapRecord\Query\Collection
     */
    public function findChildOrganizationalUnits(String $ouGuid) {
        $ouDn = OrganizationalUnit::query()->findByGuid($ouGuid)->getDn();
        return OrganizationalUnit::query()
            ->in($ouDn)
            ->select(['objectguid', 'ou', 'distinguishedname'])
            ->listing()
            ->get();
    }

    /**
     * @param $name
     * @param $ous
     * @param $description
     * @return Group[]
     */
    public function createGroups($name, $ous, $description) {
        $groupsCreated = [];
        foreach ($ous as $ou) {
            $environmentOu = OrganizationalUnit::query()->findByGuid($ou);
            $environmentOuDn = $environmentOu->getDn();
            $groupName = "turboGroup $name";

            try {
                $createdGroup = (new Group())->inside($environmentOuDn)
                    ->save([
                        'cn' => $groupName,
                        'description' => $description,
                    ]);
            } catch (AlreadyExistsException $e) {
                $createdGroup = true;
            }
            if ($createdGroup) {
                $groupsCreated[] = Group::query()->where('cn', '=', $groupName)->get();
            }
        }
        return $groupsCreated;
    }
}
用这样的嘲弄

class LdapServiceTest extends TestCase {

    public function findAllOrganizationalUnitsTest() {
        $connectionMock = Mockery::mock(Connection::class);
        $connectionMock->shouldHaveReceived('in');
        $connectionMock->shouldHaveReceived('listing');
        ...

        $test = new LdapService($connectionMock);
        $test->findAllOrganizationalUnits();
    }
}