LoggerTest.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\Rest;
  6. use Magento\TestFramework\Helper\Bootstrap;
  7. use Temando\Shipping\Rest\Logger\Anonymizer;
  8. use Temando\Shipping\Test\Integration\Provider\RestResponseProvider;
  9. use Temando\Shipping\Webservice\Logger\LogAnonymizerInterface;
  10. /**
  11. * LoggerTest
  12. *
  13. * @package Temando\Shipping\Test\Integration
  14. * @author Christoph Aßmann <christoph.assmann@netresearch.de>
  15. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  16. * @link http://www.temando.com/
  17. */
  18. class LoggerTest extends \PHPUnit\Framework\TestCase
  19. {
  20. /**
  21. * Delegate provisioning of test data to separate class
  22. * @return string[]
  23. */
  24. public function logMessageDataProvider()
  25. {
  26. return RestResponseProvider::sensitiveDataRequestDataProvider();
  27. }
  28. /**
  29. * @test
  30. * @dataProvider logMessageDataProvider
  31. *
  32. * @param string $logMessage
  33. */
  34. public function testCredentialsBeingObfuscated($logMessage)
  35. {
  36. $secrets = [
  37. 'accountId' => '[test]',
  38. 'bearerToken' => '[test]',
  39. 'sessionToken' => '[test]',
  40. 'organisationName' => '[test]',
  41. 'email' => '[test]',
  42. 'phoneNumber' => '[test]',
  43. 'personFirstName' => '[test]',
  44. 'personFirstLastName' => '[test]',
  45. 'total' => '[test]', // json object
  46. 'lines' => '[test]' // json array
  47. ];
  48. Bootstrap::getObjectManager()->configure([
  49. Anonymizer::class => [
  50. 'arguments' => [
  51. 'secrets' => $secrets
  52. ]
  53. ]
  54. ]);
  55. /** @var LogAnonymizerInterface $anonymizer */
  56. $anonymizer = Bootstrap::getObjectManager()->get(LogAnonymizerInterface::class);
  57. $anonMessage = $anonymizer->anonymize($logMessage);
  58. foreach ($secrets as $propertyName => $replacement) {
  59. if (strstr($logMessage, $propertyName) !== false) {
  60. // assert property names are still there and have their replacement attached
  61. $this->assertContains("\"$propertyName\": \"$replacement\"", $anonMessage);
  62. }
  63. }
  64. }
  65. }