Skip to content

Commit b630c35

Browse files
committed
CABPI-27::Implement Admin Users export from Adobe to Commerce - Additional check added during save
1 parent 0aa4608 commit b630c35

File tree

2 files changed

+46
-3
lines changed

2 files changed

+46
-3
lines changed

app/code/Magento/AdminAdobeIms/Model/SaveImsUser.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
use Magento\User\Model\User;
1212
use Magento\User\Model\ResourceModel\User\CollectionFactory as UserCollectionFactory;
1313
use Magento\Authorization\Model\ResourceModel\Role\CollectionFactory as RoleCollectionFactory;
14-
use Magento\Authorization\Model\Acl\Role\User as UserRoleType;
1514
use Magento\AdminAdobeIms\Logger\AdminAdobeImsLogger;
15+
use Magento\AdminAdobeIms\Service\ImsConfig;
16+
use Magento\Authorization\Model\Acl\Role\User as UserRoleType;
1617
use Exception;
1718
use Magento\Framework\Exception\CouldNotSaveException;
1819

@@ -44,30 +45,42 @@ class SaveImsUser implements SaveImsUserInterface
4445
*/
4546
private AdminAdobeImsLogger $logger;
4647

48+
/**
49+
* @var ImsConfig
50+
*/
51+
private ImsConfig $adminImsConfig;
52+
4753
/**
4854
* SaveImsUserAndRole constructor.
4955
* @param User $user
5056
* @param UserCollectionFactory $userCollectionFactory
5157
* @param RoleCollectionFactory $roleCollectionFactory
5258
* @param AdminAdobeImsLogger $logger
59+
* @param ImsConfig $adminImsConfig
5360
*/
5461
public function __construct(
5562
User $user,
5663
UserCollectionFactory $userCollectionFactory,
5764
RoleCollectionFactory $roleCollectionFactory,
58-
AdminAdobeImsLogger $logger
65+
AdminAdobeImsLogger $logger,
66+
ImsConfig $adminImsConfig
5967
) {
6068
$this->user = $user;
6169
$this->userCollectionFactory = $userCollectionFactory;
6270
$this->roleCollectionFactory = $roleCollectionFactory;
6371
$this->logger = $logger;
72+
$this->adminImsConfig = $adminImsConfig;
6473
}
6574

6675
/**
6776
* @inheritdoc
6877
*/
6978
public function save(array $profile): void
7079
{
80+
if (!$this->adminImsConfig->enabled() || empty($profile['email'])) {
81+
throw new CouldNotSaveException(__('Could not save ims user.'));
82+
}
83+
7184
$username = strtolower(strstr($profile['email'], '@', true));
7285
$userCollection = $this->userCollectionFactory->create()
7386
->addFieldToFilter('email', ['eq' => $profile['email']])

dev/tests/integration/testsuite/Magento/AdminAdobeIms/Model/SaveImsUserTest.php

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\User\Model\ResourceModel\User\CollectionFactory as UserCollectionFactory;
1414
use Magento\Authorization\Model\ResourceModel\Role\CollectionFactory as RoleCollectionFactory;
1515
use Magento\AdminAdobeIms\Logger\AdminAdobeImsLogger;
16+
use Magento\AdminAdobeIms\Service\ImsConfig;
1617
use Magento\Authorization\Test\Fixture\Role as RoleFixture;
1718
use Magento\TestFramework\Fixture\DataFixture;
1819
use Magento\TestFramework\Fixture\AppArea;
@@ -57,6 +58,11 @@ class SaveImsUserTest extends TestCase
5758
*/
5859
private $logger;
5960

61+
/**
62+
* @var ImsConfig
63+
*/
64+
private $adminImsConfig;
65+
6066
/**
6167
* @var Session
6268
*/
@@ -78,16 +84,21 @@ protected function setUp(): void
7884
$this->userCollectionFactory = $this->objectManager->create(UserCollectionFactory::class);
7985
$this->roleCollectionFactory = $this->objectManager->create(RoleCollectionFactory::class);
8086
$this->logger = $this->createMock(AdminAdobeImsLogger::class);
87+
$this->adminImsConfig = $this->createMock(ImsConfig::class);
8188
$this->authSession = $this->objectManager->create(Session::class);
8289
$this->saveImsUser = $this->objectManager->create(
8390
SaveImsUser::class,
8491
[
8592
'user' => $this->user,
8693
'userCollectionFactory' => $this->userCollectionFactory,
8794
'roleCollectionFactory' => $this->roleCollectionFactory,
88-
'logger' => $this->logger
95+
'logger' => $this->logger,
96+
'adminImsConfig' => $this->adminImsConfig
8997
]
9098
);
99+
$this->adminImsConfig->expects($this->any())
100+
->method('enabled')
101+
->willReturn(true);
91102
}
92103

93104
/**
@@ -152,4 +163,23 @@ public function testExceptionWhenSaveImsUserFails(): void
152163

153164
$this->saveImsUser->save($profile);
154165
}
166+
167+
/**
168+
* Handle Exception when $profile array doesn't have email
169+
*
170+
* @return void
171+
* @throws CouldNotSaveException
172+
*/
173+
#[
174+
AppArea(Area::AREA_ADMINHTML),
175+
DataFixture(RoleFixture::class, ['role_name' => self::ADMIN_IMS_ROLE]),
176+
]
177+
public function testExceptionWhenProfileEmailNotFound(): void
178+
{
179+
$profile = ['email' => ''];
180+
$this->expectException(CouldNotSaveException::class);
181+
$this->expectExceptionMessage('Could not save ims user.');
182+
183+
$this->saveImsUser->save($profile);
184+
}
155185
}

0 commit comments

Comments
 (0)