diff --git a/.codacy.yml b/.codacy.yml deleted file mode 100644 index a44432b..0000000 --- a/.codacy.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -exclude_paths: - - '*.md' - - '**/tests/**' diff --git a/.gitattributes b/.gitattributes index 28e0dea..6ac0710 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,9 +2,9 @@ # https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html # Ignore all test and documentation with "export-ignore". -/.gitattributes export-ignore -/.gitignore export-ignore -/phpunit.xml.dist export-ignore -/.styleci.yml export-ignore -/tests export-ignore -/.editorconfig export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore +/phpunit.xml.dist export-ignore +/.styleci.yml export-ignore +/tests export-ignore +/.editorconfig export-ignore diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 547e061..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: codedge diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index e843796..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,29 +0,0 @@ -version: 2 - -updates: - - # Update to composer packages - - package-ecosystem: "composer" - commit-message: - include: "scope" - prefix: "composer" - directory: "/" - labels: - - "dependency" - open-pull-requests-limit: 10 - schedule: - interval: "daily" - versioning-strategy: "increase" - - # Workflow files stored in the - - package-ecosystem: "github-actions" - commit-message: - include: "scope" - prefix: "github-actions" - # default location of `.github/workflows` - directory: "/" - labels: - - "dependency" - open-pull-requests-limit: 10 - schedule: - interval: "daily" \ No newline at end of file diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml deleted file mode 100644 index 51412ff..0000000 --- a/.github/workflows/auto-merge.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Auto merge - -on: - workflow_run: - types: - - completed - workflows: - - 'Tests' - -jobs: - merge-me: - name: Auto merge - - runs-on: ubuntu-latest - - steps: - - name: Auto merge - if: ${{ github.event.workflow_run.conclusion == 'success' }} - uses: ridedott/merge-me-action@v2 - with: - # Depending on branch protection rules, a manually populated - # `GITHUB_TOKEN_WORKAROUND` secret with permissions to push to - # a protected branch must be used. - # - # When using a custom token, it is recommended to leave the following - # comment for other developers to be aware of the reasoning behind it: - # - # This must be used as GitHub Actions token does not support pushing - # to protected branches. - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PRESET: DEPENDABOT_MINOR diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index 2a8f2e3..0000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Tests -on: [push] -jobs: - run: - runs-on: ubuntu-latest - strategy: - matrix: - php: ['8.1', '8.2'] - laravel: [10.*] - dependency-version: [prefer-stable] - include: - - laravel: 10.* - testbench: 8.* - name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@2.27.0 - with: - php-version: ${{ matrix.php }} - extensions: mbstring, intl, json, zip - coverage: xdebug - - - name: Get Composer Cache Directory - id: composer-cache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" - - - name: Cache dependencies - uses: actions/cache@v3 - with: - path: ~/.composer/cache/files - key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} - - - name: Install dependencies - run: | - composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update - composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction - env: - APP_ENV: testing - - - name: Run PHPStan - run: ./vendor/bin/phpstan - - - name: Run tests - run: ./vendor/bin/phpunit - env: - APP_ENV: testing - - - uses: codecov/codecov-action@v3 - name: Push coverage to codecov - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: ./clover.xml - flags: unittests - name: codecov-umbrella - fail_ci_if_error: true diff --git a/.gitignore b/.gitignore index 97b99ee..ff1ef40 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ build clover.xml -composer.lock vendor .phpunit.result.cache diff --git a/.styleci.yml b/.styleci.yml deleted file mode 100644 index b27b2c2..0000000 --- a/.styleci.yml +++ /dev/null @@ -1,6 +0,0 @@ -preset: recommended -risky: true -version: 8.0 -enabled: - - declare_strict_types - - no_superfluous_phpdoc_tags diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index eab57ce..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,14 +0,0 @@ -# Contributing - -Contributions are welcome, and are accepted via pull requests. -Please review these guidelines before submitting any pull requests. - -- Please follow the [PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) - and [PHP-FIG Naming Conventions](https://github.com/php-fig/fig-standards/blob/master/bylaws/002-psr-naming-conventions.md). -- Remember to follow [SemVer](http://semver.org). If you are changing the behavior, - or the public api, you may need to update the docs. -- Make sure that the current tests pass, and if you have added something new, add the tests where relevant. -- Send a coherent commit history, making sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash](http://git-scm.com/book/en/Git-Tools-Rewriting-History) them before submitting. -- You may also need to [rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) to avoid merge conflicts. - -StyleCI is set up to automatically check and fix any code style issues. diff --git a/README.md b/README.md index 796d042..87592af 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,5 @@ # Laravel Application Self-Updater -[![Latest Stable Version](https://poser.pugx.org/codedge/laravel-selfupdater/v/stable?format=flat-square)](https://packagist.org/packages/codedge/laravel-selfupdater) -[![Total Downloads](https://poser.pugx.org/codedge/laravel-selfupdater/downloads?format=flat-square)](https://packagist.org/packages/codedge/laravel-selfupdater) -[![](https://github.com/codedge/laravel-selfupdater/workflows/Tests/badge.svg)](https://github.com/codedge/laravel-selfupdater/actions) -[![StyleCI](https://styleci.io/repos/64463948/shield)](https://styleci.io/repos/64463948) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/dd836e58656b4e25b34b2a4ac8197142)](https://www.codacy.com/app/codedge/laravel-selfupdater?utm_source=github.com&utm_medium=referral&utm_content=codedge/laravel-selfupdater) -[![codecov](https://codecov.io/gh/codedge/laravel-selfupdater/branch/master/graph/badge.svg)](https://codecov.io/gh/codedge/laravel-selfupdater) - This package provides some basic methods to implement a self updating functionality for your Laravel application. @@ -18,14 +11,14 @@ functionality for your Laravel application. - Http-based archives Usually you need this when distributing a self-hosted Laravel application -that needs some updating mechanism without [Composer](https://getcomposer.org/). +that needs some updating mechanism without Composer. ## Install -To install the latest version from the master using [Composer](https://getcomposer.org/): +To install the latest version from the master using Composer: ```sh -$ composer require codedge/laravel-selfupdater +$ composer require qopiku/laravel-selfupdater ``` ## Configuration @@ -33,7 +26,7 @@ $ composer require codedge/laravel-selfupdater After installing the package you need to publish the configuration file via ```sh -$ php artisan vendor:publish --provider="Codedge\Updater\UpdaterServiceProvider" +$ php artisan vendor:publish --provider="Qopiku\Updater\UpdaterServiceProvider" ``` **Note:** Please enter correct value for vendor and repository name in your `config/self-updater.php` if you want to use Github as source for your updates. @@ -111,11 +104,9 @@ a `private_access_token` field, where you can set the token. To start an update process, i. e. in a controller, just use: ```php -Route::get('/', function (\Codedge\Updater\UpdaterManager $updater) { - +Route::get('/', function (\Qopiku\Updater\UpdaterManager $updater) { // Check if new version is available if($updater->source()->isNewVersionAvailable()) { - // Get the current installed version echo $updater->source()->getVersionInstalled(); @@ -127,11 +118,9 @@ Route::get('/', function (\Codedge\Updater\UpdaterManager $updater) { // Run the update process $updater->source()->update($release); - } else { echo "No new version available."; } - }); ``` @@ -152,7 +141,7 @@ This is the default. Updates will be fetched by using a tagged commit, aka relea #### Branch-based updates -Select the branch that should be used via the `use_branch` setting [inside the configuration](https://github.com/codedge/laravel-selfupdater/blob/master/config/self-update.php). +Select the branch that should be used via the `use_branch` setting [inside the configuration](https://github.com/qopiku/laravel-selfupdater/blob/master/config/self-update.php). ```php // ... diff --git a/composer.json b/composer.json index 966e629..643b577 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "codedge/laravel-selfupdater", + "name": "qopiku/laravel-selfupdater", "description": "Providing an auto-updating functionality for your self-hosted Laravel application.", "license": "MIT", "keywords": [ @@ -21,31 +21,22 @@ } ], "support": { - "issues": "https://github.com/codedge/laravel-selfupdater/issues", - "source": "https://github.com/codedge/laravel-selfupdater" + "issues": "https://github.com/qopiku/laravel-selfupdater/issues", + "source": "https://github.com/qopiku/laravel-selfupdater" }, "require": { "php": "^8.1", "ext-json": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^7.5.0", - "illuminate/support": "^10", - "league/uri": "~6.7 || ~6.8", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan-phpunit": "^1.2" - }, - "require-dev": { - "dg/bypass-finals": "^1.4", - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^1.5", - "orchestra/testbench": "^8.1", - "phpunit/phpunit": "^9.5.26" + "guzzlehttp/guzzle": "^7.2", + "illuminate/support": "^10.0", + "league/uri": "^7.0" }, "minimum-stability": "dev", "prefer-stable": true, "autoload": { "psr-4": { - "Codedge\\Updater\\": "src/" + "Qopiku\\Updater\\": "src/" }, "files": [ "src/helpers.php" @@ -53,29 +44,23 @@ }, "autoload-dev": { "psr-4": { - "Codedge\\Updater\\Tests\\": "tests/" + "Qopiku\\Updater\\Tests\\": "tests/" } }, "config": { "allow-plugins": { - "ergebnis/composer-normalize": true, - "phpstan/extension-installer": true + "ergebnis/composer-normalize": true }, "sort-packages": true }, "extra": { "laravel": { "aliases": { - "Updater": "Codedge\\Updater\\UpdaterFacade" + "Updater": "Qopiku\\Updater\\UpdaterFacade" }, "providers": [ - "Codedge\\Updater\\UpdaterServiceProvider" + "Qopiku\\Updater\\UpdaterServiceProvider" ] } - }, - "scripts": { - "phpstan": "./vendor/bin/phpstan", - "test": "./vendor/bin/phpunit", - "test-coverage": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --coverage-html=build/coverage-html" } } diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..a106f33 --- /dev/null +++ b/composer.lock @@ -0,0 +1,1885 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "ef197af977a9f0f261c71d304bc7c127", + "packages": [ + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:35:24+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:19:20+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:05:35+00:00" + }, + { + "name": "illuminate/collections", + "version": "v10.45.1", + "source": { + "type": "git", + "url": "https://github.com/illuminate/collections.git", + "reference": "04c24117515ab9b701e4b28506d3f3c15d14bd5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/collections/zipball/04c24117515ab9b701e4b28506d3f3c15d14bd5f", + "reference": "04c24117515ab9b701e4b28506d3f3c15d14bd5f", + "shasum": "" + }, + "require": { + "illuminate/conditionable": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/macroable": "^10.0", + "php": "^8.1" + }, + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^6.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Collections package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-02-13T21:55:58+00:00" + }, + { + "name": "illuminate/conditionable", + "version": "v10.45.1", + "source": { + "type": "git", + "url": "https://github.com/illuminate/conditionable.git", + "reference": "d0958e4741fc9d6f516a552060fd1b829a85e009" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/conditionable/zipball/d0958e4741fc9d6f516a552060fd1b829a85e009", + "reference": "d0958e4741fc9d6f516a552060fd1b829a85e009", + "shasum": "" + }, + "require": { + "php": "^8.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Conditionable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2023-02-03T08:06:17+00:00" + }, + { + "name": "illuminate/contracts", + "version": "v10.45.1", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", + "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", + "shasum": "" + }, + "require": { + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/simple-cache": "^1.0|^2.0|^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-01-15T18:52:32+00:00" + }, + { + "name": "illuminate/macroable", + "version": "v10.45.1", + "source": { + "type": "git", + "url": "https://github.com/illuminate/macroable.git", + "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/dff667a46ac37b634dcf68909d9d41e94dc97c27", + "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Macroable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2023-06-05T12:46:42+00:00" + }, + { + "name": "illuminate/support", + "version": "v10.45.1", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "ef80b6c0d0faec648d0625f1bd2b604b61cba5e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/ef80b6c0d0faec648d0625f1bd2b604b61cba5e5", + "reference": "ef80b6c0d0faec648d0625f1bd2b604b61cba5e5", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^2.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-mbstring": "*", + "illuminate/collections": "^10.0", + "illuminate/conditionable": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/macroable": "^10.0", + "nesbot/carbon": "^2.67", + "php": "^8.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (^10.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.0.2).", + "ramsey/uuid": "Required to use Str::uuid() (^4.7).", + "symfony/process": "Required to use the composer class (^6.2).", + "symfony/uid": "Required to use Str::ulid() (^6.2).", + "symfony/var-dumper": "Required to use the dd function (^6.2).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Support package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-02-16T10:04:27+00:00" + }, + { + "name": "league/uri", + "version": "7.4.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5", + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.3", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.4.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2023-12-01T06:24:25+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.4.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3", + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2023-11-24T15:40:42+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.72.3", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2024-01-25T10:35:09+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "637c51191b6b184184bbf98937702bcf554f7d04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", + "reference": "637c51191b6b184184bbf98937702bcf554f7d04", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T13:11:52+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "06450585bf65e978026bda220cdebca3f867fde7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-26T14:02:43+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.1", + "ext-json": "*", + "ext-zip": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/config/self-update.php b/config/self-update.php index e613195..10e47e5 100644 --- a/config/self-update.php +++ b/config/self-update.php @@ -1,7 +1,5 @@ [ 'github' => [ - 'type' => 'github', - 'repository_vendor' => env('SELF_UPDATER_REPO_VENDOR', ''), - 'repository_name' => env('SELF_UPDATER_REPO_NAME', ''), - 'repository_url' => '', - 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), + 'type' => 'github', + 'repository_vendor' => env('SELF_UPDATER_REPO_VENDOR', ''), + 'repository_name' => env('SELF_UPDATER_REPO_NAME', ''), + 'repository_url' => '', + 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), 'private_access_token' => env('SELF_UPDATER_GITHUB_PRIVATE_ACCESS_TOKEN', ''), - 'use_branch' => env('SELF_UPDATER_USE_BRANCH', ''), + 'use_branch' => env('SELF_UPDATER_USE_BRANCH', ''), ], 'gitlab' => [ - 'base_url' => '', - 'type' => 'gitlab', - 'repository_id' => env('SELF_UPDATER_REPO_URL', ''), - 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), + 'base_url' => '', + 'type' => 'gitlab', + 'repository_id' => env('SELF_UPDATER_REPO_URL', ''), + 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), 'private_access_token' => env('SELF_UPDATER_GITLAB_PRIVATE_ACCESS_TOKEN', ''), ], 'http' => [ - 'type' => 'http', - 'repository_url' => env('SELF_UPDATER_REPO_URL', ''), - 'pkg_filename_format' => env('SELF_UPDATER_PKG_FILENAME_FORMAT', 'v_VERSION_'), - 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), + 'type' => 'http', + 'repository_url' => env('SELF_UPDATER_REPO_URL', ''), + 'pkg_filename_format' => env('SELF_UPDATER_PKG_FILENAME_FORMAT', 'v_VERSION_'), + 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), 'private_access_token' => env('SELF_UPDATER_HTTP_PRIVATE_ACCESS_TOKEN', ''), ], 'gitea' => [ - 'type' => 'gitea', - 'repository_vendor' => env('SELF_UPDATER_REPO_VENDOR', ''), - 'gitea_url' => env('SELF_UPDATER_GITEA_URL', ''), - 'repository_name' => env('SELF_UPDATER_REPO_NAME', ''), - 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), + 'type' => 'gitea', + 'repository_vendor' => env('SELF_UPDATER_REPO_VENDOR', ''), + 'gitea_url' => env('SELF_UPDATER_GITEA_URL', ''), + 'repository_name' => env('SELF_UPDATER_REPO_NAME', ''), + 'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'), 'private_access_token' => env('SELF_UPDATER_GITEA_PRIVATE_ACCESS_TOKEN', ''), ], ], @@ -131,26 +129,26 @@ 'notifications' => [ 'notifications' => [ - \Codedge\Updater\Notifications\Notifications\UpdateSucceeded::class => ['mail'], - \Codedge\Updater\Notifications\Notifications\UpdateFailed::class => ['mail'], - \Codedge\Updater\Notifications\Notifications\UpdateAvailable::class => ['mail'], + \Qopiku\Updater\Notifications\Notifications\UpdateSucceeded::class => ['mail'], + \Qopiku\Updater\Notifications\Notifications\UpdateFailed::class => ['mail'], + \Qopiku\Updater\Notifications\Notifications\UpdateAvailable::class => ['mail'], ], /* * Here you can specify the notifiable to which the notifications should be sent. The default * notifiable will use the variables specified in this config file. */ - 'notifiable' => \Codedge\Updater\Notifications\Notifiable::class, + 'notifiable' => \Qopiku\Updater\Notifications\Notifiable::class, 'mail' => [ 'to' => [ 'address' => env('SELF_UPDATER_MAILTO_ADDRESS', 'notifications@example.com'), - 'name' => env('SELF_UPDATER_MAILTO_NAME', ''), + 'name' => env('SELF_UPDATER_MAILTO_NAME', ''), ], 'from' => [ 'address' => env('SELF_UPDATER_MAIL_FROM_ADDRESS', 'updater@example.com'), - 'name' => env('SELF_UPDATER_MAIL_FROM_NAME', 'Update'), + 'name' => env('SELF_UPDATER_MAIL_FROM_NAME', 'Update'), ], ], ], @@ -168,9 +166,7 @@ // 'params' => [] //] ], - 'post_update' => [ - - ], + 'post_update' => [], ], ]; diff --git a/phpstan.neon.dist b/phpstan.neon.dist deleted file mode 100644 index 4bdbf02..0000000 --- a/phpstan.neon.dist +++ /dev/null @@ -1,6 +0,0 @@ -parameters: - level: 5 - paths: - - src - - config - - tests diff --git a/phpunit.xml.dist b/phpunit.xml.dist deleted file mode 100644 index dc1f1a7..0000000 --- a/phpunit.xml.dist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - src/ - - - - - - - - - - - tests - - - - diff --git a/src/Commands/CheckForUpdate.php b/src/Commands/CheckForUpdate.php index dda035c..23c1970 100644 --- a/src/Commands/CheckForUpdate.php +++ b/src/Commands/CheckForUpdate.php @@ -1,11 +1,9 @@ storagePath = $storagePath; - if (!File::exists($this->storagePath)) { + if (! File::exists($this->storagePath)) { File::makeDirectory($this->storagePath, 493, true, true); } @@ -79,7 +77,7 @@ public function setStoragePath(string $storagePath): self */ public function updateStoragePath(): self { - if (!empty($this->getRelease())) { + if (! empty($this->getRelease())) { $this->storagePath = Str::finish($this->storagePath, DIRECTORY_SEPARATOR).$this->getRelease(); return $this; @@ -94,7 +92,7 @@ public function getUpdatePath(): ?Finder } /** - * @param array $excluded + * @param array $excluded */ public function setUpdatePath(string $updatePath, array $excluded = []): self { @@ -129,7 +127,7 @@ public function setDownloadUrl(string $downloadUrl): self public function extract(bool $deleteSource = true): bool { - if (!File::exists($this->getStoragePath())) { + if (! File::exists($this->getStoragePath())) { throw ReleaseException::archiveFileNotFound($this->getStoragePath()); } @@ -180,11 +178,11 @@ public function download(): Response } return Http::withHeaders($headers) - ->withOptions([ - 'sink' => $this->getStoragePath(), - ]) - ->timeout(config('self-update.download_timeout') ?? 400) - ->get($this->getDownloadUrl()); + ->withOptions([ + 'sink' => $this->getStoragePath(), + ]) + ->timeout(config('self-update.download_timeout') ?? 400) + ->get($this->getDownloadUrl()); } /** @@ -202,7 +200,7 @@ protected function createReleaseFolder(): bool createFolderFromFile($this->getStoragePath()).now()->toDateString() ); - if (!$moved) { + if (! $moved) { return false; } @@ -226,14 +224,14 @@ public function isSourceAlreadyFetched(): bool $extractionDir = createFolderFromFile($this->getStoragePath()); // Check if source archive is (probably) deleted but extracted folder is there. - if (!File::exists($this->getStoragePath()) + if (! File::exists($this->getStoragePath()) && File::exists($extractionDir)) { return true; } // Check if source archive is there but not extracted if (File::exists($this->getStoragePath()) - && !File::exists($extractionDir)) { + && ! File::exists($extractionDir)) { return true; } diff --git a/src/Models/UpdateExecutor.php b/src/Models/UpdateExecutor.php index 07e0088..79d4caf 100644 --- a/src/Models/UpdateExecutor.php +++ b/src/Models/UpdateExecutor.php @@ -1,15 +1,13 @@ in($folder) - ->exclude(config('self-update.exclude_folders')) - ->ignoreDotFiles(false) - ->files(); + ->exclude(config('self-update.exclude_folders')) + ->ignoreDotFiles(false) + ->files(); collect($files)->each(function (SplFileInfo $file) { if ($file->getRealPath()) { @@ -103,7 +101,7 @@ private function moveFolders(string $folder): void })); $sorted->each(function (SplFileInfo $directory) { - if (!dirsIntersect(File::directories($directory->getRealPath()), config('self-update.exclude_folders'))) { + if (! dirsIntersect(File::directories($directory->getRealPath()), config('self-update.exclude_folders'))) { File::copyDirectory( $directory->getRealPath(), Str::finish($this->basePath, DIRECTORY_SEPARATOR).Str::finish($directory->getRelativePath(), DIRECTORY_SEPARATOR).$directory->getBasename() diff --git a/src/Notifications/BaseNotification.php b/src/Notifications/BaseNotification.php index c400d06..5695caa 100644 --- a/src/Notifications/BaseNotification.php +++ b/src/Notifications/BaseNotification.php @@ -1,8 +1,6 @@ release = resolve(Release::class); $this->release->setStoragePath(Str::finish($this->config['download_path'], DIRECTORY_SEPARATOR)) - ->setUpdatePath(base_path(), config('self-update.exclude_folders')) - ->setAccessToken($this->config['private_access_token']); + ->setUpdatePath(base_path(), config('self-update.exclude_folders')) + ->setAccessToken($this->config['private_access_token']); $this->release->setAccessTokenPrefix('token '); $this->updateExecutor = $updateExecutor; @@ -52,14 +52,14 @@ public function isNewVersionAvailable(string $currentVersion = ''): bool { $version = $currentVersion ?: $this->getVersionInstalled(); - if (!$version) { + if (! $version) { throw VersionException::versionInstalledNotFound(); } $versionAvailable = $this->getVersionAvailable(); if (version_compare($version, $versionAvailable, '<')) { - if (!$this->versionFileExists()) { + if (! $this->versionFileExists()) { $this->setVersionFile($versionAvailable); } event(new UpdateAvailable($versionAvailable)); @@ -79,8 +79,8 @@ public function getVersionInstalled(): string * Get the latest version that has been published in a certain repository. * Example: 2.6.5 or v2.6.5. * - * @param string $prepend Prepend a string to the latest version - * @param string $append Append a string to the latest version + * @param string $prepend Prepend a string to the latest version + * @param string $append Append a string to the latest version * * @throws Exception */ @@ -121,11 +121,11 @@ public function fetch(string $version = ''): Release $downloadUrl = $this->config['gitea_url'].$url; $this->release->setVersion($release->tag_name) - ->setRelease($release->tag_name.'.zip') - ->updateStoragePath() - ->setDownloadUrl($downloadUrl); + ->setRelease($release->tag_name.'.zip') + ->updateStoragePath() + ->setDownloadUrl($downloadUrl); - if (!$this->release->isSourceAlreadyFetched()) { + if (! $this->release->isSourceAlreadyFetched()) { $this->release->download(); $this->release->extract(); } @@ -137,7 +137,7 @@ public function selectRelease(Collection $collection, string $version) { $release = $collection->first(); - if (!empty($version)) { + if (! empty($version)) { if ($collection->contains('tag_name', $version)) { $release = $collection->where('tag_name', $version)->first(); } else { diff --git a/src/SourceRepositoryTypes/GithubRepositoryType.php b/src/SourceRepositoryTypes/GithubRepositoryType.php index df6eaed..4ffd40c 100644 --- a/src/SourceRepositoryTypes/GithubRepositoryType.php +++ b/src/SourceRepositoryTypes/GithubRepositoryType.php @@ -1,19 +1,17 @@ config['use_branch']); + return ! empty($this->config['use_branch']); } public function getVersionInstalled(): string @@ -74,14 +73,14 @@ public function isNewVersionAvailable(string $currentVersion = ''): bool { $version = $currentVersion ?: $this->getVersionInstalled(); - if (!$version) { + if (! $version) { throw VersionException::versionInstalledNotFound(); } $versionAvailable = $this->getVersionAvailable(); //@phpstan-ignore-line if (version_compare($version, $versionAvailable, '<')) { - if (!$this->versionFileExists()) { + if (! $this->versionFileExists()) { $this->setVersionFile($versionAvailable); } event(new UpdateAvailable($versionAvailable)); diff --git a/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubBranchType.php b/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubBranchType.php index 1f85ecb..6f4e3e4 100644 --- a/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubBranchType.php +++ b/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubBranchType.php @@ -1,14 +1,7 @@ release = resolve(Release::class); $this->release->setStoragePath(Str::finish($this->config['download_path'], DIRECTORY_SEPARATOR)) - ->setUpdatePath(base_path(), config('self-update.exclude_folders')) - ->setAccessToken($this->config['private_access_token']); + ->setUpdatePath(base_path(), config('self-update.exclude_folders')) + ->setAccessToken($this->config['private_access_token']); } public function fetch(string $version = ''): Release @@ -50,11 +49,11 @@ public function fetch(string $version = ''): Release $release = $this->selectRelease($releases, $version); $this->release->setVersion($release->commit->author->date) - ->setRelease($release->sha.'.zip') - ->updateStoragePath() - ->setDownloadUrl($this->generateArchiveUrl($release->sha)); + ->setRelease($release->sha.'.zip') + ->updateStoragePath() + ->setDownloadUrl($this->generateArchiveUrl($release->sha)); - if (!$this->release->isSourceAlreadyFetched()) { + if (! $this->release->isSourceAlreadyFetched()) { $this->release->download(); $this->release->extract(); } @@ -66,7 +65,7 @@ public function selectRelease(Collection $collection, string $version) { $release = $collection->first(); - if (!empty($version)) { + if (! empty($version)) { if ($collection->contains('commit.author.date', $version)) { $release = $collection->where('commit.author.date', $version)->first(); } else { diff --git a/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubTagType.php b/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubTagType.php index 5d292df..e8f3a1f 100644 --- a/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubTagType.php +++ b/src/SourceRepositoryTypes/GithubRepositoryTypes/GithubTagType.php @@ -1,14 +1,7 @@ release = resolve(Release::class); $this->release->setStoragePath(Str::finish($this->config['download_path'], DIRECTORY_SEPARATOR)) - ->setUpdatePath(base_path(), config('self-update.exclude_folders')) - ->setAccessToken($this->config['private_access_token']); + ->setUpdatePath(base_path(), config('self-update.exclude_folders')) + ->setAccessToken($this->config['private_access_token']); } /** * Get the latest version that has been published in a certain repository. * Example: 2.6.5 or v2.6.5. * - * @param string $prepend Prepend a string to the latest version - * @param string $append Append a string to the latest version + * @param string $prepend Prepend a string to the latest version + * @param string $append Append a string to the latest version * * @throws Exception */ @@ -78,11 +76,11 @@ public function fetch(string $version = ''): Release $release = $this->selectRelease($releases, $version); $this->release->setVersion($release->tag_name) - ->setRelease($release->tag_name.'.zip') - ->updateStoragePath() - ->setDownloadUrl($release->zipball_url); + ->setRelease($release->tag_name.'.zip') + ->updateStoragePath() + ->setDownloadUrl($release->zipball_url); - if (!$this->release->isSourceAlreadyFetched()) { + if (! $this->release->isSourceAlreadyFetched()) { $this->release->download(); $this->release->extract(); } @@ -94,7 +92,7 @@ public function selectRelease(Collection $collection, string $version) { $release = $collection->first(); - if (!empty($version)) { + if (! empty($version)) { if ($collection->contains('tag_name', $version)) { $release = $collection->where('tag_name', $version)->first(); } else { diff --git a/src/SourceRepositoryTypes/GitlabRepositoryType.php b/src/SourceRepositoryTypes/GitlabRepositoryType.php index 9648093..7ccfa04 100644 --- a/src/SourceRepositoryTypes/GitlabRepositoryType.php +++ b/src/SourceRepositoryTypes/GitlabRepositoryType.php @@ -1,16 +1,7 @@ release = resolve(Release::class); $this->release->setStoragePath(Str::finish($this->config['download_path'], DIRECTORY_SEPARATOR)) - ->setUpdatePath(base_path(), config('self-update.exclude_folders')) - ->setAccessToken($this->config['private_access_token']); + ->setUpdatePath(base_path(), config('self-update.exclude_folders')) + ->setAccessToken($this->config['private_access_token']); $this->updateExecutor = $updateExecutor; } @@ -51,14 +51,14 @@ public function isNewVersionAvailable(string $currentVersion = ''): bool { $version = $currentVersion ?: $this->getVersionInstalled(); - if (!$version) { + if (! $version) { throw VersionException::versionInstalledNotFound(); } $versionAvailable = $this->getVersionAvailable(); if (version_compare($version, $versionAvailable, '<')) { - if (!$this->versionFileExists()) { + if (! $this->versionFileExists()) { $this->setVersionFile($versionAvailable); } event(new UpdateAvailable($versionAvailable)); @@ -78,8 +78,8 @@ public function getVersionInstalled(): string * Get the latest version that has been published in a certain repository. * Example: 2.6.5 or v2.6.5. * - * @param string $prepend Prepend a string to the latest version - * @param string $append Append a string to the latest version + * @param string $prepend Prepend a string to the latest version + * @param string $append Append a string to the latest version * * @throws Exception */ @@ -117,11 +117,11 @@ public function fetch(string $version = ''): Release $release = $this->selectRelease($releases, $version); $this->release->setVersion($release->tag_name) - ->setRelease($release->tag_name.'.zip') - ->updateStoragePath() - ->setDownloadUrl($release->assets->sources[0]->url); + ->setRelease($release->tag_name.'.zip') + ->updateStoragePath() + ->setDownloadUrl($release->assets->sources[0]->url); - if (!$this->release->isSourceAlreadyFetched()) { + if (! $this->release->isSourceAlreadyFetched()) { $this->release->download(); $this->release->extract(); } @@ -133,7 +133,7 @@ public function selectRelease(Collection $collection, string $version) { $release = $collection->first(); - if (!empty($version)) { + if (! empty($version)) { if ($collection->contains('tag_name', $version)) { $release = $collection->where('tag_name', $version)->first(); } else { @@ -151,7 +151,7 @@ final public function getReleaseUrl(): array { return [ 'base_url' => $this->config['base_url'] ?? self::BASE_URL, - 'url' => '/api/v4/projects/'.$this->config['repository_id'].'/releases', + 'url' => '/api/v4/projects/'.$this->config['repository_id'].'/releases', ]; } diff --git a/src/SourceRepositoryTypes/HttpRepositoryType.php b/src/SourceRepositoryTypes/HttpRepositoryType.php index 03fb9c6..9d61059 100644 --- a/src/SourceRepositoryTypes/HttpRepositoryType.php +++ b/src/SourceRepositoryTypes/HttpRepositoryType.php @@ -1,16 +1,7 @@ release = resolve(Release::class); $this->release->setStoragePath(Str::finish($this->config['download_path'], DIRECTORY_SEPARATOR)) - ->setUpdatePath(base_path(), config('self-update.exclude_folders')) - ->setAccessToken($this->config['private_access_token']); + ->setUpdatePath(base_path(), config('self-update.exclude_folders')) + ->setAccessToken($this->config['private_access_token']); $this->updateExecutor = $updateExecutor; } @@ -59,14 +62,14 @@ public function isNewVersionAvailable(string $currentVersion = ''): bool { $version = $currentVersion ?: $this->getVersionInstalled(); - if (!$version) { + if (! $version) { throw VersionException::versionInstalledNotFound(); } $versionAvailable = $this->getVersionAvailable(); if (version_compare($version, $versionAvailable, '<')) { - if (!$this->versionFileExists()) { + if (! $this->versionFileExists()) { $this->setVersionFile($this->getVersionAvailable()); event(new UpdateAvailable($this->getVersionAvailable())); } @@ -94,11 +97,11 @@ public function fetch(string $version = ''): Release $release = $this->selectRelease($releaseCollection, $version); $this->release->setVersion($this->prepend.$release->name.$this->append) - ->setRelease($this->prepend.$release->name.$this->append.'.zip') - ->updateStoragePath() - ->setDownloadUrl($release->zipball_url); + ->setRelease($this->prepend.$release->name.$this->append.'.zip') + ->updateStoragePath() + ->setDownloadUrl($release->zipball_url); - if (!$this->release->isSourceAlreadyFetched()) { + if (! $this->release->isSourceAlreadyFetched()) { $this->release->download(); $this->release->extract(); } @@ -110,7 +113,7 @@ public function selectRelease(Collection $collection, string $version) { $release = $collection->first(); - if (!empty($version)) { + if (! empty($version)) { if ($collection->contains('name', $version)) { $release = $collection->where('name', $version)->first(); } else { @@ -141,8 +144,8 @@ public function getVersionInstalled(): string * Get the latest version that has been published in a certain repository. * Example: 2.6.5 or v2.6.5. * - * @param string $prepend Prepend a string to the latest version - * @param string $append Append a string to the latest version + * @param string $prepend Prepend a string to the latest version + * @param string $append Append a string to the latest version * * @throws Exception|GuzzleException */ @@ -193,8 +196,8 @@ public function extractFromHtml(string $content): Collection } // Special handling when file version cannot be properly detected - if (!array_key_exists(2, $files)) { - foreach ($files[1] as $key=>$val) { + if (! array_key_exists(2, $files)) { + foreach ($files[1] as $key => $val) { preg_match('/[a-zA-Z\-]([.\d]*)(?=\.\w+$)/', $val, $versions); $files[][$key] = $versions[1]; } @@ -210,7 +213,7 @@ public function extractFromHtml(string $content): Collection $item = $uri->getHost() ? $item : $baseUrl.Str::start($item, '/'); return (object) [ - 'name' => $key, + 'name' => $key, 'zipball_url' => $item, ]; }); diff --git a/src/Traits/SupportPrivateAccessToken.php b/src/Traits/SupportPrivateAccessToken.php index 6b0f21c..992ef2f 100644 --- a/src/Traits/SupportPrivateAccessToken.php +++ b/src/Traits/SupportPrivateAccessToken.php @@ -1,12 +1,11 @@ accessToken); + return ! empty($this->accessToken); } public function setAccessTokenPrefix(string $prefix): void diff --git a/src/Traits/UseVersionFile.php b/src/Traits/UseVersionFile.php index 654c5a6..ea0ecb2 100644 --- a/src/Traits/UseVersionFile.php +++ b/src/Traits/UseVersionFile.php @@ -1,8 +1,6 @@ $directory - * @param array $excludedDirs + * @param array $directory + * @param array $excludedDirs */ function dirsIntersect(array $directory, array $excludedDirs): bool { @@ -17,7 +15,7 @@ function dirsIntersect(array $directory, array $excludedDirs): bool } } -if (!\function_exists('checkPermissions')) { +if (! \function_exists('checkPermissions')) { /** * Check a given directory recursively if all files are writeable. */ @@ -26,7 +24,7 @@ function checkPermissions(string $directory): bool $directoryIterator = new \RecursiveDirectoryIterator($directory); foreach (new \RecursiveIteratorIterator($directoryIterator) as $file) { - if ($file->isFile() && !$file->isWritable()) { + if ($file->isFile() && ! $file->isWritable()) { return false; } } @@ -35,7 +33,7 @@ function checkPermissions(string $directory): bool } } -if (!\function_exists('createFolderFromFile')) { +if (! \function_exists('createFolderFromFile')) { /* * Create a folder name including path from a given file. * Input: /tmp/my_zip_file.zip diff --git a/tests/Commands/CheckUpdateTest.php b/tests/Commands/CheckUpdateTest.php deleted file mode 100644 index 57a4624..0000000 --- a/tests/Commands/CheckUpdateTest.php +++ /dev/null @@ -1,53 +0,0 @@ -resetDownloadDir(); - } - - /** @test */ - public function it_can_run_check_update_command_without_new_version_available(): void - { - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('tag')) - ->pushResponse($this->getResponse200ZipFile()); - - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - $github->deleteVersionFile(); - - config(['self-update.version_installed' => '3.5']); - - $this->artisan(CheckForUpdate::class) - ->expectsOutput('There\'s no new version available.') - ->assertExitCode(0); - } - - /** @test */ - public function it_can_run_check_update_command_with_new_version_available(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - $github->setVersionFile('v3.5'); - - config(['self-update.version_installed' => 'v1.0']); - - $this->artisan(CheckForUpdate::class) - ->expectsOutput('A new version [v3.5] is available.') - ->assertExitCode(0); - } -} diff --git a/tests/Data/Http/releases-http_gh.json b/tests/Data/Http/releases-http_gh.json deleted file mode 100644 index a467f71..0000000 --- a/tests/Data/Http/releases-http_gh.json +++ /dev/null @@ -1,2687 +0,0 @@ - - - - - - - - -
-Skip to content - - - - - - - - - - - - - -
- -
- - -
- -
- - - - - - - - - -
-
-
- - - - - - - - - - - - - - - - - - -
- -
- -
-

