9 use AspectMock\Proxy\Verifier;
    10 use AspectMock\Test as AspectMock;
    47         $this->setMockResolverClass();
    49         $this->setMockResolverProperties($resolver, [
"example" . DIRECTORY_SEPARATOR . 
"paths"]);
    50         $this->assertEquals([
"example" . DIRECTORY_SEPARATOR . 
"paths"], $resolver->getModulesPath());
    59         $this->mockForceGenerate(
false);
    60         $this->setMockResolverClass(
false, 
null, 
null, 
null, [
"example" => 
"example" . DIRECTORY_SEPARATOR . 
"paths"]);
    62         $this->setMockResolverProperties($resolver, 
null, [0 => 
"Magento_example"]);
    65                 "example" . DIRECTORY_SEPARATOR . 
"paths",
    66                 "example" . DIRECTORY_SEPARATOR . 
"paths",
    67                 "example" . DIRECTORY_SEPARATOR . 
"paths"    69             $resolver->getModulesPath()
    79         $this->mockForceGenerate(
false);
    80         $mockResolver = $this->setMockResolverClass(
    82             [0 => 
"magento_example"],
    85             [
"example" => 
"example" . DIRECTORY_SEPARATOR . 
"paths"]
    88         $this->setMockResolverProperties($resolver, 
null, 
null);
    91                 "example" . DIRECTORY_SEPARATOR . 
"paths",
    92                 "example" . DIRECTORY_SEPARATOR . 
"paths",
    93                 "example" . DIRECTORY_SEPARATOR . 
"paths"    95             $resolver->getModulesPath()
    99         $magentoBaseCodePath = MAGENTO_BP;
   102         $modulePath = defined(
'TESTS_MODULE_PATH') ? TESTS_MODULE_PATH : TESTS_BP;
   104         $mockResolver->verifyInvoked(
'globRelevantPaths', [$modulePath, 
'']);
   105         $mockResolver->verifyInvoked(
   107             [$magentoBaseCodePath . DIRECTORY_SEPARATOR . 
"vendor" , 
'Test' . DIRECTORY_SEPARATOR .
'Mftf']
   109         $mockResolver->verifyInvoked(
   112                 $magentoBaseCodePath . DIRECTORY_SEPARATOR . 
"app" . DIRECTORY_SEPARATOR . 
"code",
   113                 'Test' . DIRECTORY_SEPARATOR .
'Mftf'   124         $this->setMockResolverClass(
false, [
"Magento_TestModule"], 
null, 
null, [], [
'otherPath']);
   126         $this->setMockResolverProperties($resolver, 
null, 
null, 
null);
   127         $this->assertEquals([
'otherPath'], $resolver->getModulesPath());
   130             'including custom module',
   131             [
'module' => 
'otherPath']
   141         $this->setMockResolverClass(
   146             function ($arg1, $arg2) {
   148                     $mockValue = [
"somePath" => 
"somePath"];
   150                     $mockValue = [
"lastPath" => 
"lastPath"];
   156         $this->setMockResolverProperties($resolver, 
null, 
null, [
"somePath"]);
   157         $this->assertEquals([
"lastPath", 
"lastPath"], $resolver->getModulesPath());
   161             [
'module' => 
'somePath']
   172         $this->mockForceGenerate(
false);
   175         $this->setMockResolverClass(
false, 
null, [
"example" . DIRECTORY_SEPARATOR . 
"paths"], []);
   177         $this->setMockResolverProperties($resolver, 
null, 
null);
   180         $this->expectException(TestFrameworkException::class);
   181         $resolver->getModulesPath();
   190         $this->mockForceGenerate(
true);
   193         $mockResolver = $this->setMockResolverClass();
   195         $this->setMockResolverProperties($resolver, 
null, 
null);
   196         $resolver->getModulesPath();
   197         $mockResolver->verifyNeverInvoked(
"getAdminToken");
   200         $this->addToAssertionCount(1);
   209         $this->mockForceGenerate(
false);
   212         unset($_ENV[
'MAGENTO_ADMIN_USERNAME']);
   215         $mockResolver = $this->setMockResolverClass();
   219         $this->expectException(TestFrameworkException::class);
   220         $resolver->getModulesPath();
   229         $this->mockForceGenerate(
false);
   232         $mockResolver = $this->setMockResolverClass();
   236         $this->expectException(TestFrameworkException::class);
   237         $resolver->getModulesPath();
   252     private function setMockResolverClass(
   254         $mockGetModules = 
null,
   255         $mockCustomMethods = 
null,
   257         $mockRelativePaths = 
null,
   258         $mockCustomModules = 
null   260         $property = new \ReflectionProperty(ModuleResolver::class, 
'instance');
   261         $property->setAccessible(
true);
   262         $property->setValue(
null);
   265         if (isset($mockToken)) {
   266             $mockMethods[
'getAdminToken'] = $mockToken;
   268         if (isset($mockGetModules)) {
   269             $mockMethods[
'getEnabledModules'] = $mockGetModules;
   271         if (isset($mockCustomMethods)) {
   272             $mockMethods[
'applyCustomModuleMethods'] = $mockCustomMethods;
   274         if (isset($mockGlob)) {
   275             $mockMethods[
'globRelevantWrapper'] = $mockGlob;
   277         if (isset($mockRelativePaths)) {
   278             $mockMethods[
'globRelevantPaths'] = $mockRelativePaths;
   280         if (isset($mockCustomModules)) {
   281             $mockMethods[
'getCustomModulePaths'] = $mockCustomModules;
   285         $mockResolver = AspectMock::double(
   286             ModuleResolver::class,
   289         $instance = AspectMock::double(
   290             ObjectManager::class,
   291             [
'create' => $mockResolver->make(), 
'get' => 
null]
   294         AspectMock::double(ObjectManagerFactory::class, [
'getObjectManager' => $instance]);
   296         return $mockResolver;
   308     private function setMockResolverProperties($instance, $mockPaths = 
null, $mockModules = 
null, $mockBlacklist = [])
   310         $property = new \ReflectionProperty(ModuleResolver::class, 
'enabledModulePaths');
   311         $property->setAccessible(
true);
   312         $property->setValue($instance, $mockPaths);
   314         $property = new \ReflectionProperty(ModuleResolver::class, 
'enabledModules');
   315         $property->setAccessible(
true);
   316         $property->setValue($instance, $mockModules);
   318         $property = new \ReflectionProperty(ModuleResolver::class, 
'moduleBlacklist');
   319         $property->setAccessible(
true);
   320         $property->setValue($instance, $mockBlacklist);
   329     private function mockForceGenerate($forceGenerate)
   331         $mockConfig = AspectMock::double(
   332             MftfApplicationConfig::class,
   333             [
'forceGenerateEnabled' => $forceGenerate]
   335         $instance = AspectMock::double(
   336             ObjectManager::class,
   337             [
'create' => $mockConfig->make(), 
'get' => 
null]
   339         AspectMock::double(ObjectManagerFactory::class, [
'getObjectManager' => $instance]);
   349         if (!isset($_ENV[
'MAGENTO_ADMIN_USERNAME'])) {
   350             $_ENV[
'MAGENTO_ADMIN_USERNAME'] = 
"admin";
 testGetAdminTokenWithBadResponse()
testGetAdminTokenNotCalledWhenForce()
testGetModulePathsNoAdminToken()
testGetCustomModulePath()
testGetModulePathsAlreadySet()
testGetModulePathsBlacklist()
static tearDownAfterClass()
testGetModulePathsLocations()
testGetAdminTokenWithMissingEnv()
testGetModulePathsAggregate()