create-prisma-php-app 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +9 -0
- package/README.md +158 -0
- package/composer.json +23 -0
- package/composer.lock +812 -0
- package/dist/bootstrap.php +4 -0
- package/dist/index.js +2 -0
- package/dist/node_modules/prisma-client-php/index.enc +1 -0
- package/dist/node_modules/prisma-client-php/index.js +2 -0
- package/dist/node_modules/prisma-client-php/key.enc +1 -0
- package/dist/node_modules/prisma-client-php/package.json +7 -0
- package/dist/prisma/schema.prisma +32 -0
- package/dist/prisma/seed.js +68 -0
- package/dist/public/assets/images/prisma-php.png +0 -0
- package/dist/public/css/styles.css +0 -0
- package/dist/public/css/tailwind.css +3 -0
- package/dist/public/favicon.ico +0 -0
- package/dist/public/index.php +64 -0
- package/dist/settings/paths.php +10 -0
- package/dist/settings/project-settings.js +6 -0
- package/dist/src/app/api/api.php +39 -0
- package/dist/src/app/classes/Validator.php +77 -0
- package/dist/src/app/model/IModel.php +22 -0
- package/package.json +35 -0
- package/tsconfig.json +110 -0
- package/vendor/autoload.php +25 -0
- package/vendor/brick/math/.editorconfig +15 -0
- package/vendor/brick/math/.gitattributes +11 -0
- package/vendor/brick/math/.github/FUNDING.yml +1 -0
- package/vendor/brick/math/.github/workflows/ci.yml +80 -0
- package/vendor/brick/math/CHANGELOG.md +445 -0
- package/vendor/brick/math/LICENSE +20 -0
- package/vendor/brick/math/README.md +247 -0
- package/vendor/brick/math/composer.json +34 -0
- package/vendor/brick/math/phpunit.php +51 -0
- package/vendor/brick/math/phpunit.xml +13 -0
- package/vendor/brick/math/psalm.xml +28 -0
- package/vendor/brick/math/random-tests.php +162 -0
- package/vendor/brick/math/src/BigDecimal.php +786 -0
- package/vendor/brick/math/src/BigInteger.php +1079 -0
- package/vendor/brick/math/src/BigNumber.php +512 -0
- package/vendor/brick/math/src/BigRational.php +445 -0
- package/vendor/brick/math/src/Exception/DivisionByZeroException.php +35 -0
- package/vendor/brick/math/src/Exception/IntegerOverflowException.php +23 -0
- package/vendor/brick/math/src/Exception/MathException.php +12 -0
- package/vendor/brick/math/src/Exception/NegativeNumberException.php +12 -0
- package/vendor/brick/math/src/Exception/NumberFormatException.php +33 -0
- package/vendor/brick/math/src/Exception/RoundingNecessaryException.php +19 -0
- package/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php +75 -0
- package/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php +108 -0
- package/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php +581 -0
- package/vendor/brick/math/src/Internal/Calculator.php +676 -0
- package/vendor/brick/math/src/RoundingMode.php +107 -0
- package/vendor/brick/math/tests/AbstractTestCase.php +86 -0
- package/vendor/brick/math/tests/BigDecimalTest.php +2596 -0
- package/vendor/brick/math/tests/BigIntegerTest.php +3782 -0
- package/vendor/brick/math/tests/BigNumberTest.php +53 -0
- package/vendor/brick/math/tests/BigRationalTest.php +993 -0
- package/vendor/brick/math/tests/CalculatorDetectTest.php +25 -0
- package/vendor/brick/math/tests/Internal/Calculator/NativeCalculatorTest.php +87 -0
- package/vendor/composer/ClassLoader.php +579 -0
- package/vendor/composer/InstalledVersions.php +359 -0
- package/vendor/composer/LICENSE +21 -0
- package/vendor/composer/autoload_classmap.php +15 -0
- package/vendor/composer/autoload_files.php +13 -0
- package/vendor/composer/autoload_namespaces.php +9 -0
- package/vendor/composer/autoload_psr4.php +20 -0
- package/vendor/composer/autoload_real.php +50 -0
- package/vendor/composer/autoload_static.php +122 -0
- package/vendor/composer/installed.json +825 -0
- package/vendor/composer/installed.php +132 -0
- package/vendor/composer/platform_check.php +26 -0
- package/vendor/firebase/php-jwt/.gitattributes +9 -0
- package/vendor/firebase/php-jwt/.github/release-please.yml +3 -0
- package/vendor/firebase/php-jwt/.github/workflows/tests.yml +57 -0
- package/vendor/firebase/php-jwt/.php-cs-fixer.dist.php +24 -0
- package/vendor/firebase/php-jwt/CHANGELOG.md +170 -0
- package/vendor/firebase/php-jwt/LICENSE +30 -0
- package/vendor/firebase/php-jwt/README.md +424 -0
- package/vendor/firebase/php-jwt/composer.json +42 -0
- package/vendor/firebase/php-jwt/phpstan.neon.dist +5 -0
- package/vendor/firebase/php-jwt/phpunit.xml.dist +18 -0
- package/vendor/firebase/php-jwt/src/BeforeValidException.php +18 -0
- package/vendor/firebase/php-jwt/src/CachedKeySet.php +268 -0
- package/vendor/firebase/php-jwt/src/ExpiredException.php +18 -0
- package/vendor/firebase/php-jwt/src/JWK.php +349 -0
- package/vendor/firebase/php-jwt/src/JWT.php +669 -0
- package/vendor/firebase/php-jwt/src/JWTExceptionWithPayloadInterface.php +20 -0
- package/vendor/firebase/php-jwt/src/Key.php +64 -0
- package/vendor/firebase/php-jwt/src/SignatureInvalidException.php +7 -0
- package/vendor/firebase/php-jwt/tests/CachedKeySetTest.php +598 -0
- package/vendor/firebase/php-jwt/tests/JWKTest.php +172 -0
- package/vendor/firebase/php-jwt/tests/JWTTest.php +543 -0
- package/vendor/firebase/php-jwt/tests/data/ec-jwkset.json +40 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa-private.pem +18 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa-public.pem +9 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa256-private.pem +4 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa384-private.pem +6 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa384-public.pem +5 -0
- package/vendor/firebase/php-jwt/tests/data/ed25519-1.pub +1 -0
- package/vendor/firebase/php-jwt/tests/data/ed25519-1.sec +1 -0
- package/vendor/firebase/php-jwt/tests/data/ed25519-jwkset.json +11 -0
- package/vendor/firebase/php-jwt/tests/data/rsa-jwkset.json +18 -0
- package/vendor/firebase/php-jwt/tests/data/rsa-with-passphrase.pem +42 -0
- package/vendor/firebase/php-jwt/tests/data/rsa1-private.pem +27 -0
- package/vendor/firebase/php-jwt/tests/data/rsa1-public.pub +9 -0
- package/vendor/firebase/php-jwt/tests/data/rsa2-private.pem +27 -0
- package/vendor/firebase/php-jwt/tests/data/secp256k1-private.pem +5 -0
- package/vendor/firebase/php-jwt/tests/data/secp256k1-public.pem +4 -0
- package/vendor/graham-campbell/result-type/.gitattributes +9 -0
- package/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
- package/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
- package/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
- package/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
- package/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
- package/vendor/graham-campbell/result-type/CHANGELOG.md +43 -0
- package/vendor/graham-campbell/result-type/LICENSE +21 -0
- package/vendor/graham-campbell/result-type/README.md +42 -0
- package/vendor/graham-campbell/result-type/composer.json +33 -0
- package/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
- package/vendor/graham-campbell/result-type/src/Error.php +121 -0
- package/vendor/graham-campbell/result-type/src/Result.php +69 -0
- package/vendor/graham-campbell/result-type/src/Success.php +120 -0
- package/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
- package/vendor/hidehalo/nanoid-php/.editorconfig +15 -0
- package/vendor/hidehalo/nanoid-php/.gitattributes +8 -0
- package/vendor/hidehalo/nanoid-php/.github/workflows/php.yml +49 -0
- package/vendor/hidehalo/nanoid-php/.styleci.yml +1 -0
- package/vendor/hidehalo/nanoid-php/CHANGELOG.md +36 -0
- package/vendor/hidehalo/nanoid-php/CODE_OF_CONDUCT.md +74 -0
- package/vendor/hidehalo/nanoid-php/CONTRIBUTING.md +32 -0
- package/vendor/hidehalo/nanoid-php/ISSUE_TEMPLATE.md +27 -0
- package/vendor/hidehalo/nanoid-php/LICENSE.md +21 -0
- package/vendor/hidehalo/nanoid-php/PULL_REQUEST_TEMPLATE.md +43 -0
- package/vendor/hidehalo/nanoid-php/README.md +108 -0
- package/vendor/hidehalo/nanoid-php/benchmark/benchmark.php +24 -0
- package/vendor/hidehalo/nanoid-php/composer.json +62 -0
- package/vendor/hidehalo/nanoid-php/examples/basic_usage.php +24 -0
- package/vendor/hidehalo/nanoid-php/examples/custom_formated.php +29 -0
- package/vendor/hidehalo/nanoid-php/phpunit.xml +31 -0
- package/vendor/hidehalo/nanoid-php/src/Client.php +120 -0
- package/vendor/hidehalo/nanoid-php/src/Core.php +31 -0
- package/vendor/hidehalo/nanoid-php/src/CoreInterface.php +19 -0
- package/vendor/hidehalo/nanoid-php/src/Generator.php +13 -0
- package/vendor/hidehalo/nanoid-php/src/GeneratorInterface.php +13 -0
- package/vendor/hidehalo/nanoid-php/tests/ClientTest.php +76 -0
- package/vendor/hidehalo/nanoid-php/tests/CoreTest.php +37 -0
- package/vendor/hidehalo/nanoid-php/tests/GeneratorTest.php +34 -0
- package/vendor/hidehalo/nanoid-php/tests/Support/DummyGenerator.php +20 -0
- package/vendor/paragonie/random_compat/.gitattributes +14 -0
- package/vendor/paragonie/random_compat/.scrutinizer.yml +4 -0
- package/vendor/paragonie/random_compat/.travis.yml +59 -0
- package/vendor/paragonie/random_compat/CHANGELOG.md +3 -0
- package/vendor/paragonie/random_compat/LICENSE +22 -0
- package/vendor/paragonie/random_compat/RATIONALE.md +36 -0
- package/vendor/paragonie/random_compat/README.md +232 -0
- package/vendor/paragonie/random_compat/SECURITY.md +108 -0
- package/vendor/paragonie/random_compat/build-phar.sh +5 -0
- package/vendor/paragonie/random_compat/composer.json +34 -0
- package/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey +5 -0
- package/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc +11 -0
- package/vendor/paragonie/random_compat/lib/random.php +32 -0
- package/vendor/paragonie/random_compat/other/build_phar.php +57 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/COM.php +20 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/README.md +7 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/com_exception.php +11 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/libsodium.php +90 -0
- package/vendor/paragonie/random_compat/phpunit.sh +60 -0
- package/vendor/paragonie/random_compat/phpunit.xml.dist +31 -0
- package/vendor/paragonie/random_compat/psalm-autoload.php +9 -0
- package/vendor/paragonie/random_compat/psalm.xml +19 -0
- package/vendor/paragonie/random_compat/tests/full/DieHardTest.php +61 -0
- package/vendor/paragonie/random_compat/tests/full/StatTest.php +52 -0
- package/vendor/paragonie/random_compat/tests/specific/capicom.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/dev_urandom.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/libsodium.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/libsodium_legacy.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/mcrypt.php +7 -0
- package/vendor/paragonie/random_compat/tests/unit/RandomBytesTest.php +80 -0
- package/vendor/paragonie/random_compat/tests/unit/RandomIntTest.php +63 -0
- package/vendor/paragonie/random_compat/tests/unit/UtilityTest.php +95 -0
- package/vendor/paragonie/random_compat/tests/unit_with_basedir/RandomBytesTest.php +100 -0
- package/vendor/paragonie/random_compat/tests/unit_with_basedir/RandomIntTest.php +82 -0
- package/vendor/paragonie/random_compat/tests/unit_with_basedir/UtilityTest.php +95 -0
- package/vendor/phpoption/phpoption/.gitattributes +14 -0
- package/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
- package/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
- package/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
- package/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
- package/vendor/phpoption/phpoption/.github/workflows/static.yml +74 -0
- package/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
- package/vendor/phpoption/phpoption/LICENSE +201 -0
- package/vendor/phpoption/phpoption/Makefile +26 -0
- package/vendor/phpoption/phpoption/README.md +194 -0
- package/vendor/phpoption/phpoption/composer.json +52 -0
- package/vendor/phpoption/phpoption/phpstan-baseline.neon +32 -0
- package/vendor/phpoption/phpoption/phpstan.neon.dist +8 -0
- package/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
- package/vendor/phpoption/phpoption/psalm.xml +12 -0
- package/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -0
- package/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -0
- package/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -0
- package/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +77 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +200 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +160 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
- package/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
- package/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
- package/vendor/phpoption/phpoption/vendor-bin/psalm/composer.json +8 -0
- package/vendor/ramsey/uuid/.editorconfig +16 -0
- package/vendor/ramsey/uuid/.gitattributes +26 -0
- package/vendor/ramsey/uuid/.github/CODEOWNERS +1 -0
- package/vendor/ramsey/uuid/.github/FUNDING.yml +2 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Bug_Report.md +35 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Feature_Request.md +31 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Question.md +19 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/config.yml +1 -0
- package/vendor/ramsey/uuid/.github/dependabot.yml +15 -0
- package/vendor/ramsey/uuid/.github/pull_request_template.md +27 -0
- package/vendor/ramsey/uuid/.github/workflows/continuous-integration.yml +181 -0
- package/vendor/ramsey/uuid/.github/workflows/merge-dependabot-upgrades.yml +24 -0
- package/vendor/ramsey/uuid/.readthedocs.yml +11 -0
- package/vendor/ramsey/uuid/CHANGELOG.md +1511 -0
- package/vendor/ramsey/uuid/CODE_OF_CONDUCT.md +73 -0
- package/vendor/ramsey/uuid/CONTRIBUTING.md +171 -0
- package/vendor/ramsey/uuid/LICENSE +19 -0
- package/vendor/ramsey/uuid/README.md +83 -0
- package/vendor/ramsey/uuid/SECURITY.md +170 -0
- package/vendor/ramsey/uuid/build/.gitignore +6 -0
- package/vendor/ramsey/uuid/build/cache/.gitkeep +0 -0
- package/vendor/ramsey/uuid/build/logs/.gitkeep +0 -0
- package/vendor/ramsey/uuid/captainhook.json +105 -0
- package/vendor/ramsey/uuid/codecov.yml +29 -0
- package/vendor/ramsey/uuid/composer.json +106 -0
- package/vendor/ramsey/uuid/composer.lock +7208 -0
- package/vendor/ramsey/uuid/docs/Makefile +20 -0
- package/vendor/ramsey/uuid/docs/README.md +36 -0
- package/vendor/ramsey/uuid/docs/_static/.gitkeep +0 -0
- package/vendor/ramsey/uuid/docs/conf.py +103 -0
- package/vendor/ramsey/uuid/docs/copyright.rst +18 -0
- package/vendor/ramsey/uuid/docs/customize/calculators.rst +75 -0
- package/vendor/ramsey/uuid/docs/customize/factory.rst +93 -0
- package/vendor/ramsey/uuid/docs/customize/ordered-time-codec.rst +86 -0
- package/vendor/ramsey/uuid/docs/customize/timestamp-first-comb-codec.rst +72 -0
- package/vendor/ramsey/uuid/docs/customize/validators.rst +39 -0
- package/vendor/ramsey/uuid/docs/customize.rst +56 -0
- package/vendor/ramsey/uuid/docs/database.rst +260 -0
- package/vendor/ramsey/uuid/docs/faq.rst +132 -0
- package/vendor/ramsey/uuid/docs/index.rst +51 -0
- package/vendor/ramsey/uuid/docs/introduction.rst +31 -0
- package/vendor/ramsey/uuid/docs/nonstandard/guid.rst +152 -0
- package/vendor/ramsey/uuid/docs/nonstandard/other.rst +49 -0
- package/vendor/ramsey/uuid/docs/nonstandard/version6.rst +17 -0
- package/vendor/ramsey/uuid/docs/nonstandard.rst +40 -0
- package/vendor/ramsey/uuid/docs/quickstart.rst +112 -0
- package/vendor/ramsey/uuid/docs/reference/calculators.rst +168 -0
- package/vendor/ramsey/uuid/docs/reference/exceptions.rst +92 -0
- package/vendor/ramsey/uuid/docs/reference/fields-fieldsinterface.rst +16 -0
- package/vendor/ramsey/uuid/docs/reference/guid-fields.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/guid-guid.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/helper.rst +62 -0
- package/vendor/ramsey/uuid/docs/reference/name-based-namespaces.rst +31 -0
- package/vendor/ramsey/uuid/docs/reference/nonstandard-fields.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/nonstandard-uuid.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/nonstandard-uuidv6.rst +34 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-fieldsinterface.rst +78 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidinterface.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv1.rst +21 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv2.rst +47 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv3.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv4.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv5.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv6.rst +31 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv7.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv8.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-version.rst +87 -0
- package/vendor/ramsey/uuid/docs/reference/timebaseduuidinterface.rst +16 -0
- package/vendor/ramsey/uuid/docs/reference/types.rst +79 -0
- package/vendor/ramsey/uuid/docs/reference/uuid.rst +161 -0
- package/vendor/ramsey/uuid/docs/reference/uuidfactoryinterface.rst +102 -0
- package/vendor/ramsey/uuid/docs/reference/uuidinterface.rst +60 -0
- package/vendor/ramsey/uuid/docs/reference/validators.rst +34 -0
- package/vendor/ramsey/uuid/docs/reference/variant.rst +32 -0
- package/vendor/ramsey/uuid/docs/reference.rst +37 -0
- package/vendor/ramsey/uuid/docs/requirements.txt +3 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version1.rst +192 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version2.rst +273 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version3.rst +68 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version4.rst +39 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version5.rst +108 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version6.rst +213 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version7.rst +173 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version8.rst +51 -0
- package/vendor/ramsey/uuid/docs/rfc4122.rst +67 -0
- package/vendor/ramsey/uuid/docs/testing.rst +199 -0
- package/vendor/ramsey/uuid/docs/tidelift.rst +74 -0
- package/vendor/ramsey/uuid/docs/upgrading/2-to-3.rst +31 -0
- package/vendor/ramsey/uuid/docs/upgrading/3-to-4.rst +512 -0
- package/vendor/ramsey/uuid/docs/upgrading.rst +11 -0
- package/vendor/ramsey/uuid/phpbench.json +10 -0
- package/vendor/ramsey/uuid/phpcs.xml.dist +476 -0
- package/vendor/ramsey/uuid/phpstan-tests.neon +32 -0
- package/vendor/ramsey/uuid/phpstan.neon.dist +25 -0
- package/vendor/ramsey/uuid/phpunit.xml.dist +26 -0
- package/vendor/ramsey/uuid/psalm-baseline.xml +133 -0
- package/vendor/ramsey/uuid/psalm.xml +25 -0
- package/vendor/ramsey/uuid/resources/vagrant/README.md +10 -0
- package/vendor/ramsey/uuid/resources/vagrant/freebsd/README.md +15 -0
- package/vendor/ramsey/uuid/resources/vagrant/freebsd/Vagrantfile +35 -0
- package/vendor/ramsey/uuid/resources/vagrant/linux/README.md +15 -0
- package/vendor/ramsey/uuid/resources/vagrant/linux/Vagrantfile +27 -0
- package/vendor/ramsey/uuid/resources/vagrant/windows/README.md +16 -0
- package/vendor/ramsey/uuid/resources/vagrant/windows/Vagrantfile +22 -0
- package/vendor/ramsey/uuid/src/BinaryUtils.php +106 -0
- package/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php +68 -0
- package/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php +39 -0
- package/vendor/ramsey/uuid/src/Codec/CodecInterface.php +67 -0
- package/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php +82 -0
- package/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php +114 -0
- package/vendor/ramsey/uuid/src/Codec/StringCodec.php +128 -0
- package/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php +105 -0
- package/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php +51 -0
- package/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php +48 -0
- package/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php +53 -0
- package/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php +118 -0
- package/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php +163 -0
- package/vendor/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php +90 -0
- package/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php +58 -0
- package/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/DateTimeException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/DceSecurityException.php +25 -0
- package/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php +25 -0
- package/vendor/ramsey/uuid/src/Exception/NameException.php +25 -0
- package/vendor/ramsey/uuid/src/Exception/NodeException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/RandomSourceException.php +27 -0
- package/vendor/ramsey/uuid/src/Exception/TimeSourceException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php +21 -0
- package/vendor/ramsey/uuid/src/FeatureSet.php +395 -0
- package/vendor/ramsey/uuid/src/Fields/FieldsInterface.php +42 -0
- package/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php +70 -0
- package/vendor/ramsey/uuid/src/Generator/CombGenerator.php +124 -0
- package/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php +139 -0
- package/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php +53 -0
- package/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php +51 -0
- package/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php +131 -0
- package/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php +30 -0
- package/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php +38 -0
- package/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php +52 -0
- package/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php +37 -0
- package/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php +39 -0
- package/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php +45 -0
- package/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php +30 -0
- package/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php +31 -0
- package/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php +45 -0
- package/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php +38 -0
- package/vendor/ramsey/uuid/src/Generator/UnixTimeGenerator.php +170 -0
- package/vendor/ramsey/uuid/src/Guid/Fields.php +208 -0
- package/vendor/ramsey/uuid/src/Guid/Guid.php +61 -0
- package/vendor/ramsey/uuid/src/Guid/GuidBuilder.php +79 -0
- package/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php +226 -0
- package/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php +145 -0
- package/vendor/ramsey/uuid/src/Math/CalculatorInterface.php +106 -0
- package/vendor/ramsey/uuid/src/Math/RoundingMode.php +146 -0
- package/vendor/ramsey/uuid/src/Nonstandard/Fields.php +154 -0
- package/vendor/ramsey/uuid/src/Nonstandard/Uuid.php +37 -0
- package/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php +78 -0
- package/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php +113 -0
- package/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php +236 -0
- package/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php +41 -0
- package/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php +54 -0
- package/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php +69 -0
- package/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php +74 -0
- package/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php +190 -0
- package/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php +30 -0
- package/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php +57 -0
- package/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php +33 -0
- package/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php +28 -0
- package/vendor/ramsey/uuid/src/Rfc4122/Fields.php +214 -0
- package/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php +129 -0
- package/vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php +41 -0
- package/vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php +27 -0
- package/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php +41 -0
- package/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php +27 -0
- package/vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php +55 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php +116 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php +30 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php +61 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php +119 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php +58 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php +58 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php +58 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV6.php +30 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV7.php +63 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV8.php +65 -0
- package/vendor/ramsey/uuid/src/Rfc4122/Validator.php +45 -0
- package/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php +87 -0
- package/vendor/ramsey/uuid/src/Rfc4122/Version.php +139 -0
- package/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php +57 -0
- package/vendor/ramsey/uuid/src/TimeBasedUuidFactoryInterface.php +48 -0
- package/vendor/ramsey/uuid/src/TimeBasedUuidInterface.php +30 -0
- package/vendor/ramsey/uuid/src/Type/Decimal.php +135 -0
- package/vendor/ramsey/uuid/src/Type/Hexadecimal.php +109 -0
- package/vendor/ramsey/uuid/src/Type/Integer.php +145 -0
- package/vendor/ramsey/uuid/src/Type/NumberInterface.php +28 -0
- package/vendor/ramsey/uuid/src/Type/Time.php +108 -0
- package/vendor/ramsey/uuid/src/Type/TypeInterface.php +45 -0
- package/vendor/ramsey/uuid/src/Uuid.php +645 -0
- package/vendor/ramsey/uuid/src/UuidFactory.php +503 -0
- package/vendor/ramsey/uuid/src/UuidFactoryInterface.php +184 -0
- package/vendor/ramsey/uuid/src/UuidInterface.php +114 -0
- package/vendor/ramsey/uuid/src/Validator/GenericValidator.php +45 -0
- package/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php +39 -0
- package/vendor/ramsey/uuid/src/Variant.php +60 -0
- package/vendor/ramsey/uuid/src/functions.php +160 -0
- package/vendor/ramsey/uuid/tests/BinaryUtilsTest.php +381 -0
- package/vendor/ramsey/uuid/tests/Builder/FallbackBuilderTest.php +198 -0
- package/vendor/ramsey/uuid/tests/Codec/GuidStringCodecTest.php +118 -0
- package/vendor/ramsey/uuid/tests/Codec/OrderedTimeCodecTest.php +258 -0
- package/vendor/ramsey/uuid/tests/Codec/StringCodecTest.php +149 -0
- package/vendor/ramsey/uuid/tests/Converter/Number/GenericNumberConverterTest.php +28 -0
- package/vendor/ramsey/uuid/tests/Converter/Time/GenericTimeConverterTest.php +147 -0
- package/vendor/ramsey/uuid/tests/Converter/Time/PhpTimeConverterTest.php +199 -0
- package/vendor/ramsey/uuid/tests/Converter/Time/UnixTimeConverterTest.php +202 -0
- package/vendor/ramsey/uuid/tests/Encoder/TimestampFirstCombCodecTest.php +105 -0
- package/vendor/ramsey/uuid/tests/Encoder/TimestampLastCombCodecTest.php +106 -0
- package/vendor/ramsey/uuid/tests/ExpectedBehaviorTest.php +573 -0
- package/vendor/ramsey/uuid/tests/FeatureSetTest.php +88 -0
- package/vendor/ramsey/uuid/tests/FunctionsTest.php +151 -0
- package/vendor/ramsey/uuid/tests/Generator/CombGeneratorTest.php +134 -0
- package/vendor/ramsey/uuid/tests/Generator/DceSecurityGeneratorTest.php +282 -0
- package/vendor/ramsey/uuid/tests/Generator/DefaultNameGeneratorTest.php +83 -0
- package/vendor/ramsey/uuid/tests/Generator/DefaultTimeGeneratorTest.php +202 -0
- package/vendor/ramsey/uuid/tests/Generator/NameGeneratorFactoryTest.php +19 -0
- package/vendor/ramsey/uuid/tests/Generator/PeclUuidNameGeneratorTest.php +107 -0
- package/vendor/ramsey/uuid/tests/Generator/PeclUuidRandomGeneratorTest.php +30 -0
- package/vendor/ramsey/uuid/tests/Generator/PeclUuidTimeGeneratorTest.php +30 -0
- package/vendor/ramsey/uuid/tests/Generator/RandomBytesGeneratorTest.php +70 -0
- package/vendor/ramsey/uuid/tests/Generator/RandomGeneratorFactoryTest.php +19 -0
- package/vendor/ramsey/uuid/tests/Generator/TimeGeneratorFactoryTest.php +33 -0
- package/vendor/ramsey/uuid/tests/Generator/UnixTimeGeneratorTest.php +204 -0
- package/vendor/ramsey/uuid/tests/Guid/FieldsTest.php +235 -0
- package/vendor/ramsey/uuid/tests/Guid/GuidBuilderTest.php +33 -0
- package/vendor/ramsey/uuid/tests/Math/BrickMathCalculatorTest.php +116 -0
- package/vendor/ramsey/uuid/tests/Nonstandard/FieldsTest.php +84 -0
- package/vendor/ramsey/uuid/tests/Nonstandard/UuidBuilderTest.php +33 -0
- package/vendor/ramsey/uuid/tests/Nonstandard/UuidV6Test.php +192 -0
- package/vendor/ramsey/uuid/tests/Provider/Dce/SystemDceSecurityProviderTest.php +505 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/FallbackNodeProviderTest.php +87 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/RandomNodeProviderTest.php +124 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/StaticNodeProviderTest.php +58 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/SystemNodeProviderTest.php +950 -0
- package/vendor/ramsey/uuid/tests/Provider/Time/FixedTimeProviderTest.php +41 -0
- package/vendor/ramsey/uuid/tests/Provider/Time/SystemTimeProviderTest.php +20 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/FieldsTest.php +260 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidBuilderTest.php +145 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV1Test.php +123 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV2Test.php +214 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV3Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV4Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV5Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV6Test.php +221 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV7Test.php +131 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV8Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/ValidatorTest.php +122 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/VariantTraitTest.php +109 -0
- package/vendor/ramsey/uuid/tests/TestCase.php +29 -0
- package/vendor/ramsey/uuid/tests/Type/DecimalTest.php +305 -0
- package/vendor/ramsey/uuid/tests/Type/HexadecimalTest.php +112 -0
- package/vendor/ramsey/uuid/tests/Type/IntegerTest.php +235 -0
- package/vendor/ramsey/uuid/tests/Type/TimeTest.php +120 -0
- package/vendor/ramsey/uuid/tests/UuidFactoryTest.php +233 -0
- package/vendor/ramsey/uuid/tests/UuidTest.php +1910 -0
- package/vendor/ramsey/uuid/tests/Validator/GenericValidatorTest.php +98 -0
- package/vendor/ramsey/uuid/tests/benchmark/GuidConversionBench.php +43 -0
- package/vendor/ramsey/uuid/tests/benchmark/NonLazyUuidConversionBench.php +39 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidFieldExtractionBench.php +86 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidGenerationBench.php +113 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidSerializationBench.php +206 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidStringConversionBench.php +257 -0
- package/vendor/ramsey/uuid/tests/bootstrap.php +12 -0
- package/vendor/ramsey/uuid/tests/static-analysis/UuidIsImmutable.php +96 -0
- package/vendor/ramsey/uuid/tests/static-analysis/UuidIsNeverEmpty.php +36 -0
- package/vendor/ramsey/uuid/tests/static-analysis/ValidUuidIsNonEmpty.php +44 -0
- package/vendor/ramsey/uuid/tests/static-analysis/stubs.php +33 -0
- package/vendor/symfony/polyfill-ctype/Ctype.php +232 -0
- package/vendor/symfony/polyfill-ctype/LICENSE +19 -0
- package/vendor/symfony/polyfill-ctype/README.md +12 -0
- package/vendor/symfony/polyfill-ctype/bootstrap.php +50 -0
- package/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -0
- package/vendor/symfony/polyfill-ctype/composer.json +41 -0
- package/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
- package/vendor/symfony/polyfill-mbstring/Mbstring.php +947 -0
- package/vendor/symfony/polyfill-mbstring/README.md +13 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -0
- package/vendor/symfony/polyfill-mbstring/bootstrap.php +151 -0
- package/vendor/symfony/polyfill-mbstring/bootstrap80.php +147 -0
- package/vendor/symfony/polyfill-mbstring/composer.json +41 -0
- package/vendor/symfony/polyfill-php80/LICENSE +19 -0
- package/vendor/symfony/polyfill-php80/Php80.php +115 -0
- package/vendor/symfony/polyfill-php80/PhpToken.php +103 -0
- package/vendor/symfony/polyfill-php80/README.md +25 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -0
- package/vendor/symfony/polyfill-php80/bootstrap.php +42 -0
- package/vendor/symfony/polyfill-php80/composer.json +40 -0
- package/vendor/vlucas/phpdotenv/.editorconfig +15 -0
- package/vendor/vlucas/phpdotenv/.gitattributes +17 -0
- package/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
- package/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
- package/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
- package/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
- package/vendor/vlucas/phpdotenv/.github/workflows/static.yml +74 -0
- package/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
- package/vendor/vlucas/phpdotenv/LICENSE +30 -0
- package/vendor/vlucas/phpdotenv/Makefile +26 -0
- package/vendor/vlucas/phpdotenv/README.md +363 -0
- package/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
- package/vendor/vlucas/phpdotenv/composer.json +60 -0
- package/vendor/vlucas/phpdotenv/phpstan-baseline.neon +21 -0
- package/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
- package/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
- package/vendor/vlucas/phpdotenv/psalm-baseline.xml +28 -0
- package/vendor/vlucas/phpdotenv/psalm.xml +13 -0
- package/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -0
- package/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Loader/Loader.php +47 -0
- package/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -0
- package/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -0
- package/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +300 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -0
- package/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +89 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +89 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -0
- package/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -0
- package/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -0
- package/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -0
- package/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -0
- package/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -0
- package/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -0
- package/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -0
- package/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -0
- package/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -0
- package/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -0
- package/vendor/vlucas/phpdotenv/src/Util/Str.php +98 -0
- package/vendor/vlucas/phpdotenv/src/Validator.php +209 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
- package/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +16 -0
- package/vendor/vlucas/phpdotenv/vendor-bin/psalm/composer.json +9 -0
|
@@ -0,0 +1,950 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
declare(strict_types=1);
|
|
4
|
+
|
|
5
|
+
namespace Ramsey\Uuid\Test\Provider\Node;
|
|
6
|
+
|
|
7
|
+
use Ramsey\Uuid\Exception\InvalidArgumentException;
|
|
8
|
+
use Ramsey\Uuid\Exception\NodeException;
|
|
9
|
+
use Ramsey\Uuid\Provider\Node\SystemNodeProvider;
|
|
10
|
+
use Ramsey\Uuid\Test\TestCase;
|
|
11
|
+
use phpmock\spy\Spy;
|
|
12
|
+
|
|
13
|
+
use function array_shift;
|
|
14
|
+
use function array_walk;
|
|
15
|
+
use function gettype;
|
|
16
|
+
use function is_array;
|
|
17
|
+
use function strlen;
|
|
18
|
+
use function vsprintf;
|
|
19
|
+
|
|
20
|
+
use const GLOB_NOSORT;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Tests for the SystemNodeProvider class
|
|
24
|
+
*
|
|
25
|
+
* The class under test make use of various native functions who's output is
|
|
26
|
+
* dictated by which environment PHP runs on. Instead of having to run these
|
|
27
|
+
* tests on each of these environments, the related functions are mocked. The
|
|
28
|
+
* following functions are concerned:
|
|
29
|
+
*
|
|
30
|
+
* - glob
|
|
31
|
+
* - constant
|
|
32
|
+
* - passthru
|
|
33
|
+
* - file_get_contents
|
|
34
|
+
* - ini_get
|
|
35
|
+
*
|
|
36
|
+
* On Linux systems `glob` would normally provide one or more paths were mac
|
|
37
|
+
* address can be retrieved (using `file_get_contents`). On non-linux systems,
|
|
38
|
+
* or when the `glob` fails, `passthru` is used to read the mac address from the
|
|
39
|
+
* command for the relevant environment as provided by `constant('PHP_OS')`.
|
|
40
|
+
*
|
|
41
|
+
* Please note that, in order to have robust tests, (the output of) these
|
|
42
|
+
* functions should ALWAYS be mocked and the amount of times each function
|
|
43
|
+
* should be run should ALWAYS be specified.
|
|
44
|
+
*
|
|
45
|
+
* This will make the tests more verbose but also more bullet-proof.
|
|
46
|
+
*/
|
|
47
|
+
class SystemNodeProviderTest extends TestCase
|
|
48
|
+
{
|
|
49
|
+
private const MOCK_GLOB = 'glob';
|
|
50
|
+
private const MOCK_CONSTANT = 'constant';
|
|
51
|
+
private const MOCK_PASSTHRU = 'passthru';
|
|
52
|
+
private const MOCK_FILE_GET_CONTENTS = 'file_get_contents';
|
|
53
|
+
private const MOCK_INI_GET = 'ini_get';
|
|
54
|
+
private const MOCK_IS_READABLE = 'is_readable';
|
|
55
|
+
|
|
56
|
+
private const PROVIDER_NAMESPACE = 'Ramsey\\Uuid\\Provider\\Node';
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @var Spy[]
|
|
60
|
+
*/
|
|
61
|
+
private $functionProxies = [];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @runInSeparateProcess
|
|
65
|
+
* @preserveGlobalState disabled
|
|
66
|
+
* @dataProvider provideValidNetStatOutput
|
|
67
|
+
*/
|
|
68
|
+
public function testGetNodeReturnsSystemNodeFromMacAddress(string $netstatOutput, string $expected): void
|
|
69
|
+
{
|
|
70
|
+
/* Arrange mocks for native functions */
|
|
71
|
+
$this->arrangeMockFunctions(
|
|
72
|
+
null,
|
|
73
|
+
null,
|
|
74
|
+
function () use ($netstatOutput): void {
|
|
75
|
+
echo $netstatOutput;
|
|
76
|
+
},
|
|
77
|
+
'NOT LINUX',
|
|
78
|
+
'nothing disabled'
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
/* Act upon the system under test */
|
|
82
|
+
$provider = new SystemNodeProvider();
|
|
83
|
+
$node = $provider->getNode();
|
|
84
|
+
|
|
85
|
+
/* Assert the result match expectations */
|
|
86
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
87
|
+
|
|
88
|
+
$this->assertSame($expected, $node->toString());
|
|
89
|
+
|
|
90
|
+
$message = vsprintf(
|
|
91
|
+
'Node should be a hexadecimal string of 12 characters. Actual node: %s (length: %s)',
|
|
92
|
+
[$node->toString(), strlen($node->toString()),]
|
|
93
|
+
);
|
|
94
|
+
$this->assertMatchesRegularExpression('/^[A-Fa-f0-9]{12}$/', $node->toString(), $message);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @runInSeparateProcess
|
|
99
|
+
* @preserveGlobalState disabled
|
|
100
|
+
* @dataProvider provideInvalidNetStatOutput
|
|
101
|
+
*/
|
|
102
|
+
public function testGetNodeShouldNotReturnsSystemNodeForInvalidMacAddress(string $netstatOutput): void
|
|
103
|
+
{
|
|
104
|
+
/* Arrange */
|
|
105
|
+
$this->arrangeMockFunctions(
|
|
106
|
+
null,
|
|
107
|
+
null,
|
|
108
|
+
function () use ($netstatOutput): void {
|
|
109
|
+
echo $netstatOutput;
|
|
110
|
+
},
|
|
111
|
+
'NOT LINUX',
|
|
112
|
+
'nothing disabled'
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
/* Act */
|
|
116
|
+
$exception = null;
|
|
117
|
+
$provider = new SystemNodeProvider();
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
$provider->getNode();
|
|
121
|
+
} catch (NodeException $exception) {
|
|
122
|
+
// do nothing
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Assert */
|
|
126
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
127
|
+
$this->assertInstanceOf(NodeException::class, $exception);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @runInSeparateProcess
|
|
132
|
+
* @preserveGlobalState disabled
|
|
133
|
+
* @dataProvider provideNotationalFormats
|
|
134
|
+
*/
|
|
135
|
+
public function testGetNodeReturnsNodeStrippedOfNotationalFormatting(string $formatted, string $expected): void
|
|
136
|
+
{
|
|
137
|
+
/* Arrange */
|
|
138
|
+
$this->arrangeMockFunctions(
|
|
139
|
+
null,
|
|
140
|
+
null,
|
|
141
|
+
function () use ($formatted): void {
|
|
142
|
+
echo "\n{$formatted}\n";
|
|
143
|
+
},
|
|
144
|
+
'NOT LINUX',
|
|
145
|
+
'nothing disabled'
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
/* Act */
|
|
149
|
+
$provider = new SystemNodeProvider();
|
|
150
|
+
$node = $provider->getNode();
|
|
151
|
+
|
|
152
|
+
/* Assert */
|
|
153
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
154
|
+
|
|
155
|
+
$this->assertSame($expected, $node->toString());
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @runInSeparateProcess
|
|
160
|
+
* @preserveGlobalState disabled
|
|
161
|
+
* @dataProvider provideInvalidNotationalFormats
|
|
162
|
+
*/
|
|
163
|
+
public function testGetNodeDoesNotAcceptIncorrectNotationalFormatting(string $formatted): void
|
|
164
|
+
{
|
|
165
|
+
/* Arrange */
|
|
166
|
+
$this->arrangeMockFunctions(
|
|
167
|
+
null,
|
|
168
|
+
null,
|
|
169
|
+
function () use ($formatted): void {
|
|
170
|
+
echo "\n{$formatted}\n";
|
|
171
|
+
},
|
|
172
|
+
'NOT LINUX',
|
|
173
|
+
'nothing disabled'
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
/* Act */
|
|
177
|
+
$exception = null;
|
|
178
|
+
$provider = new SystemNodeProvider();
|
|
179
|
+
|
|
180
|
+
try {
|
|
181
|
+
$provider->getNode();
|
|
182
|
+
} catch (NodeException $exception) {
|
|
183
|
+
// do nothing
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* Assert */
|
|
187
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
188
|
+
$this->assertInstanceOf(NodeException::class, $exception);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @runInSeparateProcess
|
|
193
|
+
* @preserveGlobalState disabled
|
|
194
|
+
*/
|
|
195
|
+
public function testGetNodeReturnsFirstMacAddressFound(): void
|
|
196
|
+
{
|
|
197
|
+
/* Arrange */
|
|
198
|
+
$this->arrangeMockFunctions(
|
|
199
|
+
null,
|
|
200
|
+
null,
|
|
201
|
+
function (): void {
|
|
202
|
+
echo "\nAA-BB-CC-DD-EE-FF\n00-11-22-33-44-55\nFF-11-EE-22-DD-33\n";
|
|
203
|
+
},
|
|
204
|
+
'NOT LINUX',
|
|
205
|
+
'nothing disabled'
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
/* Act */
|
|
209
|
+
$provider = new SystemNodeProvider();
|
|
210
|
+
$node = $provider->getNode();
|
|
211
|
+
|
|
212
|
+
/* Assert */
|
|
213
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
214
|
+
|
|
215
|
+
$this->assertSame('aabbccddeeff', $node->toString());
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* @runInSeparateProcess
|
|
220
|
+
* @preserveGlobalState disabled
|
|
221
|
+
*/
|
|
222
|
+
public function testGetNodeReturnsFalseWhenNodeIsNotFound(): void
|
|
223
|
+
{
|
|
224
|
+
/* Arrange */
|
|
225
|
+
$this->arrangeMockFunctions(
|
|
226
|
+
null,
|
|
227
|
+
null,
|
|
228
|
+
function (): void {
|
|
229
|
+
echo 'some string that does not match the mac address';
|
|
230
|
+
},
|
|
231
|
+
'NOT LINUX',
|
|
232
|
+
'nothing disabled'
|
|
233
|
+
);
|
|
234
|
+
|
|
235
|
+
/* Act */
|
|
236
|
+
$exception = null;
|
|
237
|
+
$provider = new SystemNodeProvider();
|
|
238
|
+
|
|
239
|
+
try {
|
|
240
|
+
$provider->getNode();
|
|
241
|
+
} catch (NodeException $exception) {
|
|
242
|
+
// do nothing
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* Assert */
|
|
246
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
247
|
+
$this->assertInstanceOf(NodeException::class, $exception);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* @runInSeparateProcess
|
|
252
|
+
* @preserveGlobalState disabled
|
|
253
|
+
*/
|
|
254
|
+
public function testGetNodeWillNotExecuteSystemCallIfFailedFirstTime(): void
|
|
255
|
+
{
|
|
256
|
+
/* Arrange */
|
|
257
|
+
$this->arrangeMockFunctions(
|
|
258
|
+
null,
|
|
259
|
+
null,
|
|
260
|
+
function (): void {
|
|
261
|
+
echo 'some string that does not match the mac address';
|
|
262
|
+
},
|
|
263
|
+
'NOT LINUX',
|
|
264
|
+
'nothing disabled'
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
/* Act */
|
|
268
|
+
$exception1 = null;
|
|
269
|
+
$exception2 = null;
|
|
270
|
+
$provider = new SystemNodeProvider();
|
|
271
|
+
|
|
272
|
+
try {
|
|
273
|
+
$provider->getNode();
|
|
274
|
+
} catch (NodeException $exception1) {
|
|
275
|
+
// do nothing
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
try {
|
|
279
|
+
$provider->getNode();
|
|
280
|
+
} catch (NodeException $exception2) {
|
|
281
|
+
// do nothing
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* Assert */
|
|
285
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
286
|
+
$this->assertInstanceOf(NodeException::class, $exception1);
|
|
287
|
+
$this->assertInstanceOf(NodeException::class, $exception2);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* @runInSeparateProcess
|
|
292
|
+
* @preserveGlobalState disabled
|
|
293
|
+
* @dataProvider provideCommandPerOs
|
|
294
|
+
*/
|
|
295
|
+
public function testGetNodeGetsNetworkInterfaceConfig(string $os, string $command): void
|
|
296
|
+
{
|
|
297
|
+
/* Arrange */
|
|
298
|
+
$this->arrangeMockFunctions(
|
|
299
|
+
'whatever',
|
|
300
|
+
['mock address path'],
|
|
301
|
+
'whatever',
|
|
302
|
+
$os,
|
|
303
|
+
'nothing disabled',
|
|
304
|
+
true
|
|
305
|
+
);
|
|
306
|
+
|
|
307
|
+
/* Act */
|
|
308
|
+
$exception = null;
|
|
309
|
+
$provider = new SystemNodeProvider();
|
|
310
|
+
|
|
311
|
+
try {
|
|
312
|
+
$provider->getNode();
|
|
313
|
+
} catch (NodeException $exception) {
|
|
314
|
+
// do nothing
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/* Assert */
|
|
318
|
+
$globBodyAssert = null;
|
|
319
|
+
$fileGetContentsAssert = null;
|
|
320
|
+
$isReadableAssert = null;
|
|
321
|
+
if ($os === 'Linux') {
|
|
322
|
+
$globBodyAssert = [['/sys/class/net/*/address', GLOB_NOSORT]];
|
|
323
|
+
$fileGetContentsAssert = ['mock address path'];
|
|
324
|
+
$isReadableAssert = $fileGetContentsAssert;
|
|
325
|
+
}
|
|
326
|
+
$this->assertMockFunctions(
|
|
327
|
+
$fileGetContentsAssert,
|
|
328
|
+
$globBodyAssert,
|
|
329
|
+
[$command],
|
|
330
|
+
['PHP_OS'],
|
|
331
|
+
['disable_functions'],
|
|
332
|
+
$isReadableAssert
|
|
333
|
+
);
|
|
334
|
+
|
|
335
|
+
$this->assertInstanceOf(NodeException::class, $exception);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* @runInSeparateProcess
|
|
340
|
+
* @preserveGlobalState disabled
|
|
341
|
+
*/
|
|
342
|
+
public function testGetNodeReturnsSameNodeUponSubsequentCalls(): void
|
|
343
|
+
{
|
|
344
|
+
/* Arrange */
|
|
345
|
+
$this->arrangeMockFunctions(
|
|
346
|
+
null,
|
|
347
|
+
null,
|
|
348
|
+
function (): void {
|
|
349
|
+
echo "\nAA-BB-CC-DD-EE-FF\n";
|
|
350
|
+
},
|
|
351
|
+
'NOT LINUX',
|
|
352
|
+
'nothing disabled'
|
|
353
|
+
);
|
|
354
|
+
|
|
355
|
+
/* Act */
|
|
356
|
+
$provider = new SystemNodeProvider();
|
|
357
|
+
$node = $provider->getNode();
|
|
358
|
+
$node2 = $provider->getNode();
|
|
359
|
+
|
|
360
|
+
/* Assert */
|
|
361
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
362
|
+
|
|
363
|
+
$this->assertSame($node->toString(), $node2->toString());
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* @runInSeparateProcess
|
|
368
|
+
* @preserveGlobalState disabled
|
|
369
|
+
*/
|
|
370
|
+
public function testSubsequentCallsToGetNodeDoNotRecallIfconfig(): void
|
|
371
|
+
{
|
|
372
|
+
/* Arrange */
|
|
373
|
+
$this->arrangeMockFunctions(
|
|
374
|
+
null,
|
|
375
|
+
null,
|
|
376
|
+
function (): void {
|
|
377
|
+
echo "\nAA-BB-CC-DD-EE-FF\n";
|
|
378
|
+
},
|
|
379
|
+
'NOT LINUX',
|
|
380
|
+
'nothing disabled'
|
|
381
|
+
);
|
|
382
|
+
|
|
383
|
+
/* Act */
|
|
384
|
+
$provider = new SystemNodeProvider();
|
|
385
|
+
$node = $provider->getNode();
|
|
386
|
+
$node2 = $provider->getNode();
|
|
387
|
+
|
|
388
|
+
/* Assert */
|
|
389
|
+
$this->assertMockFunctions(null, null, ['netstat -ie 2>&1'], ['PHP_OS'], ['disable_functions']);
|
|
390
|
+
|
|
391
|
+
$this->assertSame($node->toString(), $node2->toString());
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* @runInSeparateProcess
|
|
396
|
+
* @preserveGlobalState disabled
|
|
397
|
+
* @dataProvider provideCommandPerOs
|
|
398
|
+
*/
|
|
399
|
+
public function testCallGetsysfsOnLinux(string $os, string $command): void
|
|
400
|
+
{
|
|
401
|
+
/* Arrange */
|
|
402
|
+
$this->arrangeMockFunctions(
|
|
403
|
+
function () {
|
|
404
|
+
static $macs = ["00:00:00:00:00:00\n", "01:02:03:04:05:06\n"];
|
|
405
|
+
|
|
406
|
+
return array_shift($macs);
|
|
407
|
+
},
|
|
408
|
+
['mock address path 1', 'mock address path 2'],
|
|
409
|
+
function (): void {
|
|
410
|
+
echo "\n01-02-03-04-05-06\n";
|
|
411
|
+
},
|
|
412
|
+
$os,
|
|
413
|
+
'nothing disabled',
|
|
414
|
+
true
|
|
415
|
+
);
|
|
416
|
+
|
|
417
|
+
/* Act */
|
|
418
|
+
$provider = new SystemNodeProvider();
|
|
419
|
+
$node = $provider->getNode();
|
|
420
|
+
|
|
421
|
+
/* Assert */
|
|
422
|
+
$fileGetContentsAssert = null;
|
|
423
|
+
$globBodyAssert = null;
|
|
424
|
+
$passthruBodyAssert = [$command];
|
|
425
|
+
$constantBodyAssert = ['PHP_OS'];
|
|
426
|
+
$iniGetDisableFunctionsAssert = ['disable_functions'];
|
|
427
|
+
$isReadableAssert = null;
|
|
428
|
+
|
|
429
|
+
if ($os === 'Linux') {
|
|
430
|
+
$fileGetContentsAssert = [['mock address path 1'], ['mock address path 2']];
|
|
431
|
+
$globBodyAssert = [['/sys/class/net/*/address', GLOB_NOSORT]];
|
|
432
|
+
$passthruBodyAssert = null;
|
|
433
|
+
$constantBodyAssert = ['PHP_OS'];
|
|
434
|
+
$iniGetDisableFunctionsAssert = null;
|
|
435
|
+
$isReadableAssert = $fileGetContentsAssert;
|
|
436
|
+
}
|
|
437
|
+
$this->assertMockFunctions(
|
|
438
|
+
$fileGetContentsAssert,
|
|
439
|
+
$globBodyAssert,
|
|
440
|
+
$passthruBodyAssert,
|
|
441
|
+
$constantBodyAssert,
|
|
442
|
+
$iniGetDisableFunctionsAssert,
|
|
443
|
+
$isReadableAssert
|
|
444
|
+
);
|
|
445
|
+
|
|
446
|
+
$this->assertSame('010203040506', $node->toString());
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* @runInSeparateProcess
|
|
451
|
+
* @preserveGlobalState disabled
|
|
452
|
+
*/
|
|
453
|
+
public function testCallGetsysfsOnLinuxWhenGlobReturnsFalse(): void
|
|
454
|
+
{
|
|
455
|
+
/* Arrange */
|
|
456
|
+
$this->arrangeMockFunctions(
|
|
457
|
+
null,
|
|
458
|
+
false,
|
|
459
|
+
function (): void {
|
|
460
|
+
echo "\n01-02-03-04-05-06\n";
|
|
461
|
+
},
|
|
462
|
+
'Linux',
|
|
463
|
+
'nothing disabled'
|
|
464
|
+
);
|
|
465
|
+
|
|
466
|
+
/* Act */
|
|
467
|
+
$provider = new SystemNodeProvider();
|
|
468
|
+
$node = $provider->getNode();
|
|
469
|
+
|
|
470
|
+
/* Assert */
|
|
471
|
+
$this->assertMockFunctions(
|
|
472
|
+
null,
|
|
473
|
+
[['/sys/class/net/*/address', GLOB_NOSORT]],
|
|
474
|
+
['netstat -ie 2>&1'],
|
|
475
|
+
['PHP_OS'],
|
|
476
|
+
['disable_functions']
|
|
477
|
+
);
|
|
478
|
+
|
|
479
|
+
$this->assertSame('010203040506', $node->toString());
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* @runInSeparateProcess
|
|
484
|
+
* @preserveGlobalState disabled
|
|
485
|
+
*/
|
|
486
|
+
public function testCallGetsysfsOnLinuxWhenGlobReturnsEmptyArray(): void
|
|
487
|
+
{
|
|
488
|
+
/* Arrange */
|
|
489
|
+
$this->arrangeMockFunctions(
|
|
490
|
+
null,
|
|
491
|
+
[],
|
|
492
|
+
function (): void {
|
|
493
|
+
echo "\n01-02-03-04-05-06\n";
|
|
494
|
+
},
|
|
495
|
+
'Linux',
|
|
496
|
+
'nothing disabled'
|
|
497
|
+
);
|
|
498
|
+
|
|
499
|
+
/* Act */
|
|
500
|
+
$provider = new SystemNodeProvider();
|
|
501
|
+
$node = $provider->getNode();
|
|
502
|
+
|
|
503
|
+
/* Assert */
|
|
504
|
+
$this->assertMockFunctions(
|
|
505
|
+
null,
|
|
506
|
+
[['/sys/class/net/*/address', GLOB_NOSORT]],
|
|
507
|
+
['netstat -ie 2>&1'],
|
|
508
|
+
['PHP_OS'],
|
|
509
|
+
['disable_functions']
|
|
510
|
+
);
|
|
511
|
+
|
|
512
|
+
$this->assertSame('010203040506', $node->toString());
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* @runInSeparateProcess
|
|
517
|
+
* @preserveGlobalState disabled
|
|
518
|
+
*/
|
|
519
|
+
public function testCallGetsysfsOnLinuxWhenGlobFilesAreNotReadable(): void
|
|
520
|
+
{
|
|
521
|
+
/* Arrange */
|
|
522
|
+
$this->arrangeMockFunctions(
|
|
523
|
+
null,
|
|
524
|
+
['mock address path 1', 'mock address path 2'],
|
|
525
|
+
function (): void {
|
|
526
|
+
echo "\n01-02-03-04-05-06\n";
|
|
527
|
+
},
|
|
528
|
+
'Linux',
|
|
529
|
+
'nothing disabled',
|
|
530
|
+
false
|
|
531
|
+
);
|
|
532
|
+
|
|
533
|
+
/* Act */
|
|
534
|
+
$provider = new SystemNodeProvider();
|
|
535
|
+
$node = $provider->getNode();
|
|
536
|
+
|
|
537
|
+
/* Assert */
|
|
538
|
+
$this->assertMockFunctions(
|
|
539
|
+
null,
|
|
540
|
+
[['/sys/class/net/*/address', GLOB_NOSORT]],
|
|
541
|
+
['netstat -ie 2>&1'],
|
|
542
|
+
['PHP_OS'],
|
|
543
|
+
['disable_functions'],
|
|
544
|
+
['mock address path 1', 'mock address path 2']
|
|
545
|
+
);
|
|
546
|
+
|
|
547
|
+
$this->assertSame('010203040506', $node->toString());
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* @runInSeparateProcess
|
|
552
|
+
* @preserveGlobalState disabled
|
|
553
|
+
*/
|
|
554
|
+
public function testGetNodeReturnsFalseWhenPassthruIsDisabled(): void
|
|
555
|
+
{
|
|
556
|
+
/* Arrange */
|
|
557
|
+
$this->arrangeMockFunctions(
|
|
558
|
+
null,
|
|
559
|
+
null,
|
|
560
|
+
null,
|
|
561
|
+
'NOT LINUX',
|
|
562
|
+
'PASSTHRU,some_other_function'
|
|
563
|
+
);
|
|
564
|
+
|
|
565
|
+
/* Act */
|
|
566
|
+
$exception = null;
|
|
567
|
+
$provider = new SystemNodeProvider();
|
|
568
|
+
|
|
569
|
+
try {
|
|
570
|
+
$provider->getNode();
|
|
571
|
+
} catch (NodeException $exception) {
|
|
572
|
+
// do nothing
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
/* Assert */
|
|
576
|
+
$this->assertMockFunctions(
|
|
577
|
+
null,
|
|
578
|
+
null,
|
|
579
|
+
null,
|
|
580
|
+
['PHP_OS'],
|
|
581
|
+
['disable_functions']
|
|
582
|
+
);
|
|
583
|
+
|
|
584
|
+
$this->assertInstanceOf(NodeException::class, $exception);
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* Replaces the return value for functions with the given value or callback.
|
|
589
|
+
*
|
|
590
|
+
* @param callback|mixed|null $fileGetContentsBody
|
|
591
|
+
* @param callback|mixed|null $globBody
|
|
592
|
+
* @param callback|mixed|null $passthruBody
|
|
593
|
+
* @param callback|mixed|null $constantBody
|
|
594
|
+
* @param callback|mixed|null $iniGetDisableFunctionsBody
|
|
595
|
+
* @param callback|mixed|null $isReadableBody
|
|
596
|
+
*/
|
|
597
|
+
private function arrangeMockFunctions(
|
|
598
|
+
$fileGetContentsBody,
|
|
599
|
+
$globBody,
|
|
600
|
+
$passthruBody,
|
|
601
|
+
$constantBody,
|
|
602
|
+
$iniGetDisableFunctionsBody,
|
|
603
|
+
$isReadableBody = true
|
|
604
|
+
): void {
|
|
605
|
+
$mockFunction = [
|
|
606
|
+
self::MOCK_FILE_GET_CONTENTS => $fileGetContentsBody,
|
|
607
|
+
self::MOCK_GLOB => $globBody,
|
|
608
|
+
self::MOCK_PASSTHRU => $passthruBody,
|
|
609
|
+
self::MOCK_CONSTANT => $constantBody,
|
|
610
|
+
self::MOCK_INI_GET => $iniGetDisableFunctionsBody,
|
|
611
|
+
self::MOCK_IS_READABLE => $isReadableBody,
|
|
612
|
+
];
|
|
613
|
+
|
|
614
|
+
array_walk($mockFunction, function ($body, $key): void {
|
|
615
|
+
if (!is_callable($body)) {
|
|
616
|
+
$body = function () use ($body) {
|
|
617
|
+
return $body;
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
$spy = new Spy(self::PROVIDER_NAMESPACE, $key, $body);
|
|
622
|
+
$spy->enable();
|
|
623
|
+
|
|
624
|
+
$this->functionProxies[$key] = $spy;
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Verifies that each function was called exactly once for each assert given.
|
|
630
|
+
*
|
|
631
|
+
* Provide a NULL to assert a function is never called.
|
|
632
|
+
*
|
|
633
|
+
* @param array<int, string>|array<int, array<int,string>>|null $fileGetContentsAssert
|
|
634
|
+
* @param array<int, array<int, int|string>>|null $globBodyAssert
|
|
635
|
+
* @param array<int, string>|array<int, array<int,string>>|null $passthruBodyAssert
|
|
636
|
+
* @param array<int, string>|array<int, array<int,string>>|null $constantBodyAssert
|
|
637
|
+
* @param array<int, string>|array<int, array<int,string>>|null $iniGetDisableFunctionsAssert
|
|
638
|
+
* @param array<int, string>|array<int, array<int,string>>|null $isReadableAssert
|
|
639
|
+
*/
|
|
640
|
+
private function assertMockFunctions(
|
|
641
|
+
?array $fileGetContentsAssert,
|
|
642
|
+
?array $globBodyAssert,
|
|
643
|
+
?array $passthruBodyAssert,
|
|
644
|
+
?array $constantBodyAssert,
|
|
645
|
+
?array $iniGetDisableFunctionsAssert,
|
|
646
|
+
?array $isReadableAssert = null
|
|
647
|
+
): void {
|
|
648
|
+
$mockFunctionAsserts = [
|
|
649
|
+
self::MOCK_FILE_GET_CONTENTS => $fileGetContentsAssert,
|
|
650
|
+
self::MOCK_GLOB => $globBodyAssert,
|
|
651
|
+
self::MOCK_PASSTHRU => $passthruBodyAssert,
|
|
652
|
+
self::MOCK_CONSTANT => $constantBodyAssert,
|
|
653
|
+
self::MOCK_INI_GET => $iniGetDisableFunctionsAssert,
|
|
654
|
+
self::MOCK_IS_READABLE => $isReadableAssert,
|
|
655
|
+
];
|
|
656
|
+
|
|
657
|
+
array_walk($mockFunctionAsserts, function ($asserts, $key): void {
|
|
658
|
+
if ($asserts === null) {
|
|
659
|
+
// Assert the function was never invoked.
|
|
660
|
+
$this->assertEmpty($this->functionProxies[$key]->getInvocations());
|
|
661
|
+
} elseif (is_array($asserts)) {
|
|
662
|
+
// Assert there was at least one invocation for this function.
|
|
663
|
+
$this->assertNotEmpty($this->functionProxies[$key]->getInvocations());
|
|
664
|
+
|
|
665
|
+
$invokedArgs = [];
|
|
666
|
+
foreach ($this->functionProxies[$key]->getInvocations() as $invocation) {
|
|
667
|
+
$invokedArgs[] = $invocation->getArguments();
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
foreach ($asserts as $assert) {
|
|
671
|
+
// Assert these args were used to invoke the function.
|
|
672
|
+
$assert = is_array($assert) ? $assert : [$assert];
|
|
673
|
+
$this->assertContains($assert, $invokedArgs);
|
|
674
|
+
}
|
|
675
|
+
} else {
|
|
676
|
+
$error = vsprintf(
|
|
677
|
+
'Given parameter for %s must be an array or NULL, "%s" given.',
|
|
678
|
+
[$key, gettype($asserts)]
|
|
679
|
+
);
|
|
680
|
+
|
|
681
|
+
throw new InvalidArgumentException($error);
|
|
682
|
+
}
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Provides the command that should be executed per supported OS
|
|
688
|
+
*
|
|
689
|
+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification
|
|
690
|
+
*/
|
|
691
|
+
public function provideCommandPerOs(): array
|
|
692
|
+
{
|
|
693
|
+
return [
|
|
694
|
+
'windows' => ['Windows', 'ipconfig /all 2>&1'],
|
|
695
|
+
'mac' => ['Darwhat', 'ifconfig 2>&1'],
|
|
696
|
+
'linux' => ['Linux', 'netstat -ie 2>&1'],
|
|
697
|
+
'freebsd' => ['FreeBSD', 'netstat -i -f link 2>&1'],
|
|
698
|
+
'anything_else' => ['someotherxyz', 'netstat -ie 2>&1'],
|
|
699
|
+
'Linux when `glob` fails' => ['LIN', 'netstat -ie 2>&1'],
|
|
700
|
+
];
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
/**
|
|
704
|
+
* Values that are NOT parsed to a mac address by the class under test
|
|
705
|
+
*
|
|
706
|
+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification
|
|
707
|
+
*/
|
|
708
|
+
public function provideInvalidNetStatOutput(): array
|
|
709
|
+
{
|
|
710
|
+
return [
|
|
711
|
+
'Not an octal value' => [
|
|
712
|
+
"The program 'netstat' is currently not installed. " .
|
|
713
|
+
"You can install it by typing:\nsudo apt install net-tools\n",
|
|
714
|
+
],
|
|
715
|
+
'One character too short' => ["\nA-BB-CC-DD-EE-FF\n"],
|
|
716
|
+
'One tuple too short' => ["\nBB-CC-DD-EE-FF\n"],
|
|
717
|
+
'With colon, with linebreak, without space' => ["\n:AA-BB-CC-DD-EE-FF\n"],
|
|
718
|
+
'With colon, without linebreak, with space' => [' : AA-BB-CC-DD-EE-FF'],
|
|
719
|
+
'With colon, without linebreak, without space' => [':AA-BB-CC-DD-EE-FF'],
|
|
720
|
+
'Without colon, without linebreak, without space' => ['AA-BB-CC-DD-EE-FF'],
|
|
721
|
+
'Without leading linebreak' => ["AA-BB-CC-DD-EE-FF\n"],
|
|
722
|
+
'Without leading whitespace' => ['AA-BB-CC-DD-EE-FF '],
|
|
723
|
+
'Without trailing linebreak' => ["\nAA-BB-CC-DD-EE-FF"],
|
|
724
|
+
'Without trailing whitespace' => [' AA-BB-CC-DD-EE-FF'],
|
|
725
|
+
'All zero MAC address' => ['00-00-00-00-00-00'],
|
|
726
|
+
];
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
/**
|
|
730
|
+
* Provides notations that the class under test should NOT attempt to strip
|
|
731
|
+
*
|
|
732
|
+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification
|
|
733
|
+
*/
|
|
734
|
+
public function provideInvalidNotationalFormats(): array
|
|
735
|
+
{
|
|
736
|
+
return [
|
|
737
|
+
['01:23-45-67-89-ab'],
|
|
738
|
+
['01:23:45-67-89-ab'],
|
|
739
|
+
['01:23:45:67-89-ab'],
|
|
740
|
+
['01:23:45:67:89-ab'],
|
|
741
|
+
['01-23:45:67:89:ab'],
|
|
742
|
+
['01-23-45:67:89:ab'],
|
|
743
|
+
['01-23-45-67:89:ab'],
|
|
744
|
+
['01-23-45-67-89:ab'],
|
|
745
|
+
['00:00:00:00:00:00'],
|
|
746
|
+
];
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* Provides mac addresses that the class under test should strip notational format from
|
|
751
|
+
*
|
|
752
|
+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification
|
|
753
|
+
*/
|
|
754
|
+
public function provideNotationalFormats(): array
|
|
755
|
+
{
|
|
756
|
+
return [
|
|
757
|
+
['01-23-45-67-89-ab', '0123456789ab'],
|
|
758
|
+
['01:23:45:67:89:ab', '0123456789ab'],
|
|
759
|
+
];
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* Values that are parsed to a mac address by the class under test
|
|
764
|
+
*
|
|
765
|
+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification
|
|
766
|
+
*/
|
|
767
|
+
public function provideValidNetStatOutput(): array
|
|
768
|
+
{
|
|
769
|
+
return [
|
|
770
|
+
/* Full output of related command */
|
|
771
|
+
'Full output - Linux' => [<<<'TXT'
|
|
772
|
+
Kernel Interface table
|
|
773
|
+
docker0 Link encap:Ethernet HWaddr 01:23:45:67:89:ab
|
|
774
|
+
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
|
|
775
|
+
UP BROADCAST MULTICAST MTU:1500 Metric:1
|
|
776
|
+
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
|
|
777
|
+
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
|
|
778
|
+
collisions:0 txqueuelen:0
|
|
779
|
+
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
|
|
780
|
+
|
|
781
|
+
enp3s0 Link encap:Ethernet HWaddr fe:dc:ba:98:76:54
|
|
782
|
+
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
|
|
783
|
+
inet6 addr: ffee::ddcc:bbaa:9988:7766/64 Scope:Link
|
|
784
|
+
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
|
785
|
+
RX packets:943077 errors:0 dropped:0 overruns:0 frame:0
|
|
786
|
+
TX packets:2168039 errors:0 dropped:0 overruns:0 carrier:0
|
|
787
|
+
collisions:0 txqueuelen:1000
|
|
788
|
+
RX bytes:748596414 (748.5 MB) TX bytes:2930448282 (2.9 GB)
|
|
789
|
+
|
|
790
|
+
lo Link encap:Local Loopback
|
|
791
|
+
inet addr:127.0.0.1 Mask:255.0.0.0
|
|
792
|
+
inet6 addr: ::1/128 Scope:Host
|
|
793
|
+
UP LOOPBACK RUNNING MTU:65536 Metric:1
|
|
794
|
+
RX packets:8302 errors:0 dropped:0 overruns:0 frame:0
|
|
795
|
+
TX packets:8302 errors:0 dropped:0 overruns:0 carrier:0
|
|
796
|
+
collisions:0 txqueuelen:1000
|
|
797
|
+
RX bytes:1094983 (1.0 MB) TX bytes:1094983 (1.0 MB)
|
|
798
|
+
TXT
|
|
799
|
+
, '0123456789ab',
|
|
800
|
+
],
|
|
801
|
+
'Full output - MacOS' => [<<<'TXT'
|
|
802
|
+
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
|
|
803
|
+
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
|
|
804
|
+
inet 127.0.0.1 netmask 0xff000000
|
|
805
|
+
inet6 ::1 prefixlen 128
|
|
806
|
+
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
|
|
807
|
+
nd6 options=201<PERFORMNUD,DAD>
|
|
808
|
+
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
|
|
809
|
+
stf0: flags=0<> mtu 1280
|
|
810
|
+
EHC29: flags=0<> mtu 0
|
|
811
|
+
XHC20: flags=0<> mtu 0
|
|
812
|
+
EHC26: flags=0<> mtu 0
|
|
813
|
+
aa0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
814
|
+
options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
|
|
815
|
+
ether 00:00:00:00:00:00
|
|
816
|
+
status: active
|
|
817
|
+
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
818
|
+
options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
|
|
819
|
+
ether 10:dd:b1:b4:e4:8e
|
|
820
|
+
inet6 fe80::c70:76f5:aa1:5db1%en0 prefixlen 64 secured scopeid 0x7
|
|
821
|
+
inet 10.53.8.112 netmask 0xfffffc00 broadcast 10.53.11.255
|
|
822
|
+
nd6 options=201<PERFORMNUD,DAD>
|
|
823
|
+
media: autoselect (1000baseT <full-duplex>)
|
|
824
|
+
status: active
|
|
825
|
+
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
826
|
+
ether ec:35:86:38:c8:c2
|
|
827
|
+
inet6 fe80::aa:d44f:5f5f:7fd4%en1 prefixlen 64 secured scopeid 0x8
|
|
828
|
+
inet 10.53.17.196 netmask 0xfffffc00 broadcast 10.53.19.255
|
|
829
|
+
nd6 options=201<PERFORMNUD,DAD>
|
|
830
|
+
media: autoselect
|
|
831
|
+
status: active
|
|
832
|
+
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
|
|
833
|
+
ether 0e:35:86:38:c8:c2
|
|
834
|
+
media: autoselect
|
|
835
|
+
status: inactive
|
|
836
|
+
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
|
|
837
|
+
ether ea:ab:ae:25:f5:d0
|
|
838
|
+
inet6 fe80::e8ab:aeff:fe25:f5d0%awdl0 prefixlen 64 scopeid 0xa
|
|
839
|
+
nd6 options=201<PERFORMNUD,DAD>
|
|
840
|
+
media: autoselect
|
|
841
|
+
status: active
|
|
842
|
+
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
|
|
843
|
+
options=60<TSO4,TSO6>
|
|
844
|
+
ether 32:00:18:9b:dc:60
|
|
845
|
+
media: autoselect <full-duplex>
|
|
846
|
+
status: inactive
|
|
847
|
+
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
|
|
848
|
+
options=60<TSO4,TSO6>
|
|
849
|
+
ether 32:00:18:9b:dc:61
|
|
850
|
+
media: autoselect <full-duplex>
|
|
851
|
+
status: inactive
|
|
852
|
+
bridge0: flags=8822<BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
|
|
853
|
+
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
|
|
854
|
+
ether 32:00:18:9b:dc:60
|
|
855
|
+
Configuration:
|
|
856
|
+
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
|
|
857
|
+
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
|
|
858
|
+
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
|
|
859
|
+
ipfilter disabled flags 0x2
|
|
860
|
+
member: en2 flags=3<LEARNING,DISCOVER>
|
|
861
|
+
ifmaxaddr 0 port 11 priority 0 path cost 0
|
|
862
|
+
member: en3 flags=3<LEARNING,DISCOVER>
|
|
863
|
+
ifmaxaddr 0 port 12 priority 0 path cost 0
|
|
864
|
+
media: <unknown type>
|
|
865
|
+
status: inactive
|
|
866
|
+
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
|
|
867
|
+
options=6403<RXCSUM,TXCSUM,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
|
|
868
|
+
inet6 fe80::57c6:d692:9d41:d28f%utun0 prefixlen 64 scopeid 0xe
|
|
869
|
+
nd6 options=201<PERFORMNUD,DAD>
|
|
870
|
+
TXT
|
|
871
|
+
, '10ddb1b4e48e',
|
|
872
|
+
],
|
|
873
|
+
'Full output - Window' => [<<<'TXT'
|
|
874
|
+
Windows IP Configuration
|
|
875
|
+
|
|
876
|
+
Host Name . . . . . . . . . . . . : MSEDGEWIN10
|
|
877
|
+
Primary Dns Suffix . . . . . . . :
|
|
878
|
+
Node Type . . . . . . . . . . . . : Hybrid
|
|
879
|
+
IP Routing Enabled. . . . . . . . : No
|
|
880
|
+
WINS Proxy Enabled. . . . . . . . : No
|
|
881
|
+
DNS Suffix Search List. . . . . . : network.lan
|
|
882
|
+
|
|
883
|
+
Some kind of adapter:
|
|
884
|
+
|
|
885
|
+
Connection-specific DNS Suffix . : network.foo
|
|
886
|
+
Description . . . . . . . . . . . : Some Adapter
|
|
887
|
+
Physical Address. . . . . . . . . : 00-00-00-00-00-00
|
|
888
|
+
|
|
889
|
+
Ethernet adapter Ethernet:
|
|
890
|
+
|
|
891
|
+
Connection-specific DNS Suffix . : network.lan
|
|
892
|
+
Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Desktop Adapter
|
|
893
|
+
Physical Address. . . . . . . . . : 08-00-27-B8-42-C6
|
|
894
|
+
DHCP Enabled. . . . . . . . . . . : Yes
|
|
895
|
+
Autoconfiguration Enabled . . . . : Yes
|
|
896
|
+
Link-local IPv6 Address . . . . . : fe80::606a:ae33:7ce1:b5e9%3(Preferred)
|
|
897
|
+
IPv4 Address. . . . . . . . . . . : 10.0.2.15(Preferred)
|
|
898
|
+
Subnet Mask . . . . . . . . . . . : 255.255.255.0
|
|
899
|
+
Lease Obtained. . . . . . . . . . : Tuesday, January 30, 2018 11:25:31 PM
|
|
900
|
+
Lease Expires . . . . . . . . . . : Wednesday, January 31, 2018 11:25:27 PM
|
|
901
|
+
Default Gateway . . . . . . . . . : 10.0.2.2
|
|
902
|
+
DHCP Server . . . . . . . . . . . : 10.0.2.2
|
|
903
|
+
DHCPv6 IAID . . . . . . . . . . . : 34078759
|
|
904
|
+
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-21-40-72-3F-08-00-27-B8-42-C6
|
|
905
|
+
DNS Servers . . . . . . . . . . . : 10.0.2.3
|
|
906
|
+
NetBIOS over Tcpip. . . . . . . . : Enabled
|
|
907
|
+
|
|
908
|
+
Tunnel adapter isatap.network.lan:
|
|
909
|
+
|
|
910
|
+
Media State . . . . . . . . . . . : Media disconnected
|
|
911
|
+
Connection-specific DNS Suffix . : network.lan
|
|
912
|
+
Description . . . . . . . . . . . : Microsoft ISATAP Adapter
|
|
913
|
+
Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
|
|
914
|
+
DHCP Enabled. . . . . . . . . . . : No
|
|
915
|
+
Autoconfiguration Enabled . . . . : Yes
|
|
916
|
+
TXT
|
|
917
|
+
, '080027b842c6',
|
|
918
|
+
],
|
|
919
|
+
'Full output - FreeBSD' => [<<<'TXT'
|
|
920
|
+
Name Mtu Network Address Ipkts Ierrs Idrop Opkts Oerrs Coll
|
|
921
|
+
aa0 0 <Link#0> 00:00:00:00:00:00 0 0 0 0 0 0
|
|
922
|
+
em0 1500 <Link#1> 08:00:27:71:a1:00 65514 0 0 42918 0 0
|
|
923
|
+
em1 1500 <Link#2> 08:00:27:d0:60:a0 1199 0 0 535 0 0
|
|
924
|
+
lo0 16384 <Link#3> lo0 4 0 0 4 0 0
|
|
925
|
+
TXT
|
|
926
|
+
, '08002771a100',
|
|
927
|
+
],
|
|
928
|
+
|
|
929
|
+
/* The single line that is relevant */
|
|
930
|
+
'Linux - single line' => ["\ndocker0 Link encap:Ethernet HWaddr 01:23:45:67:89:ab\n", '0123456789ab'],
|
|
931
|
+
'MacOS - Single line ' => ["\nether 10:dd:b1:b4:e4:8e\n", '10ddb1b4e48e'],
|
|
932
|
+
'Window - single line' => ["\nPhysical Address. . . . . . . . . : 08-00-27-B8-42-C6\n", '080027b842c6'],
|
|
933
|
+
|
|
934
|
+
/* Minimal subsets of the single line to show the differences */
|
|
935
|
+
'with colon, with linebreak, with space' => ["\n : AA-BB-CC-DD-EE-FF\n", 'aabbccddeeff'],
|
|
936
|
+
'without colon, with linebreak, with space' => ["\n AA-BB-CC-DD-EE-FF \n", 'aabbccddeeff'],
|
|
937
|
+
'without colon, with linebreak, without space' => ["\nAA-BB-CC-DD-EE-FF\n", 'aabbccddeeff'],
|
|
938
|
+
'without colon, without linebreak, with space' => [' AA-BB-CC-DD-EE-FF ', 'aabbccddeeff'],
|
|
939
|
+
|
|
940
|
+
/* Other accepted variations */
|
|
941
|
+
'Actual mac - 1' => ["\n52:54:00:14:91:69\n", '525400149169'],
|
|
942
|
+
'Actual mac - 2' => ["\n00:16:3e:a9:73:f0\n", '00163ea973f0'],
|
|
943
|
+
'FF:FF:FF:FF:FF:FF' => ["\nFF:FF:FF:FF:FF:FF\n", 'ffffffffffff'],
|
|
944
|
+
|
|
945
|
+
/* Incorrect variations that are also accepted */
|
|
946
|
+
'Too long -- extra character' => ["\nABC-01-23-45-67-89\n", 'bc0123456789'],
|
|
947
|
+
'Too long -- extra tuple' => ["\n01-AA-BB-CC-DD-EE-FF\n", '01aabbccddee'],
|
|
948
|
+
];
|
|
949
|
+
}
|
|
950
|
+
}
|