- - -/ - -invoiceninja - - -

- - -
- -
    - - - - -
  • - -
    - -
    - - -Watch - - -
    -Notifications -
    -
    - - - - - - - -
    -
    -
    - -
    -
  • - -
  • -
    -
    - - -
    -
    - - -
    - -
  • - -
  • -
    -
    - -
  • -
- -
- - - - - - -
- - - - - - -
-
- - - - - - - -
- - - - -
- -
-
-
- -Latest release - - - -
- -
    -
  • - - -v4.5.17 - -
  • - -
  • - - -618743e - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -Latest release - - -
-
    -
  • - - -v4.5.17 - -
  • - -
  • - - -618743e - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Dec 3, 2019 -· - -34 commits -to master -since this release -

-
- - - -
-
    -
  • Account Statement Not working #3069
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.16 - -
  • - -
  • - - -6ebc492 - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.16 - -
  • - -
  • - - -6ebc492 - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Oct 27, 2019 -· - -41 commits -to master -since this release -

-
- - - -
-
    -
  • PayPal Express not sending address line 2 #2983
  • -
  • Fix invoice transformer
  • -
  • Use decimal separator for Euro in China
  • -
  • Increased max invoice limit
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.15 - -
  • - -
  • - - -e763a2b - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.15 - -
  • - -
  • - - -e763a2b - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Oct 6, 2019 -· - -46 commits -to master -since this release -

-
- - - -
-
    -
  • Support for PHP 7.3 (Thanks @joshuadwire!)
  • -
  • Upgrade to Laravel 5.5 LTS
  • -
  • Fix contact variables in proposals #2958
  • -
  • Fix invoice.auto_bill value in API
  • -
  • Hide totals on dashboards from non-admins
  • -
  • Added Zelle to payment type list for tracking manual payments
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.14 - -
  • - -
  • - - -3cc9eb0 - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.14 - -
  • - -
  • - - -3cc9eb0 - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Jul 21, 2019 -· - -71 commits -to master -since this release -

-
- - - -
-
    -
  • Support for Strong Customer Authentication (SCA) with Stripe #2792 (Thanks @joshuadwire!)
  • -
  • Support for vendors and expenses in the mobile app
  • -
  • Added Bulgarian language
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.13 - -
  • - -
  • - - -e3dcf4a - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.13 - -
  • - -
  • - - -e3dcf4a - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -May 26, 2019 -· - -88 commits -to master -since this release -

-
- - - -
-
    -
  • Added client address to invoice/quote reports
  • -
  • Show contact name in activity details #2830 (Thanks @dicarlosystems!)
  • -
  • Fix ‘tests.notes_reminder4’
  • -
  • Fix XSS issues
  • -
  • Converting quote to an invoice should keep the private notes #2742
  • -
  • Fix for imported payment dates
  • -
  • Added sparkpost support (Thanks @kominoshja!)
  • -
  • Added currencies: AMD, AZN, BYN, MDL, KZT, GIP
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.12 - -
  • - -
  • - - -72831b0 - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.12 - -
  • - -
  • - - -72831b0 - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Mar 26, 2019 -· - -114 commits -to master -since this release -

-
- - - -
-
    -
  • Fix proposal PDF
  • -
  • Fix tasks in the mobile app
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.11 - -
  • - -
  • - - -736f168 - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.11 - -
  • - -
  • - - -736f168 - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Feb 28, 2019 -· - -125 commits -to master -since this release -

-
- - - -
- -
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.10 - -
  • - -
  • - - -5e269ed - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.10 - -
  • - -
  • - - -5e269ed - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Feb 20, 2019 -· - -134 commits -to master -since this release -

-
- - - -
-
    -
  • Added KWD, DZD, MKD, BOB & FJD currencies
  • -
  • Added payment fields to the expense report
  • -
  • Fix for Google OAuth
  • -
  • Fix auto-archive when approving quote
  • -
  • Increased width of product dropdown
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.9 - -
  • - -
  • - - -299e410 - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.9 - -
  • - -
  • - - -299e410 - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Jan 20, 2019 -· - -163 commits -to master -since this release -

-
- - - -
-
    -
  • Fix for client portal logout
  • -
  • Fix sorting in reports section for fields with numbers #2600
  • -
  • Fixes for Stripe.js v3
  • -
  • Don’t show gateway fee is amount is 0 #2545 (Thanks @tidalgo22!)
  • -
  • Use invoice design for converted quote
  • -
  • Added passphrase field for Payfast
  • -
  • Added XPF, CVE and MUR currencies
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- - - -
- -
-
-
- - -
- -
    -
  • - - -v4.5.8 - -
  • - -
  • - - -b14d0c7 - -
  • -
  • - - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
-
- -
-
-
- - - -
-
    -
  • - - -v4.5.8 - -
  • - -
  • - - -b14d0c7 - -
  • -
  • - -
    - -Compare - - - -
    -Choose a tag to compare -
    - -
    - - - -
    - -
    -
    Search for a tag
    -
    -
    -
    - -
  • -
  • - - -
  • -
- -

-@hillelcoren -hillelcoren -released this -Jan 6, 2019 -· - -163 commits -to master -since this release -

-
- - - -
-
    -
  • Unable to add credit card in customer portal #2559
  • -
  • Issue installing FedACHdir via Composer #2576
  • -
  • Fix for exporting report as PDF
  • -
  • Fix for First Data Payeezy
  • -
-
- - -
- -
- - -Assets -2 -
-
- -
- - -
-
- -
- -
- -
- -
- - -
-
- -
-
- - -
- - - diff --git a/tests/Data/Http/releases-http_local.json b/tests/Data/Http/releases-http_local.json deleted file mode 100644 index 98a1e82..0000000 --- a/tests/Data/Http/releases-http_local.json +++ /dev/null @@ -1,983 +0,0 @@ - - - - -Releases · My test group / My Test Project · GitLab - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - - -
-
- -
- - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
- - -
New release
- -
-
- - -
-
- - - - - - - - - - -
diff --git a/tests/Data/release-1.2.zip b/tests/Data/release-1.2.zip deleted file mode 100644 index 7b3b01f..0000000 Binary files a/tests/Data/release-1.2.zip and /dev/null differ diff --git a/tests/Data/releases-branch.json b/tests/Data/releases-branch.json deleted file mode 100644 index 3f0e819..0000000 --- a/tests/Data/releases-branch.json +++ /dev/null @@ -1,713 +0,0 @@ -[ - { - "sha": "e8f19f9b63b5b92f31ddc4a3463dcc231301adea", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6ZThmMTlmOWI2M2I1YjkyZjMxZGRjNGEzNDYzZGNjMjMxMzAxYWRlYQ==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-06T21:09:15Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-06T21:09:15Z" - }, - "message": "Fixes for invoice save (#3295)\n\n* Working on Invoice Designs\r\n\r\n* Fixes for invoice save\r\n\r\n* Threshold changes for sending large accounts on ?first_load=true", - "tree": { - "sha": "39da8e926d8b6aa10ab83c2ad1675903c1203881", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/39da8e926d8b6aa10ab83c2ad1675903c1203881" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/e8f19f9b63b5b92f31ddc4a3463dcc231301adea", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJePIB7CRBK7hj4Ov3rIwAAdHIIAIxEO/eDZpiS21K0HKujX9LD\nQBaDXexTnOc9aKHuHvJdgcMuvVTGfsyE+XzPDk3rL4nHQkAGpHKsvljIXt8gx6k9\nRWng7jzrixdX3iyG28RdNX5GgpZkNe0jGOVCigePM27mgbGK3rHGRYkevFsJSjdZ\n3GeggMKeuwQ4p8Jr5+Jxo2PAd64eqWDjDG/wJLraYuDoWpEg00+HD0B3adMAyYH3\nsjPUkPAf/JfUMlSAK5e9Dn8uBBzk6RxLyLUlXoxSUgur33ITgcIAarO6fo+YwnF8\nUvs6sfU/Ls+DO4kLVjMujZFRPFzVFdageMdLz2UsSflAYMQN1GmMTEx2iL9F3Ns=\n=UEcw\n-----END PGP SIGNATURE-----\n", - "payload": "tree 39da8e926d8b6aa10ab83c2ad1675903c1203881\nparent 82720f180162edf50bfe780bbe4e7a092af7bc6e\nauthor David Bomba 1581023355 +1100\ncommitter GitHub 1581023355 +1100\n\nFixes for invoice save (#3295)\n\n* Working on Invoice Designs\r\n\r\n* Fixes for invoice save\r\n\r\n* Threshold changes for sending large accounts on ?first_load=true\r\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/e8f19f9b63b5b92f31ddc4a3463dcc231301adea", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/e8f19f9b63b5b92f31ddc4a3463dcc231301adea", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/e8f19f9b63b5b92f31ddc4a3463dcc231301adea/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "82720f180162edf50bfe780bbe4e7a092af7bc6e", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/82720f180162edf50bfe780bbe4e7a092af7bc6e", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/82720f180162edf50bfe780bbe4e7a092af7bc6e" - } - ] - }, - { - "sha": "82720f180162edf50bfe780bbe4e7a092af7bc6e", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6ODI3MjBmMTgwMTYyZWRmNTBiZmU3ODBiYmU0ZTdhMDkyYWY3YmM2ZQ==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-06T12:30:50Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-06T12:30:50Z" - }, - "message": "Fixes for client transformer (#3291)", - "tree": { - "sha": "b3add464062aae661acbfc84d18d140dc9397ff3", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/b3add464062aae661acbfc84d18d140dc9397ff3" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/82720f180162edf50bfe780bbe4e7a092af7bc6e", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJePAb6CRBK7hj4Ov3rIwAAdHIIABrHbc2bRnCu1BNExXJlCNrV\nDUZH0fDegjaHZd3dFzI1QuIk0mn0pVlaG4M7X9f+vsY2RLLpw2uGFYR4wyiGHvqv\nv8Typxa53MXmfjQdmznvJ8FztOaiNZPduQJbdyUVMmKKuyIg8vUVHNjxG/m5mOe5\nLqI3XMC7Rb21m6WDdo+SQvI4xQi8zqdhMAd5BHFvuIXRhbZ3ExnUDm7yA7mrhfRo\nLsVoxdVHTVFeToZLQCl9nwhzgGNfe7asCULDONcb7OyrBxTF6JJjsynaTKr3XZ4J\nSvWsqPs/OIyWCJXDK50CviaFff5uDrya9BzObg68CaXE9LdGUZn0/mytKQTUl5o=\n=w0LM\n-----END PGP SIGNATURE-----\n", - "payload": "tree b3add464062aae661acbfc84d18d140dc9397ff3\nparent f519fc765b2176256bec74ee4cc38bd7f4254c98\nauthor David Bomba 1580992250 +1100\ncommitter GitHub 1580992250 +1100\n\nFixes for client transformer (#3291)\n\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/82720f180162edf50bfe780bbe4e7a092af7bc6e", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/82720f180162edf50bfe780bbe4e7a092af7bc6e", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/82720f180162edf50bfe780bbe4e7a092af7bc6e/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "f519fc765b2176256bec74ee4cc38bd7f4254c98", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/f519fc765b2176256bec74ee4cc38bd7f4254c98", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/f519fc765b2176256bec74ee4cc38bd7f4254c98" - } - ] - }, - { - "sha": "f519fc765b2176256bec74ee4cc38bd7f4254c98", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6ZjUxOWZjNzY1YjIxNzYyNTZiZWM3NGVlNGNjMzhiZDdmNDI1NGM5OA==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-06T12:00:22Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-06T12:00:22Z" - }, - "message": "Improvements for eager loading (#3290)\n\n* Working on invoice designs\r\n\r\n* Working on Invoice Designs\r\n\r\n* Improve eager loads\r\n\r\n* Improvements for eager loading", - "tree": { - "sha": "775effc7d6d9e605edb0df74ead0d4b0c798603f", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/775effc7d6d9e605edb0df74ead0d4b0c798603f" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/f519fc765b2176256bec74ee4cc38bd7f4254c98", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJeO//WCRBK7hj4Ov3rIwAAdHIIAKxXXR+F85+6NyiMeO5nKoUt\n3Z8rdBakmP90uDEhDKJEyy8QUVsFjfY740EYsZWdKeO0R05DikCjvKAmvsNoeK7H\nh2UuSsRkqU1lFw6hvb8FCEkQTTACcX60+x4iY3eUPDybnOx6ZNVP5KX5DSnbEz6i\nu3sk4HacB34Hs+9OtFW8WmmWW17PO24urhpPbswKAXTzq2WjiVbLIvEIqLlkr8EK\nIqAvkSyOtNiEg69zE+8cehs0m3uL5fkYVBGRZFKkTSUKdTm0hJ4q3IGJzCqfRMHc\nP9uxw6f4uGDPjfKfLzDVisNwBLrRr6OPJbFSa/Hkx2kNJSWR+IF5w6d+BNwNE9o=\n=SPfi\n-----END PGP SIGNATURE-----\n", - "payload": "tree 775effc7d6d9e605edb0df74ead0d4b0c798603f\nparent 4f82f1b9037530baa8775e41e16d82e8db97110f\nauthor David Bomba 1580990422 +1100\ncommitter GitHub 1580990422 +1100\n\nImprovements for eager loading (#3290)\n\n* Working on invoice designs\r\n\r\n* Working on Invoice Designs\r\n\r\n* Improve eager loads\r\n\r\n* Improvements for eager loading\r\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/f519fc765b2176256bec74ee4cc38bd7f4254c98", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/f519fc765b2176256bec74ee4cc38bd7f4254c98", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/f519fc765b2176256bec74ee4cc38bd7f4254c98/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "4f82f1b9037530baa8775e41e16d82e8db97110f", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/4f82f1b9037530baa8775e41e16d82e8db97110f", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/4f82f1b9037530baa8775e41e16d82e8db97110f" - } - ] - }, - { - "sha": "4f82f1b9037530baa8775e41e16d82e8db97110f", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6NGY4MmYxYjkwMzc1MzBiYWE4Nzc1ZTQxZTE2ZDgyZThkYjk3MTEwZg==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-06T09:35:51Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-06T09:35:51Z" - }, - "message": "Improve eager loads (#3289)\n\n* Working on invoice designs\r\n\r\n* Working on Invoice Designs\r\n\r\n* Improve eager loads", - "tree": { - "sha": "c90d89cb7de4928dfe90c89c66f6eccc8cf2b334", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/c90d89cb7de4928dfe90c89c66f6eccc8cf2b334" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/4f82f1b9037530baa8775e41e16d82e8db97110f", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJeO933CRBK7hj4Ov3rIwAAdHIIAKaHxLBX5lI7Mt9dON7aGoZN\ni8eummqa4kN0d2johWZs4cN653I8bf/NN0lpe3tEYppgEvl9f+9LVwA1cwTvHj7Y\nqO3uRoVypSXNA2oQdLs0rW+MHoRSDwNTEjcq4wZjiJUDbpTn3lUYTgmQCFqGl1km\nMWnuVph7WxC6Z5zLTgn2kYhOJwU3y9VL0F8Cwk83xjr2bX5NgIibbJMucrV6knmG\npAV6vi6L6AM8SO+gCcxJGWFhzGkRHabuBpsa7JbVnCu26mixWPBQ5pudAcgDIAck\nVXGb8upRAGJiWfF9M21gaH6jLNSu4Pk96Fxcx0Xt6jXKCCBmnlhe/gKLvvxMNN4=\n=K6S6\n-----END PGP SIGNATURE-----\n", - "payload": "tree c90d89cb7de4928dfe90c89c66f6eccc8cf2b334\nparent 797c3fb3f69ecb96b34035aa79505064140d6777\nauthor David Bomba 1580981751 +1100\ncommitter GitHub 1580981751 +1100\n\nImprove eager loads (#3289)\n\n* Working on invoice designs\r\n\r\n* Working on Invoice Designs\r\n\r\n* Improve eager loads\r\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/4f82f1b9037530baa8775e41e16d82e8db97110f", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/4f82f1b9037530baa8775e41e16d82e8db97110f", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/4f82f1b9037530baa8775e41e16d82e8db97110f/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "797c3fb3f69ecb96b34035aa79505064140d6777", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/797c3fb3f69ecb96b34035aa79505064140d6777", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/797c3fb3f69ecb96b34035aa79505064140d6777" - } - ] - }, - { - "sha": "797c3fb3f69ecb96b34035aa79505064140d6777", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6Nzk3YzNmYjNmNjllY2I5NmIzNDAzNWFhNzk1MDUwNjQxNDBkNjc3Nw==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-05T21:54:20Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-05T21:54:20Z" - }, - "message": "Fixes for refunds (#3288)\n\n* Working on invoice designs\r\n\r\n* Fix unusual form request issue in tests vs production\r\n\r\n* Fixes for form requests\r\n\r\n* Fixes for refunds", - "tree": { - "sha": "28f699160d7a3e854e55b2e24320a2d11307a728", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/28f699160d7a3e854e55b2e24320a2d11307a728" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/797c3fb3f69ecb96b34035aa79505064140d6777", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJeOzmMCRBK7hj4Ov3rIwAAdHIIAJqJ8uxd53mEgQzxGG63Se9W\n6YZnUGJCVXZK4Pf0woPXXDnSIH/MgwFpKPUyPyGnL33vzvxVz9GgFeQd6dxXRUax\nmgeFffEN8n7Pe2UoTNflhmOgCn9R3dQccfeJUo6NcFuFnkdCbp+SaBaW3tUN/B73\nufRTCwFy0vs7cGpQbnCJTjDyLOHFuB5RZ1ADAqhdeaXSTr7W8ka/TLKdlXJbrMZz\naBbPckhFvoM1tjT18d5Y5jgMFshwGVcbNFHmsFeCnEnKZGowckIGl44SVQO9rJF0\nlxNpkjUROLm5g6K1A8NQK7y1Sjp0nn+agcuPB+hEmIGO1YJ/y8PzVTkUpl+O5gU=\n=hsEC\n-----END PGP SIGNATURE-----\n", - "payload": "tree 28f699160d7a3e854e55b2e24320a2d11307a728\nparent 11960e25e75d3deaa87db459b3002f6f9d3af1ae\nauthor David Bomba 1580939660 +1100\ncommitter GitHub 1580939660 +1100\n\nFixes for refunds (#3288)\n\n* Working on invoice designs\r\n\r\n* Fix unusual form request issue in tests vs production\r\n\r\n* Fixes for form requests\r\n\r\n* Fixes for refunds\r\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/797c3fb3f69ecb96b34035aa79505064140d6777", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/797c3fb3f69ecb96b34035aa79505064140d6777", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/797c3fb3f69ecb96b34035aa79505064140d6777/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "11960e25e75d3deaa87db459b3002f6f9d3af1ae", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/11960e25e75d3deaa87db459b3002f6f9d3af1ae", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/11960e25e75d3deaa87db459b3002f6f9d3af1ae" - } - ] - }, - { - "sha": "11960e25e75d3deaa87db459b3002f6f9d3af1ae", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6MTE5NjBlMjVlNzVkM2RlYWE4N2RiNDU5YjMwMDJmNmY5ZDNhZjFhZQ==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-05T10:28:56Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-05T10:28:56Z" - }, - "message": "Fixes for refunds (#3285)\n\n* Working self-updater package\r\n\r\n* Fixes for travis\r\n\r\n* Working on invoice designs\r\n\r\n* Working on invoice builder\r\n\r\n* Tests for invoice design\r\n\r\n* Working on invoice designs\r\n\r\n* Minor fixes\r\n\r\n* Working on Invoice Design Engine\r\n\r\n* Working on invoice designs\r\n\r\n* Fixes for refunds", - "tree": { - "sha": "1a2cb027fb192259cea9a6ee13f464f6db252a35", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/1a2cb027fb192259cea9a6ee13f464f6db252a35" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/11960e25e75d3deaa87db459b3002f6f9d3af1ae", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJeOpjoCRBK7hj4Ov3rIwAAdHIIAEzQrvqzY8HunVtC4oGlJAae\ny+WkFyvQmNL1JB1DOgBryLD5JemLToo6DHF1NFO8WTRb9s/rdBiTs0Pt5KgW6vDz\nVs2jXJN1S5fAai4JD6zZ+bAvv082MIxYVHkq7cwTlSvX/u8WnupewkqjRVvmkdPN\nlQyIpocl8c7MmRPfBK3SMPYnmxEBwHgr+M0ZMKCCkd+6maYTgNLfpLc9eWg1whfv\nBMn4VIO7PtA2HTT+N7Az9+cUFQrHCfOtEZ/lchPq1m1UmNm5eI46SWooNtp7HGvz\n77NA1apt4XAir20muFFBofSJF0cy6gYqfFJqb2dMFdPAI42eG0dgXwiG6ZKi3dE=\n=WXkG\n-----END PGP SIGNATURE-----\n", - "payload": "tree 1a2cb027fb192259cea9a6ee13f464f6db252a35\nparent 3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6\nauthor David Bomba 1580898536 +1100\ncommitter GitHub 1580898536 +1100\n\nFixes for refunds (#3285)\n\n* Working self-updater package\r\n\r\n* Fixes for travis\r\n\r\n* Working on invoice designs\r\n\r\n* Working on invoice builder\r\n\r\n* Tests for invoice design\r\n\r\n* Working on invoice designs\r\n\r\n* Minor fixes\r\n\r\n* Working on Invoice Design Engine\r\n\r\n* Working on invoice designs\r\n\r\n* Fixes for refunds\r\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/11960e25e75d3deaa87db459b3002f6f9d3af1ae", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/11960e25e75d3deaa87db459b3002f6f9d3af1ae", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/11960e25e75d3deaa87db459b3002f6f9d3af1ae/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6" - } - ] - }, - { - "sha": "3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6M2VjOTk2ZWU1ZGUwZjYyM2RkOGYyNTJkM2I0YjZhZDUzY2Q5NTFlNg==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-05T04:06:03Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-05T04:06:03Z" - }, - "message": "Invoice Designer (#3283)\n\n* Working self-updater package\r\n\r\n* Fixes for travis\r\n\r\n* Working on invoice designs\r\n\r\n* Working on invoice builder\r\n\r\n* Tests for invoice design\r\n\r\n* Working on invoice designs\r\n\r\n* Minor fixes\r\n\r\n* Minor fixes for randomdataseeder", - "tree": { - "sha": "ba7528f0e6564bcfb0da9d5c91a631a8b9e7bb4d", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/ba7528f0e6564bcfb0da9d5c91a631a8b9e7bb4d" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJeOj8rCRBK7hj4Ov3rIwAAdHIIAF9Gc9+5Z7G5KwY8lggyfE++\nn8uJZm6q+FyDGP/curpuG6ODo3HxRkKMZ1ZaXYHYkuiFkYsWygvhrb0MFNmQqynD\nHtHfEB6aQ6WuFyTmCMk++cvWtl5t/QvsYcKKaLDvomlmvZ+qMuxD9dse/WQqRnx+\nD435mxbf68H1Z7FWeqzm4z6sVA3W2/CogP+4fPrs+OQLlLmo1TVMjogsSIlMyVhn\n08CTmpc3U+s/Ne20hmxLEgYG/hL/d3IC9wb/Zf61YYeePujrgQp5zzzDQekc1trj\nTIWTXrzmrohShpyI3xBuIFrZFUAs+acNoD3q+hPHFN1egBhIelAOioWE5fYCAtU=\n=icfl\n-----END PGP SIGNATURE-----\n", - "payload": "tree ba7528f0e6564bcfb0da9d5c91a631a8b9e7bb4d\nparent c2524f55da70f141f438beaab6b920c48e9de832\nauthor David Bomba 1580875563 +1100\ncommitter GitHub 1580875563 +1100\n\nInvoice Designer (#3283)\n\n* Working self-updater package\r\n\r\n* Fixes for travis\r\n\r\n* Working on invoice designs\r\n\r\n* Working on invoice builder\r\n\r\n* Tests for invoice design\r\n\r\n* Working on invoice designs\r\n\r\n* Minor fixes\r\n\r\n* Minor fixes for randomdataseeder\r\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/3ec996ee5de0f623dd8f252d3b4b6ad53cd951e6/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "c2524f55da70f141f438beaab6b920c48e9de832", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/c2524f55da70f141f438beaab6b920c48e9de832", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/c2524f55da70f141f438beaab6b920c48e9de832" - } - ] - }, - { - "sha": "c2524f55da70f141f438beaab6b920c48e9de832", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6YzI1MjRmNTVkYTcwZjE0MWY0MzhiZWFhYjZiOTIwYzQ4ZTlkZTgzMg==", - "commit": { - "author": { - "name": "michael-hampton", - "email": "michaelhamptondesign@yahoo.com", - "date": "2020-02-04T22:47:54Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-04T22:47:54Z" - }, - "message": "Update MarkPaid.php (#3282)", - "tree": { - "sha": "be0307961da2caecc8bf7906cfb1980569064b6f", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/be0307961da2caecc8bf7906cfb1980569064b6f" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/c2524f55da70f141f438beaab6b920c48e9de832", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJeOfSaCRBK7hj4Ov3rIwAAdHIIAEUF50ma1BVw1AmeJ/vXdt5R\nybb8OoA7L5Sx87dQG3HRimf1AvdOfhOypKD9fU3kosWrenXjDABu5PjR8vOXx2cw\nAudYOapL34QsewTUMJYPMX7cxgBrP4o+8eZtXsRpnRwUKTIzRDnPOKWUYO+sBLYR\nuj+cXFrVX/qCzNDS/buytymov/et2Oo+mMqNHAsaCfiR2+TYWT8odGayoWMF3Q9u\ntFhze/TSheH0DYLMPgy+DfWaTsA3wcBUDEQzwS3797aGcM4k2goVnA07cDl9rloy\nVCCkT82bu0VWV7xTogVrbA60YlnYR/BSSD6y8TiX/GN8UEyUdTReSNmUiyGAuEc=\n=EXp6\n-----END PGP SIGNATURE-----\n", - "payload": "tree be0307961da2caecc8bf7906cfb1980569064b6f\nparent cda534e99652045ab102f5f38c39e51f65e42c57\nauthor michael-hampton 1580856474 +0000\ncommitter GitHub 1580856474 +1100\n\nUpdate MarkPaid.php (#3282)\n\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/c2524f55da70f141f438beaab6b920c48e9de832", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/c2524f55da70f141f438beaab6b920c48e9de832", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/c2524f55da70f141f438beaab6b920c48e9de832/comments", - "author": { - "login": "michael-hampton", - "id": 28355563, - "node_id": "MDQ6VXNlcjI4MzU1NTYz", - "avatar_url": "https://avatars0.githubusercontent.com/u/28355563?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/michael-hampton", - "html_url": "https://github.com/michael-hampton", - "followers_url": "https://api.github.com/users/michael-hampton/followers", - "following_url": "https://api.github.com/users/michael-hampton/following{/other_user}", - "gists_url": "https://api.github.com/users/michael-hampton/gists{/gist_id}", - "starred_url": "https://api.github.com/users/michael-hampton/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/michael-hampton/subscriptions", - "organizations_url": "https://api.github.com/users/michael-hampton/orgs", - "repos_url": "https://api.github.com/users/michael-hampton/repos", - "events_url": "https://api.github.com/users/michael-hampton/events{/privacy}", - "received_events_url": "https://api.github.com/users/michael-hampton/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "cda534e99652045ab102f5f38c39e51f65e42c57", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/cda534e99652045ab102f5f38c39e51f65e42c57", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/cda534e99652045ab102f5f38c39e51f65e42c57" - } - ] - }, - { - "sha": "cda534e99652045ab102f5f38c39e51f65e42c57", - "node_id": "MDY6Q29tbWl0MTQ3MTYzNjg6Y2RhNTM0ZTk5NjUyMDQ1YWIxMDJmNWYzOGMzOWU1MWY2NWU0MmM1Nw==", - "commit": { - "author": { - "name": "David Bomba", - "email": "turbo124@gmail.com", - "date": "2020-02-04T07:51:44Z" - }, - "committer": { - "name": "GitHub", - "email": "noreply@github.com", - "date": "2020-02-04T07:51:44Z" - }, - "message": "Explicitly call the service() method, rather than obfuscate. (#3281)\n\n* Include fix as describe by @michael-hampton here #3280\r\n\r\n* Refactor createinvitations away from jobs\r\n\r\n* Clean up\r\n\r\n* Fixes for service() refactoring\r\n\r\n* Fixes for services refactor", - "tree": { - "sha": "9d90b8620cb84f23f5057f56c28cab1021c1f227", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/trees/9d90b8620cb84f23f5057f56c28cab1021c1f227" - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/git/commits/cda534e99652045ab102f5f38c39e51f65e42c57", - "comment_count": 0, - "verification": { - "verified": true, - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJeOSKQCRBK7hj4Ov3rIwAAdHIIAB1QArn60MhvPO0tzSS0igeZ\npUtecfLSOmoyVC5jnNSgD/WOWiHFry130Y7IMNa6NQChMaSjCgEHU5AgCWmUaOj9\nkpQN/9/AsYo00AqwyySfCNUcWYfIaFZpViId+R5WVaQuUelpsRuacAbdHQ4CiIrY\nLtte68jHtMwGUkVwgK5+ATbsgGGXhJ6gUNIbei+ltxnA6JpbLLYda36ESmZULMj3\n5zVFcaIh4FUn8y0SkYE7hpRnKlAVgguMexwDOtxLXOQLgGtCX0QvbfUKxI9pDY/K\nMTp3End2WLaiBJC+6EOwYhritaRXmTqWg3N2VBNtALfA9EBGeFc/m+xUpbvNkaY=\n=mEeD\n-----END PGP SIGNATURE-----\n", - "payload": "tree 9d90b8620cb84f23f5057f56c28cab1021c1f227\nparent c25de936edd8db6baec45d67fd31da4cdda4c4fa\nauthor David Bomba 1580802704 +1100\ncommitter GitHub 1580802704 +1100\n\nExplicitly call the service() method, rather than obfuscate. (#3281)\n\n* Include fix as describe by @michael-hampton here #3280\r\n\r\n* Refactor createinvitations away from jobs\r\n\r\n* Clean up\r\n\r\n* Fixes for service() refactoring\r\n\r\n* Fixes for services refactor\r\n" - } - }, - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/cda534e99652045ab102f5f38c39e51f65e42c57", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/cda534e99652045ab102f5f38c39e51f65e42c57", - "comments_url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/cda534e99652045ab102f5f38c39e51f65e42c57/comments", - "author": { - "login": "turbo124", - "id": 5827962, - "node_id": "MDQ6VXNlcjU4Mjc5NjI=", - "avatar_url": "https://avatars0.githubusercontent.com/u/5827962?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbo124", - "html_url": "https://github.com/turbo124", - "followers_url": "https://api.github.com/users/turbo124/followers", - "following_url": "https://api.github.com/users/turbo124/following{/other_user}", - "gists_url": "https://api.github.com/users/turbo124/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbo124/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbo124/subscriptions", - "organizations_url": "https://api.github.com/users/turbo124/orgs", - "repos_url": "https://api.github.com/users/turbo124/repos", - "events_url": "https://api.github.com/users/turbo124/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbo124/received_events", - "type": "User", - "site_admin": false - }, - "committer": { - "login": "web-flow", - "id": 19864447, - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/web-flow", - "html_url": "https://github.com/web-flow", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "repos_url": "https://api.github.com/users/web-flow/repos", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "type": "User", - "site_admin": false - }, - "parents": [ - { - "sha": "c25de936edd8db6baec45d67fd31da4cdda4c4fa", - "url": "https://api.github.com/repos/invoiceninja/invoiceninja/commits/c25de936edd8db6baec45d67fd31da4cdda4c4fa", - "html_url": "https://github.com/invoiceninja/invoiceninja/commit/c25de936edd8db6baec45d67fd31da4cdda4c4fa" - } - ] - } -] diff --git a/tests/Data/releases-gitea.json b/tests/Data/releases-gitea.json deleted file mode 100644 index ba74fce..0000000 --- a/tests/Data/releases-gitea.json +++ /dev/null @@ -1,80 +0,0 @@ -[ - { - "id": 5801852, - "tag_name": "0.0.2", - "target_commitish": "master", - "name": "Testrelease", - "body": "", - "url": "https://try.gitea.io/api/v1/repos/phillopp/emptyRepo/releases/5801851", - "html_url": "https://try.gitea.io/phillopp/emptyRepo/releases/tag/0.0.2", - "tarball_url": "https://try.gitea.io/phillopp/emptyRepo/archive/0.0.2.tar.gz", - "zipball_url": "https://try.gitea.io/phillopp/emptyRepo/archive/0.0.2.zip", - "draft": false, - "prerelease": false, - "created_at": "2022-08-18T09:34:20Z", - "published_at": "2022-08-18T09:34:20Z", - "author": { - "id": 515025, - "login": "phillopp", - "login_name": "", - "full_name": "", - "email": "phillopp@noreply.try.gitea.io", - "avatar_url": "https://try.gitea.io/avatar/330ff1fe1bb56077547730562f9bb038", - "language": "", - "is_admin": false, - "last_login": "0001-01-01T00:00:00Z", - "created": "2022-08-18T09:21:28Z", - "restricted": false, - "active": false, - "prohibit_login": false, - "location": "", - "website": "", - "description": "", - "visibility": "public", - "followers_count": 0, - "following_count": 0, - "starred_repos_count": 0, - "username": "phillopp" - }, - "assets": [] - }, - { - "id": 5801851, - "tag_name": "0.0.1", - "target_commitish": "master", - "name": "Testrelease", - "body": "", - "url": "https://try.gitea.io/api/v1/repos/phillopp/emptyRepo/releases/5801851", - "html_url": "https://try.gitea.io/phillopp/emptyRepo/releases/tag/0.0.1", - "tarball_url": "https://try.gitea.io/phillopp/emptyRepo/archive/0.0.1.tar.gz", - "zipball_url": "https://try.gitea.io/phillopp/emptyRepo/archive/0.0.1.zip", - "draft": false, - "prerelease": false, - "created_at": "2022-08-17T09:34:20Z", - "published_at": "2022-08-17T09:34:20Z", - "author": { - "id": 515025, - "login": "phillopp", - "login_name": "", - "full_name": "", - "email": "phillopp@noreply.try.gitea.io", - "avatar_url": "https://try.gitea.io/avatar/330ff1fe1bb56077547730562f9bb038", - "language": "", - "is_admin": false, - "last_login": "0001-01-01T00:00:00Z", - "created": "2022-08-18T09:21:28Z", - "restricted": false, - "active": false, - "prohibit_login": false, - "location": "", - "website": "", - "description": "", - "visibility": "public", - "followers_count": 0, - "following_count": 0, - "starred_repos_count": 0, - "username": "phillopp" - }, - "assets": [] - } -] \ No newline at end of file diff --git a/tests/Data/releases-gitlab.json b/tests/Data/releases-gitlab.json deleted file mode 100644 index 8d15a76..0000000 --- a/tests/Data/releases-gitlab.json +++ /dev/null @@ -1,71 +0,0 @@ -[ - { - "_links": { - "edit_url": "https://gitlab.com/my534/my-test-project/-/releases/1.0/edit", - "self": "https://gitlab.com/my534/my-test-project/-/releases/1.0" - }, - "assets": { - "count": 4, - "links": [], - "sources": [ - { - "format": "zip", - "url": "https://gitlab.com/my534/my-test-project/-/archive/1.0/my-test-project-1.0.zip" - }, - { - "format": "tar.gz", - "url": "https://gitlab.com/my534/my-test-project/-/archive/1.0/my-test-project-1.0.tar.gz" - }, - { - "format": "tar.bz2", - "url": "https://gitlab.com/my534/my-test-project/-/archive/1.0/my-test-project-1.0.tar.bz2" - }, - { - "format": "tar", - "url": "https://gitlab.com/my534/my-test-project/-/archive/1.0/my-test-project-1.0.tar" - } - ] - }, - "author": { - "avatar_url": "https://secure.gravatar.com/avatar/4db692b7a818b87200d426f8bdec05e3?s=80&d=identicon", - "id": 11395845, - "name": "Holger Lösken", - "state": "active", - "username": "codedge1", - "web_url": "https://gitlab.com/codedge1" - }, - "commit": { - "author_email": "my-email@example.com", - "author_name": "Holger Lösken", - "authored_date": "2022-04-19T23:20:22.000+02:00", - "committed_date": "2022-04-19T23:20:22.000+02:00", - "committer_email": "my-email@example.com", - "committer_name": "Holger Lösken", - "created_at": "2022-04-19T23:20:22.000+02:00", - "id": "e9d815b94c59a295a4c9d98072c523563c8c838f", - "message": "Sample project\n", - "parent_ids": [ - "150149b256d092ec40cda82bfb690f61e35cb604" - ], - "short_id": "e9d815b9", - "title": "Sample project", - "trailers": {}, - "web_url": "https://gitlab.com/my534/my-test-project/-/commit/e9d815b94c59a295a4c9d98072c523563c8c838f" - }, - "commit_path": "/my534/my-test-project/-/commit/e9d815b94c59a295a4c9d98072c523563c8c838f", - "created_at": "2022-04-25T19:17:26.422Z", - "description": "", - "evidences": [ - { - "collected_at": "2022-04-25T19:17:27.059Z", - "filepath": "https://gitlab.com/my534/my-test-project/-/releases/1.0/evidences/2521598.json", - "sha": "b11d0280f71f7bf4c2c0130ef781eef41851b288bbed" - } - ], - "name": "Initial release", - "released_at": "2022-04-25T19:17:26.422Z", - "tag_name": "1.0", - "tag_path": "/my534/my-test-project/-/tags/1.0", - "upcoming_release": false - } -] diff --git a/tests/Data/releases-tag.json b/tests/Data/releases-tag.json deleted file mode 100644 index c8f47a0..0000000 --- a/tests/Data/releases-tag.json +++ /dev/null @@ -1,617 +0,0 @@ -[ - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/24159606", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/24159606/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/24159606/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.6.1", - "id": 24159606, - "node_id": "MDc6UmVsZWFzZTI0MTU5NjA2", - "tag_name": "2.6.1", - "target_commitish": "master", - "name": "Better test matrix", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2020-03-03T08:34:27Z", - "published_at": "2020-03-03T08:38:44Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.6.1", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.6.1", - "body": "Improve test matrix with Github Actions running through all supported Laravel and PHP versions" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/24158932", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/24158932/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/24158932/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.6.0", - "id": 24158932, - "node_id": "MDc6UmVsZWFzZTI0MTU4OTMy", - "tag_name": "2.6.0", - "target_commitish": "master", - "name": "Laravel 7 support", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2020-03-03T08:06:54Z", - "published_at": "2020-03-03T08:09:14Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.6.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.6.0", - "body": "* Support for Laravel 7\r\n* Drop PHP 7.2" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/24148495", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/24148495/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/24148495/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.5.2", - "id": 24148495, - "node_id": "MDc6UmVsZWFzZTI0MTQ4NDk1", - "tag_name": "2.5.2", - "target_commitish": "master", - "name": "Minor fix", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2020-03-02T22:07:04Z", - "published_at": "2020-03-02T22:08:39Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.5.2", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.5.2", - "body": "Check new version available returns correct return value instead of throwing an exception" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/23530094", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/23530094/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/23530094/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.5.1", - "id": 23530094, - "node_id": "MDc6UmVsZWFzZTIzNTMwMDk0", - "tag_name": "2.5.1", - "target_commitish": "master", - "name": "Check correct version", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2020-02-10T12:01:41Z", - "published_at": "2020-02-10T12:02:36Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.5.1", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.5.1", - "body": "When using branch based updates check the correct commit version" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/23516111", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/23516111/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/23516111/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.5.0", - "id": 23516111, - "node_id": "MDc6UmVsZWFzZTIzNTE2MTEx", - "tag_name": "2.5.0", - "target_commitish": "master", - "name": "Support branch based updates", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2020-02-09T18:22:16Z", - "published_at": "2020-02-09T18:26:51Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.5.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.5.0", - "body": "When using Github, updates from a specified branch can be fetched. The newest commit wins ;-)" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/23373927", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/23373927/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/23373927/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.4.1", - "id": 23373927, - "node_id": "MDc6UmVsZWFzZTIzMzczOTI3", - "tag_name": "2.4.1", - "target_commitish": "master", - "name": "", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2020-02-04T13:31:14Z", - "published_at": "2020-02-04T13:32:20Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.4.1", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.4.1", - "body": "" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/22110969", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/22110969/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/22110969/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.4.0", - "id": 22110969, - "node_id": "MDc6UmVsZWFzZTIyMTEwOTY5", - "tag_name": "2.4.0", - "target_commitish": "master", - "name": "Support for private repositories", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-12-10T14:04:53Z", - "published_at": "2019-12-10T14:08:01Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.4.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.4.0", - "body": "Use Bearer tokens to access private repositories" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/22059955", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/22059955/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/22059955/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.3.0", - "id": 22059955, - "node_id": "MDc6UmVsZWFzZTIyMDU5OTU1", - "tag_name": "2.3.0", - "target_commitish": "master", - "name": "Laravel 6 compatibility", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-12-08T23:02:03Z", - "published_at": "2019-12-08T23:03:20Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.3.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.3.0", - "body": "* Drop PHP 7.1 support\r\n* Laravel 5.8 and 6.x compatibility" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/21934576", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/21934576/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/21934576/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.2.0", - "id": 21934576, - "node_id": "MDc6UmVsZWFzZTIxOTM0NTc2", - "tag_name": "2.2.0", - "target_commitish": "master", - "name": "Security update", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-12-03T16:09:48Z", - "published_at": "2019-12-03T16:10:55Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.2.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.2.0", - "body": "" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/20826588", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/20826588/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/20826588/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.1.3", - "id": 20826588, - "node_id": "MDc6UmVsZWFzZTIwODI2NTg4", - "tag_name": "2.1.3", - "target_commitish": "master", - "name": "", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-10-19T17:52:07Z", - "published_at": "2019-10-19T17:52:38Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.1.3", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.1.3", - "body": "" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16591367", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16591367/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/16591367/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.1.2", - "id": 16591367, - "node_id": "MDc6UmVsZWFzZTE2NTkxMzY3", - "tag_name": "2.1.2", - "target_commitish": "707c6081562afba4b161f7245c877fef3b7b9537", - "name": "", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-04-05T21:23:25Z", - "published_at": "2019-04-05T21:23:51Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.1.2", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.1.2", - "body": "" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16591035", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16591035/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/16591035/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.1.1", - "id": 16591035, - "node_id": "MDc6UmVsZWFzZTE2NTkxMDM1", - "tag_name": "2.1.1", - "target_commitish": "274032377c501a7f284b205b7715e5148c1e677d", - "name": "", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-04-05T21:03:21Z", - "published_at": "2019-04-05T21:04:08Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.1.1", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.1.1", - "body": "" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16587275", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16587275/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/16587275/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.1.0", - "id": 16587275, - "node_id": "MDc6UmVsZWFzZTE2NTg3Mjc1", - "tag_name": "2.1.0", - "target_commitish": "dce1b16ad87d8d908ff421726719d68c3bd6eac7", - "name": "", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-04-05T17:48:00Z", - "published_at": "2019-04-05T17:49:18Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.1.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.1.0", - "body": "Add auto-discovery for this package" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16586713", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16586713/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/16586713/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/2.0.0", - "id": 16586713, - "node_id": "MDc6UmVsZWFzZTE2NTg2NzEz", - "tag_name": "2.0.0", - "target_commitish": "4390455113da60c0817117805a8f8692ef7f18ee", - "name": "", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-04-05T17:17:36Z", - "published_at": "2019-04-05T17:24:31Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/2.0.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/2.0.0", - "body": "* Dropping support for PHP 5.x, 7.0\r\n* Support for >=7.1" - }, - { - "url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16502206", - "assets_url": "https://api.github.com/repos/codedge/laravel-selfupdater/releases/16502206/assets", - "upload_url": "https://uploads.github.com/repos/codedge/laravel-selfupdater/releases/16502206/assets{?name,label}", - "html_url": "https://github.com/codedge/laravel-selfupdater/releases/tag/1.5.0", - "id": 16502206, - "node_id": "MDc6UmVsZWFzZTE2NTAyMjA2", - "tag_name": "1.5.0", - "target_commitish": "master", - "name": "", - "draft": false, - "author": { - "login": "codedge", - "id": 4409904, - "node_id": "MDQ6VXNlcjQ0MDk5MDQ=", - "avatar_url": "https://avatars3.githubusercontent.com/u/4409904?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/codedge", - "html_url": "https://github.com/codedge", - "followers_url": "https://api.github.com/users/codedge/followers", - "following_url": "https://api.github.com/users/codedge/following{/other_user}", - "gists_url": "https://api.github.com/users/codedge/gists{/gist_id}", - "starred_url": "https://api.github.com/users/codedge/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/codedge/subscriptions", - "organizations_url": "https://api.github.com/users/codedge/orgs", - "repos_url": "https://api.github.com/users/codedge/repos", - "events_url": "https://api.github.com/users/codedge/events{/privacy}", - "received_events_url": "https://api.github.com/users/codedge/received_events", - "type": "User", - "site_admin": false - }, - "prerelease": false, - "created_at": "2019-04-02T13:27:54Z", - "published_at": "2019-04-02T13:29:46Z", - "assets": [ - - ], - "tarball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/tarball/1.5.0", - "zipball_url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/1.5.0", - "body": "" - } -] diff --git a/tests/Hooks/BypassFinalHook.php b/tests/Hooks/BypassFinalHook.php deleted file mode 100644 index f734517..0000000 --- a/tests/Hooks/BypassFinalHook.php +++ /dev/null @@ -1,16 +0,0 @@ -release = resolve(Release::class); - $this->vfs = vfsStream::setup(); - - $this->resetDownloadDir(); - } - - /** @test */ - public function it_can_get_release(): void - { - $releaseName = 'releaseName'; - $this->release->setRelease($releaseName); - - $this->assertEquals($releaseName, $this->release->getRelease()); - } - - /** @test */ - public function it_can_get_storage_path(): void - { - $this->assertNull($this->release->getStoragePath()); - - $storagePath = Str::finish($this->vfs->url(), DIRECTORY_SEPARATOR).'tmp/releaseName.zip'; - $this->release->setStoragePath($storagePath); - - $this->assertEquals($storagePath, $this->release->getStoragePath()); - } - - /** @test */ - public function it_can_update_storage_path_when_having_release_name(): void - { - $releaseName = 'releaseName'; - $storagePathWithoutFilename = Str::finish($this->vfs->url(), DIRECTORY_SEPARATOR).'tmp'; - - $this->release->setStoragePath($storagePathWithoutFilename); - $this->assertEquals($storagePathWithoutFilename, $this->release->getStoragePath()); - - $this->release->setRelease($releaseName)->updateStoragePath(); - $this->assertEquals( - Str::finish($storagePathWithoutFilename, DIRECTORY_SEPARATOR).$releaseName, - $this->release->getStoragePath() - ); - } - - /** @test */ - public function it_should_not_update_storage_path_when_not_having_release_name(): void - { - $storagePath = Str::finish($this->vfs->url(), DIRECTORY_SEPARATOR).'tmp'; - - $this->release->setStoragePath($storagePath); - $this->assertEquals($storagePath, $this->release->getStoragePath()); - - $this->release->updateStoragePath(); - $this->assertEquals($storagePath, $this->release->getStoragePath()); - } - - /** @test */ - public function it_can_get_update_path(): void - { - $this->assertNull($this->release->getUpdatePath()); - } - - /** @test */ - public function it_can_set_update_path_without_exclude_dirs(): void - { - $mainDirectory = '/tmp'; - $subDirectory = 'new-directory-inside'; - - vfsStream::newDirectory($mainDirectory.'/'.$subDirectory)->at($this->vfs); - $this->release->setUpdatePath(Str::finish($this->vfs->url(), DIRECTORY_SEPARATOR).$mainDirectory); - - foreach ($this->release->getUpdatePath()->directories() as $dir) { - $this->assertEquals($dir->getPath(), $this->vfs->url().'/'.$mainDirectory); - $this->assertEquals($subDirectory, $dir->getFilename()); - $this->assertEquals($subDirectory, $dir->getBasename()); - } - } - - /** @test */ - public function it_can_get_version(): void - { - $this->assertNull($this->release->getVersion()); - } - - /** @test */ - public function it_can_set_version(): void - { - $this->release->setVersion('release-1.2.zip'); - $this->assertEquals('release-1.2.zip', $this->release->getVersion()); - } - - /** @test */ - public function it_can_get_download_url(): void - { - $this->assertNull($this->release->getDownloadUrl()); - } - - /** @test */ - public function it_can_set_download_url(): void - { - $this->release->setDownloadUrl('my-download-url'); - $this->assertEquals('my-download-url', $this->release->getDownloadUrl()); - } - - /** @test */ - public function it_cannot_extract_zip_and_fails_with_exception(): void - { - $this->release->setStoragePath('/tmp')->setRelease('release-test-99.zip')->updateStoragePath(); - $this->expectException(\Exception::class); - $this->release->extract(); - } - - /** @test */ - public function it_can_extract_zip_to_storage_path(): void - { - $this->release->setStoragePath((string) config('self-update.repository_types.github.download_path'))->setRelease('release-test-1.2.zip')->updateStoragePath(); - - $zip = new \ZipArchive(); - $res = $zip->open($this->release->getStoragePath(), \ZipArchive::CREATE); - - if ($res === true) { - $zip->addFile(__DIR__.'/../Data/releases-branch.json'); - $zip->close(); - - $this->assertTrue($this->release->extract()); - } else { - var_dump($res); - exit('Cannot open zip.'); - } - } - - /** @test */ - public function it_cannot_download_and_fails_with_exception(): void - { - $this->expectException(\Exception::class); - $this->release->download(); - } - - /** @test */ - public function it_can_download(): void - { - $this->release->setDownloadUrl('https://github.com/some-file') - ->setStoragePath((string) config('self-update.repository_types.github.download_path')) - ->setRelease('release-1.0.zip') - ->updateStoragePath(); - - Http::fake([ - 'https://github.com/*' => $this->getResponse200Type('tag'), - ]); - - $response = $this->release->download(); - - $this->assertEquals(200, $response->status()); - $this->assertFileExists($this->release->getStoragePath()); - } - - /** @test */ - public function it_checks_source_is_not_fetched(): void - { - $this->release->setStoragePath($this->vfs->url().'release-1.2.zip'); - - $this->assertFalse($this->release->isSourceAlreadyFetched()); - } - - /** @test */ - public function it_checks_source_is_already_fetched_but_not_extracted(): void - { - $file = 'release-1.2.zip'; - $storagePath = Str::finish($this->vfs->url(), DIRECTORY_SEPARATOR).$file; - vfsStream::newFile($file)->at($this->vfs); - - $this->release->setStoragePath($storagePath); - - $this->assertTrue($this->release->isSourceAlreadyFetched()); - } - - /** @test */ - public function it_checks_source_is_already_extracted_and_directory_still_present(): void - { - vfsStream::newDirectory('release-1.2')->at($this->vfs); - $this->release->setStoragePath(Str::finish($this->vfs->url(), DIRECTORY_SEPARATOR).'release-1.2.zip'); - - $this->assertTrue($this->release->isSourceAlreadyFetched()); - } - - /** @test */ - public function it_checks_source_is_already_extracted_and_directory_deleted(): void - { - vfsStream::newDirectory('release-1.2')->at($this->vfs); - $this->release->setStoragePath(Str::finish($this->vfs->url(), DIRECTORY_SEPARATOR).'release-1.2.zip'); - $this->vfs->getChild('release-1.2.zip')->rename('removed'); - - $this->assertTrue($this->release->isSourceAlreadyFetched()); - } -} diff --git a/tests/Models/UpdateExecutorTest.php b/tests/Models/UpdateExecutorTest.php deleted file mode 100644 index 46911f8..0000000 --- a/tests/Models/UpdateExecutorTest.php +++ /dev/null @@ -1,91 +0,0 @@ -release = resolve(Release::class); - - $this->vfs = vfsStream::setup(); - - $this->resetDownloadDir(); - } - - /** @test */ - public function it_can_run_successfully(): void - { - $dir = config('self-update.repository_types.github.download_path').'/update-dir'; - File::makeDirectory($dir, 0775, true, true); - - Http::fake([ - '*' => $this->getResponse200ZipFile(), - ]); - - $this->release->setVersion('release-1.2') - ->setStoragePath((string) config('self-update.repository_types.github.download_path')) - ->setRelease('release-1.2.zip') - ->updateStoragePath() - ->setDownloadUrl('some/url/') - ->download(); - $this->release->extract(); - - $updateExecutor = (new UpdateExecutor())->setBasePath($dir); - - Event::fake(); - - $this->assertTrue($updateExecutor->run($this->release)); - $this->assertTrue(File::exists($dir.'/.some-hidden-file')); - $this->assertTrue(File::exists($dir.'/outer-file.txt')); - $this->assertTrue(File::exists($dir.'/folder1')); - $this->assertEmpty(File::allFiles($dir.'/folder1')); - $this->assertTrue(File::exists($dir.'/folder2')); - $this->assertTrue(File::exists($dir.'/folder2/samplefile-in-folder2.txt')); - $this->assertCount(1, File::allFiles($dir.'/folder2')); - $this->assertFalse(File::exists($dir.'/node_modules')); - $this->assertFalse(File::exists($dir.'/__MACOSX')); - $this->assertFalse(File::exists($dir.'/release-1.2')); - $this->assertFalse(File::exists($dir.'/release-1.2.zip')); - - Event::assertDispatched(UpdateSucceeded::class, 1); - Event::assertNotDispatched(UpdateFailed::class); - } - - /** @test */ - public function it_can_run_and_fail(): void - { - vfsStream::newDirectory('updateDirectory')->at($this->vfs); - vfsStream::newFile('sample-file', 0500)->at($this->vfs); - - $basePath = $this->vfs->url().'/updateDirectory'; - - $this->release->setUpdatePath($basePath)->setStoragePath(''); - - Event::fake(); - - $result = (new UpdateExecutor())->setBasePath($basePath) - ->run($this->release); - $this->assertFalse($result); - - Event::assertDispatched(UpdateFailed::class, 1); - Event::assertNotDispatched(UpdateSucceeded::class); - } -} diff --git a/tests/Notifications/EventHandlerTest.php b/tests/Notifications/EventHandlerTest.php deleted file mode 100644 index 48d6757..0000000 --- a/tests/Notifications/EventHandlerTest.php +++ /dev/null @@ -1,66 +0,0 @@ -fireUpdateFailedEvent(); - - Notification::assertSentTo(new Notifiable(), UpdateFailedNotification::class); - } - - /** - * @test - * - * @dataProvider channelProvider - * - * @param array> $expectedChannels - */ - public function it_will_send_a_notification_via_the_configured_notification_channels(array $expectedChannels): void - { - config()->set('self-update.notifications.notifications.'.UpdateFailedNotification::class, $expectedChannels); - - $this->fireUpdateFailedEvent(); - - Notification::assertSentTo(new Notifiable(), UpdateFailedNotification::class, function ($notification, $usedChannels) use ($expectedChannels) { - return $expectedChannels == $usedChannels; - }); - } - - /** - * @return array> - */ - public function channelProvider(): array - { - return [ - [[]], - [['mail']], - ]; - } - - protected function fireUpdateFailedEvent(): void - { - $release = resolve(Release::class); - - event(new UpdateFailed($release)); - } -} diff --git a/tests/SourceRepositoryTypes/GiteaRepositoryTypeTest.php b/tests/SourceRepositoryTypes/GiteaRepositoryTypeTest.php deleted file mode 100644 index f59ae23..0000000 --- a/tests/SourceRepositoryTypes/GiteaRepositoryTypeTest.php +++ /dev/null @@ -1,177 +0,0 @@ -resetDownloadDir(); - } - - /** @test */ - public function it_can_instantiate(): void - { - $this->assertInstanceOf(GiteaRepositoryType::class, resolve(GiteaRepositoryType::class)); - } - - /** @test */ - public function it_can_run_update(): void - { - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - - /** @var Release $release */ - $release = resolve(Release::class); - $release->setStoragePath((string) config('self-update.repository_types.gitea.download_path')) - ->setVersion('1.0') - ->setRelease('release-1.0.zip') - ->updateStoragePath() - ->setDownloadUrl('https://gitea.com/download/target'); - - Event::fake(); - Http::fake([ - 'gitea.com/*' => $this->getResponse200ZipFile(), - ]); - $release->download(); - $release->extract(); - - $this->assertTrue($gitea->update($release)); - - Event::assertDispatched(UpdateSucceeded::class, 1); - Event::assertDispatched(UpdateSucceeded::class, function (UpdateSucceeded $e) use ($release) { - return $e->getVersionUpdatedTo() === $release->getVersion(); - }); - } - - /** @test */ - public function it_can_get_the_version_installed(): void - { - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - $this->assertEmpty($gitea->getVersionInstalled()); - - config(['self-update.version_installed' => '1.0']); - $this->assertEquals('1.0', $gitea->getVersionInstalled()); - } - - /** @test */ - public function it_cannot_get_new_version_available_and_fails_with_exception(): void - { - $this->expectException(VersionException::class); - $this->expectExceptionMessage('Version installed not found.'); - - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - $gitea->isNewVersionAvailable(); - } - - /** @test */ - public function it_can_get_new_version_available_without_version_file(): void - { - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - $gitea->deleteVersionFile(); - - Event::fake(); - Http::fake([ - '*' => $this->getResponse200Type('gitea'), - ]); - - $this->assertFalse($gitea->isNewVersionAvailable('2.7')); - $this->assertTrue($gitea->isNewVersionAvailable('0.0.1')); - - Event::assertDispatched(UpdateAvailable::class, 1); - Event::assertDispatched(UpdateAvailable::class, function (UpdateAvailable $e) use ($gitea) { - return $e->getVersionAvailable() === $gitea->getVersionAvailable(); - }); - } - - /** @test */ - public function it_cannot_fetch_releases_because_there_is_no_release(): void - { - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - - Http::fake([ - '*' => $this->getResponseEmpty(), - ]); - - $this->expectException(ReleaseException::class); - $this->expectExceptionMessage('No release found for version "latest version". Please check the repository you\'re pulling from'); - - $this->assertInstanceOf(Release::class, $gitea->fetch()); - } - - /** @test */ - public function it_can_fetch_releases(): void - { - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('gitea')) - ->pushResponse($this->getResponse200ZipFile()) - ->pushResponse($this->getResponse200Type('gitea')); - - $release = $gitea->fetch(); - - $this->assertInstanceOf(Release::class, $release); - } - - /** @test */ - public function it_can_get_specific_release_from_collection(): void - { - $items = [ - [ - 'tag_name' => '1.3', - 'name' => 'New version 1.3', - ], - [ - 'tag_name' => '1.2', - 'name' => 'New version 1.2', - ], - ]; - - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - - $this->assertEquals($items[1], $gitea->selectRelease(collect($items), '1.2')); - } - - /** @test */ - public function it_takes_latest_release_if_no_other_found(): void - { - $items = [ - [ - 'tag_name' => '1.3', - 'name' => 'New version 1.3', - ], - [ - 'tag_name' => '1.2', - 'name' => 'New version 1.2', - ], - ]; - - /** @var GiteaRepositoryType $gitea */ - $gitea = resolve(GiteaRepositoryType::class); - - Log::shouldReceive('info')->once()->with('No release for version "1.7" found. Selecting latest.'); - - $this->assertEquals('1.3', $gitea->selectRelease(collect($items), '1.7')['tag_name']); - } -} diff --git a/tests/SourceRepositoryTypes/GithubRepositoryTypeTest.php b/tests/SourceRepositoryTypes/GithubRepositoryTypeTest.php deleted file mode 100644 index 93f33df..0000000 --- a/tests/SourceRepositoryTypes/GithubRepositoryTypeTest.php +++ /dev/null @@ -1,299 +0,0 @@ -resetDownloadDir(); - } - - /** @test */ - public function it_can_instantiate(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - $this->assertInstanceOf(GithubTagType::class, $github); - } - - /** @test */ - public function it_can_instantiate_branch_type(): void - { - config(['self-update.repository_types.github.use_branch' => 'v2']); - - /** @var GithubBranchType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - $this->assertInstanceOf(GithubBranchType::class, $github); - } - - /** @test */ - public function it_cannot_instantiate_and_fails_with_exception(): void - { - config(['self-update.repository_types.github.repository_vendor' => '']); - - $this->expectException(\Exception::class); - - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - } - - /** @test */ - public function it_can_run_update(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fake([ - '*' => $this->getResponse200ZipFile(), - ]); - - /** @var Release $release */ - $release = resolve(Release::class); - $release->setStoragePath((string) config('self-update.repository_types.github.download_path')) - ->setVersion('1.0') - ->setRelease('release-1.0.zip') - ->updateStoragePath() - ->setDownloadUrl('some-local-file') - ->download(); - $release->extract(); - - Event::fake(); - - $this->assertTrue($github->update($release)); - - Event::assertDispatched(UpdateSucceeded::class, 1); - Event::assertDispatched(UpdateSucceeded::class, function (UpdateSucceeded $e) use ($release) { - return $e->getVersionUpdatedTo() === $release->getVersion(); - }); - } - - /** @test */ - public function it_can_get_the_version_installed(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - $this->assertEmpty($github->getVersionInstalled()); - - config(['self-update.version_installed' => '1.0']); - $this->assertEquals('1.0', $github->getVersionInstalled()); - } - - /** @test */ - public function it_cannot_get_new_version_available_and_fails_with_exception(): void - { - $this->expectException(VersionException::class); - $this->expectExceptionMessage('Version installed not found.'); - - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - $github->isNewVersionAvailable(); - } - - /** @test */ - public function it_can_get_new_version_available_from_type_tag_without_version_file(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - $github->deleteVersionFile(); - - Event::fake(); - Http::fake([ - '*' => $this->getResponse200Type('tag'), - ]); - - $this->assertFalse($github->isNewVersionAvailable('2.7')); - $this->assertTrue($github->isNewVersionAvailable('1.1')); - - Event::assertDispatched(UpdateAvailable::class, 1); - Event::assertDispatched(UpdateAvailable::class, function (UpdateAvailable $e) use ($github) { - return $e->getVersionAvailable() === $github->getVersionAvailable(); - }); - } - - /** @test */ - public function it_can_get_new_version_available_from_type_tag_with_version_file(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - $github->setVersionFile('v2.7'); - - $this->assertFalse($github->isNewVersionAvailable('v2.7')); - - $github->setVersionFile('v2.7'); - $this->assertTrue($github->isNewVersionAvailable('v1.1')); - - $this->assertEquals('v2.7', $github->getVersionFile()); - } - - /** @test */ - public function it_can_get_new_version_available_from_type_branch_without_version_file(): void - { - config(['self-update.repository_types.github.use_branch' => 'v2']); - - /** @var GithubBranchType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - $github->deleteVersionFile(); - - Http::fake([ - '*' => $this->getResponse200Type('branch'), - ]); - - $this->assertFalse($github->isNewVersionAvailable('2020-02-08T21:09:15Z')); - $this->assertTrue($github->isNewVersionAvailable('2020-02-04T21:09:15Z')); - } - - /** @test */ - public function it_can_get_new_version_available_from_type_branch_with_version_file(): void - { - config(['self-update.repository_types.github.use_branch' => 'v2']); - - /** @var GithubBranchType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - $github->setVersionFile('2020-02-07T21:09:15Z'); - - $this->assertFalse($github->isNewVersionAvailable('2020-02-08T21:09:15Z')); - $this->assertTrue($github->isNewVersionAvailable('2020-02-04T21:09:15Z')); - } - - /** @test */ - public function it_can_fetch_github_tag_releases_latest(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('tag')) - ->pushResponse($this->getResponse200ZipFile()); - - $release = $github->fetch(); - - $this->assertInstanceOf(Release::class, $release); - $this->assertEquals('2.6.1', $release->getVersion()); - $this->assertEquals('2.6.1.zip', $release->getRelease()); - } - - /** @test */ - public function it_can_fetch_github_tag_releases_specific_version(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('tag')) - ->pushResponse($this->getResponse200ZipFile()); - - $release = $github->fetch('2.6.0'); - - $this->assertInstanceOf(Release::class, $release); - $this->assertEquals('2.6.0', $release->getVersion()); - $this->assertEquals('2.6.0.zip', $release->getRelease()); - } - - /** @test */ - public function it_can_fetch_github_tag_releases_and_takes_latest_if_version_not_available(): void - { - /** @var GithubTagType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('tag')) - ->pushResponse($this->getResponse200ZipFile()); - - $release = $github->fetch('v3.22.1'); - - $this->assertInstanceOf(Release::class, $release); - $this->assertEquals('2.6.1', $release->getVersion()); - $this->assertEquals('2.6.1.zip', $release->getRelease()); - } - - /** @test */ - public function it_can_fetch_github_branch_releases_latest(): void - { - config(['self-update.repository_types.github.use_branch' => 'v2']); - - /** @var GithubBranchType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('branch')) - ->pushResponse($this->getResponse200ZipFile()); - - $release = $github->fetch(); - - $this->assertInstanceOf(Release::class, $release); - $this->assertEquals('2020-02-06T21:09:15Z', $release->getVersion()); - $this->assertEquals('e8f19f9b63b5b92f31ddc4a3463dcc231301adea.zip', $release->getRelease()); - } - - /** @test */ - public function it_can_fetch_github_branch_releases_specific_version(): void - { - config(['self-update.repository_types.github.use_branch' => 'v2']); - - /** @var GithubBranchType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('branch')) - ->pushResponse($this->getResponse200ZipFile()); - - $release = $github->fetch('2020-02-06T09:35:51Z'); - - $this->assertInstanceOf(Release::class, $release); - $this->assertEquals('2020-02-06T09:35:51Z', $release->getVersion()); - $this->assertEquals('4f82f1b9037530baa8775e41e16d82e8db97110f.zip', $release->getRelease()); - } - - /** @test */ - public function it_can_fetch_github_branch_releases_and_takes_latest_if_version_not_available(): void - { - config(['self-update.repository_types.github.use_branch' => 'v2']); - - /** @var GithubBranchType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('branch')) - ->pushResponse($this->getResponse200ZipFile()); - - $release = $github->fetch('2020-01-01T11:11:11Z'); - - $this->assertInstanceOf(Release::class, $release); - $this->assertEquals('2020-02-06T21:09:15Z', $release->getVersion()); - $this->assertEquals('e8f19f9b63b5b92f31ddc4a3463dcc231301adea.zip', $release->getRelease()); - } - - /** @test */ - public function it_cannot_fetch_github_branch_releases_if_response_empty(): void - { - config(['self-update.repository_types.github.use_branch' => 'v2']); - - /** @var GithubBranchType $github */ - $github = resolve(GithubRepositoryType::class)->create(); - - Http::fake([ - '*' => $this->getResponseEmpty(), - ]); - - $this->expectException(Exception::class); - $github->fetch(); - } -} diff --git a/tests/SourceRepositoryTypes/GitlabRepositoryTypeTest.php b/tests/SourceRepositoryTypes/GitlabRepositoryTypeTest.php deleted file mode 100644 index 06d0519..0000000 --- a/tests/SourceRepositoryTypes/GitlabRepositoryTypeTest.php +++ /dev/null @@ -1,199 +0,0 @@ -resetDownloadDir(); - } - - /** @test */ - public function it_can_instantiate(): void - { - $this->assertInstanceOf(GitlabRepositoryType::class, resolve(GitlabRepositoryType::class)); - } - - /** @test */ - public function it_can_run_update(): void - { - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - - /** @var Release $release */ - $release = resolve(Release::class); - $release->setStoragePath((string) config('self-update.repository_types.gitlab.download_path')) - ->setVersion('1.0') - ->setRelease('release-1.0.zip') - ->updateStoragePath() - ->setDownloadUrl('https://gitlab.com/download/target'); - - Event::fake(); - Http::fake([ - 'gitlab.com/*' => $this->getResponse200ZipFile(), - ]); - $release->download(); - $release->extract(); - - $this->assertTrue($gitlab->update($release)); - - Event::assertDispatched(UpdateSucceeded::class, 1); - Event::assertDispatched(UpdateSucceeded::class, function (UpdateSucceeded $e) use ($release) { - return $e->getVersionUpdatedTo() === $release->getVersion(); - }); - } - - /** @test */ - public function it_can_get_the_version_installed(): void - { - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - $this->assertEmpty($gitlab->getVersionInstalled()); - - config(['self-update.version_installed' => '1.0']); - $this->assertEquals('1.0', $gitlab->getVersionInstalled()); - } - - /** @test */ - public function it_cannot_get_new_version_available_and_fails_with_exception(): void - { - $this->expectException(VersionException::class); - $this->expectExceptionMessage('Version installed not found.'); - - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - $gitlab->isNewVersionAvailable(); - } - - /** @test */ - public function it_can_get_new_version_available_without_version_file(): void - { - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - $gitlab->deleteVersionFile(); - - Event::fake(); - Http::fake([ - '*' => $this->getResponse200Type('gitlab'), - ]); - - $this->assertFalse($gitlab->isNewVersionAvailable('2.7')); - $this->assertTrue($gitlab->isNewVersionAvailable('0.8')); - - Event::assertDispatched(UpdateAvailable::class, 1); - Event::assertDispatched(UpdateAvailable::class, function (UpdateAvailable $e) use ($gitlab) { - return $e->getVersionAvailable() === $gitlab->getVersionAvailable(); - }); - } - - /** @test */ - public function it_cannot_fetch_releases_because_there_is_no_release(): void - { - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - - Http::fake([ - '*' => $this->getResponseEmpty(), - ]); - - $this->expectException(ReleaseException::class); - $this->expectExceptionMessage('No release found for version "latest version". Please check the repository you\'re pulling from'); - - $this->assertInstanceOf(Release::class, $gitlab->fetch()); - } - - /** @test */ - public function it_can_fetch_releases(): void - { - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - - Http::fakeSequence() - ->pushResponse($this->getResponse200Type('gitlab')) - ->pushResponse($this->getResponse200ZipFile()) - ->pushResponse($this->getResponse200Type('gitlab')); - - $release = $gitlab->fetch(); - - $this->assertInstanceOf(Release::class, $release); - } - - /** @test */ - public function it_can_get_specific_release_from_collection(): void - { - $items = [ - [ - 'tag_name' => '1.3', - 'name' => 'New version 1.3', - ], - [ - 'tag_name' => '1.2', - 'name' => 'New version 1.2', - ], - ]; - - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - - $this->assertEquals($items[1], $gitlab->selectRelease(collect($items), '1.2')); - } - - /** @test */ - public function it_takes_latest_release_if_no_other_found(): void - { - $items = [ - [ - 'tag_name' => '1.3', - 'name' => 'New version 1.3', - ], - [ - 'tag_name' => '1.2', - 'name' => 'New version 1.2', - ], - ]; - - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - - Log::shouldReceive('info')->once()->with('No release for version "1.7" found. Selecting latest.'); - - $this->assertEquals('1.3', $gitlab->selectRelease(collect($items), '1.7')['tag_name']); - } - - /** @test */ - public function it_can_use_default_base_url(): void - { - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - $urls = $gitlab->getReleaseUrl(); - - $this->assertEquals('https://gitlab.com', $urls['base_url']); - } - - /** @test */ - public function it_can_use_base_url_from_config(): void - { - config(['self-update.repository_types.gitlab.base_url' => 'https://example.local']); - - /** @var GitlabRepositoryType $gitlab */ - $gitlab = resolve(GitlabRepositoryType::class); - $urls = $gitlab->getReleaseUrl(); - - $this->assertEquals('https://example.local', $urls['base_url']); - } -} diff --git a/tests/SourceRepositoryTypes/HttpRepositoryTypeTest.php b/tests/SourceRepositoryTypes/HttpRepositoryTypeTest.php deleted file mode 100644 index 6f4eaad..0000000 --- a/tests/SourceRepositoryTypes/HttpRepositoryTypeTest.php +++ /dev/null @@ -1,207 +0,0 @@ -resetDownloadDir(); - } - - /** @test */ - public function it_can_instantiate(): void - { - $this->assertInstanceOf(HttpRepositoryType::class, resolve(HttpRepositoryType::class)); - } - - /** @test */ - public function it_can_run_update(): void - { - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - - Http::fake([ - '*' => $this->getResponse200ZipFile(), - ]); - - $release = resolve(Release::class); - $release->setStoragePath((string) config('self-update.repository_types.http.download_path')) - ->setRelease('release-1.0.zip') - ->updateStoragePath() - ->setDownloadUrl('some-local-file') - ->download(); - $release->extract(); - - $this->assertTrue($http->update($release)); - } - - /** @test */ - public function it_cannot_fetch_http_releases_if_no_url_specified(): void - { - config(['self-update.repository_types.http.repository_url' => '']); - - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - - $this->expectException(Exception::class); - $http->fetch(); - } - - /** @test */ - public function it_cannot_fetch_releases_because_there_is_no_release(): void - { - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - - Http::fakeSequence() - ->pushResponse($this->getResponse200HttpType()) - ->pushResponse($this->getResponse200ZipFile()); - - //$this->expectException(ReleaseException::class); - //$this->expectExceptionMessage('Archive file "/tmp/self-updater/v/invoiceninja/invoiceninja/archive/v4.5.17.zip" not found.'); - - $this->assertInstanceOf(Release::class, $http->fetch()); - } - - /** @test */ - public function it_can_fetch_http_releases(): void - { - /** @var HttpRepositoryType $http */ - $http = $this->app->make(HttpRepositoryType::class); - - Http::fakeSequence() - ->pushResponse($this->getResponse200HttpType()) - ->pushResponse($this->getResponse200ZipFile()) - ->pushResponse($this->getResponse200HttpType()) - ->pushResponse($this->getResponse200HttpType()); - - File::shouldReceive('exists')->andReturnTrue(); - - $release = $http->fetch(); - - $this->assertInstanceOf(Release::class, $release); - } - - /** @test */ - public function it_can_get_the_version_installed(): void - { - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - $this->assertEmpty($http->getVersionInstalled()); - - config(['self-update.version_installed' => '1.0']); - $this->assertEquals('1.0', $http->getVersionInstalled()); - } - - /** @test */ - public function it_can_get_latest_release_from_collection(): void - { - $items = [ - ['name' => '1.3'], - ['name' => '1.2'], - ]; - - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - - $this->assertEquals($items[0], $http->selectRelease(collect($items), '')); - } - - /** @test */ - public function it_can_get_specific_release_from_collection(): void - { - $items = [ - ['name' => '1.3'], - ['name' => '1.2'], - ]; - - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - - $this->assertEquals($items[1], $http->selectRelease(collect($items), '1.2')); - } - - /** @test */ - public function it_cannot_find_specific_release_and_returns_first_from_collection(): void - { - $items = [ - ['name' => '1.3'], - ['name' => '1.2'], - ]; - - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - - $this->assertEquals($items[0], $http->selectRelease(collect($items), '1.4')); - } - - /** @test */ - public function it_cannot_get_new_version_available_and_fails_with_exception(): void - { - $this->expectException(VersionException::class); - $this->expectExceptionMessage('Version installed not found.'); - - /** @var HttpRepositoryType $http */ - $http = resolve(HttpRepositoryType::class); - $http->isNewVersionAvailable(); - } - - /** @test */ - public function it_can_get_new_version_available_without_version_file(): void - { - /** @var HttpRepositoryType $http */ - $http = $this->app->make(HttpRepositoryType::class); - $http->deleteVersionFile(); - - Http::fakeSequence() - ->pushResponse($this->getResponse200HttpType()) - ->pushResponse($this->getResponse200HttpType()); - - $this->assertTrue($http->isNewVersionAvailable('4.5')); - $this->assertFalse($http->isNewVersionAvailable('5.0')); - } - - /** @test */ - public function it_can_build_releases_from_local_source(): void - { - config(['self-update.repository_types.http.repository_url' => 'http://update-server.localhost/']); - config(['self-update.repository_types.http.pkg_filename_format' => 'my-test-project-\d+\.\d+']); - - /** @var HttpRepositoryType $http */ - $http = $this->app->make(HttpRepositoryType::class); - $content = file_get_contents('tests/Data/Http/releases-http_local.json'); - - $collection = $http->extractFromHtml($content); - - $this->assertSame('1.0', $collection->first()->name); - $this->assertSame('http://update-server.localhost/my534/my-test-project/-/archive/1.0/my-test-project-1.0.zip', $collection->first()->zipball_url); - } - - /** @test */ - public function it_can_build_releases_from_github_source(): void - { - config(['self-update.repository_types.http.repository_url' => 'https://github.com/']); - - /** @var HttpRepositoryType $http */ - $http = $this->app->make(HttpRepositoryType::class); - $content = file_get_contents('tests/Data/Http/releases-http_gh.json'); - - $collection = $http->extractFromHtml($content); - - $this->assertSame('4.5.17', $collection->first()->name); - $this->assertSame('https://github.com/invoiceninja/invoiceninja/archive/v4.5.17.zip', $collection->first()->zipball_url); - } -} diff --git a/tests/TestCase.php b/tests/TestCase.php deleted file mode 100644 index 3b39ba0..0000000 --- a/tests/TestCase.php +++ /dev/null @@ -1,139 +0,0 @@ - */ - protected array $mockedResponses = [ - 'tag' => 'releases-tag.json', - 'branch' => 'releases-branch.json', - 'http' => 'releases-http_gh.json', - 'gitlab' => 'releases-gitlab.json', - 'gitea' => 'releases-gitea.json', - ]; - - /** - * @param Application $app - */ - protected function getEnvironmentSetUp($app): void - { - $app['config']->set('self-update.repository_types', [ - 'github' => [ - 'type' => 'github', - 'repository_vendor' => 'laravel', - 'repository_name' => 'laravel', - 'repository_url' => '', - 'download_path' => self::DOWNLOAD_PATH, - 'private_access_token' => '', - 'use_branch' => '', - ], - 'gitlab' => [ - 'type' => 'gitlab', - 'repository_id' => '35488518', - 'download_path' => self::DOWNLOAD_PATH, - 'private_access_token' => '', - ], - 'http' => [ - 'type' => 'http', - 'repository_url' => 'https://github.com/invoiceninja/invoiceninja/releases', - 'pkg_filename_format' => env('SELF_UPDATER_PKG_FILENAME_FORMAT', 'v_VERSION_'), - 'download_path' => self::DOWNLOAD_PATH, - 'private_access_token' => '', - ], - 'gitea' => [ - 'type' => 'gitea', - 'repository_vendor' => 'phillopp', - 'gitea_url' => 'https://try.gitea.io', - 'repository_name' => 'emptyRepo', - 'download_path' => self::DOWNLOAD_PATH, - 'private_access_token' => '', - ], - ]); - } - - protected function getResponse200HttpType(): PromiseInterface - { - $stream = Utils::streamFor(fopen('tests/Data/Http/'.$this->mockedResponses['http'], 'r')); - $response = $stream->getContents(); - - return Http::response($response, 200, [ - 'Content-Type' => 'application/html', - ]); - } - - protected function getResponse200Type(string $type): PromiseInterface - { - $stream = Utils::streamFor(fopen('tests/Data/'.$this->mockedResponses[$type], 'r')); - $response = json_decode($stream->getContents(), true); - - return Http::response($response, 200, [ - 'Content-Type' => 'application/json', - ]); - } - - protected function getResponse200ZipFile(): PromiseInterface - { - $stream = Utils::streamFor(fopen(__DIR__.'/Data/release-1.2.zip', 'r')); - $response = $stream->getContents(); - - return Http::response($response, 200, [ - 'Content-Type' => 'application/zip', - 'Content-Disposition' => 'attachment; filename="release-1.2.zip"', - ]); - } - - protected function getResponseEmpty(): PromiseInterface - { - return Http::response( - '', - 200, - ['Content-Type' => 'text/html'], - ); - } - - protected function resetDownloadDir(): void - { - /** @var Filesystem $filesystem */ - $filesystem = $this->app->make(Filesystem::class); - - if ($filesystem->exists(self::DOWNLOAD_PATH)) { - $filesystem->deleteDirectory(self::DOWNLOAD_PATH); - } - - $filesystem->makeDirectory(self::DOWNLOAD_PATH); - } - - /** - * @param Application $app - */ - protected function getPackageProviders($app): array - { - return [ - UpdaterServiceProvider::class, - ]; - } - - /** - * @param Application $app - */ - protected function getPackageAliases($app): array - { - return [ - 'Updater' => UpdaterFacade::class, - ]; - } -} diff --git a/tests/UpdaterFacadeTest.php b/tests/UpdaterFacadeTest.php deleted file mode 100644 index fa82b40..0000000 --- a/tests/UpdaterFacadeTest.php +++ /dev/null @@ -1,20 +0,0 @@ -assertInstanceOf( - UpdaterManager::class, - UpdaterFacade::getFacadeRoot() - ); - } -} diff --git a/tests/UpdaterManagerTest.php b/tests/UpdaterManagerTest.php deleted file mode 100644 index 94a6348..0000000 --- a/tests/UpdaterManagerTest.php +++ /dev/null @@ -1,145 +0,0 @@ -assertInstanceOf(UpdaterManager::class, $manager); - } - - /** @test */ - public function it_can_get_source_repository_with_default_name(): void - { - $manager = resolve(UpdaterManager::class); - $result = $manager->source(); - - $this->assertInstanceOf(SourceRepository::class, $result); - } - - /** @test */ - public function it_can_get_source_repository_with_name_github(): void - { - $manager = resolve(UpdaterManager::class); - $result = $manager->source('github'); - - $this->assertInstanceOf(SourceRepository::class, $result); - } - - /** @test */ - public function it_can_get_source_repository_with_name_http(): void - { - $manager = resolve(UpdaterManager::class); - $result = $manager->source('http'); - - $this->assertInstanceOf(SourceRepository::class, $result); - } - - /** @test */ - public function it_can_get_source_repository_with_not_existing_name(): void - { - $manager = resolve(UpdaterManager::class); - - $this->expectException(InvalidArgumentException::class); - $manager->source('test'); - } - - /** @test */ - public function it_can_get_new_version_through_updater_manager_available_from_type_tag_without_version_file(): void - { - /** @var UpdaterManager $manager */ - $manager = resolve(UpdaterManager::class); - - /** @var SourceRepository $repository */ - $repository = $manager->source(); - $repository->deleteVersionFile(); - - Http::fake([ - 'github.com/*' => $this->getResponse200Type('tag'), - ]); - - $this->assertFalse($repository->isNewVersionAvailable('2.7')); - $this->assertTrue($repository->isNewVersionAvailable('1.1')); - } - - /** @test */ - public function it_can_get_new_version_through_updater_manager_available_from_type_tag_with_version_file(): void - { - /** @var UpdaterManager $manager */ - $manager = resolve(UpdaterManager::class); - - /** @var SourceRepository $repository */ - $repository = $manager->source(''); - $repository->setVersionFile('v3.5'); - - $this->assertTrue($repository->isNewVersionAvailable('v2.7')); - $this->assertFalse($repository->isNewVersionAvailable('v4.1')); - } - - /** @test */ - public function it_can_get_the_version_installed_through_updater_manager_from_tag_type(): void - { - /** @var UpdaterManager $manager */ - $manager = resolve(UpdaterManager::class); - - /** @var SourceRepository $repository */ - $repository = $manager->source(''); - - $this->assertEmpty($repository->getVersionInstalled()); - - config(['self-update.version_installed' => '1.0']); - $this->assertEquals('1.0', $repository->getVersionInstalled()); - } - - /** @test */ - public function it_can_collect_pre_update_commands(): void - { - /** @var UpdaterManager $manager */ - $manager = resolve(UpdaterManager::class); - - /** @var SourceRepository $repository */ - $repository = $manager->source(''); - - $this->assertEquals(0, $repository->preUpdateArtisanCommands()); - } - -// public function it_can_run_pre_update_commands(): void -// { -// config(['self-update.artisan_commands.pre_update.updater:prepare' => [ -// 'class' => \App\Console\Commands\PreUpdateTasks::class, -// 'params' => [] -// ], -// ]); -// -// /** @var UpdaterManager $manager */ -// $manager = resolve(UpdaterManager::class); -// -// /** @var SourceRepository $repository */ -// $repository = $manager->source(''); -// -// $this->assertEquals(1, $repository->preUpdateArtisanCommands()); -// } - - /** @test */ - public function it_can_collect_post_update_commands(): void - { - /** @var UpdaterManager $manager */ - $manager = resolve(UpdaterManager::class); - - /** @var SourceRepository $repository */ - $repository = $manager->source(''); - - $this->assertEquals(0, $repository->postUpdateArtisanCommands()); - } -}