Merge branch 'master' of github.com:Shaarli/Shaarli into upstream

This commit is contained in:
Keith Carangelo 2021-08-26 14:17:37 -04:00
commit 6ca8ab31b2
131 changed files with 4833 additions and 2527 deletions

View file

@ -4,7 +4,6 @@
.github .github
.gitattributes .gitattributes
.gitignore .gitignore
.travis.yml
tests tests
# Docker related resources are not needed inside the container # Docker related resources are not needed inside the container

99
.github/workflows/ci.yml vendored Normal file
View file

@ -0,0 +1,99 @@
name: Shaarli CI
on: [push, pull_request]
jobs:
php:
runs-on: ubuntu-18.04
strategy:
matrix:
php-versions: ['7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
name: PHP ${{ matrix.php-versions }}
steps:
- name: Set locales
run: |
sudo locale-gen de_DE.utf8 && \
sudo locale-gen en_US.utf8 && \
sudo locale-gen fr_FR.utf8 && \
sudo dpkg-reconfigure --frontend=noninteractive locales
- name: Install Gettext
run: sudo apt-get install gettext
- name: Checkout
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: gd, xml, curl, mbstring, intl, gettext
tools: composer:v2
- name: Check PHP version
run: php -v
- name: Setup Composer from PHP version + update
run: composer config --unset platform && composer config platform.php ${{ matrix.php-versions }}
- name: Update dependencies for PHP 8.x
if: ${{ matrix.php-versions == '8.0' || matrix.php-versions == '8.1' }}
run: |
composer update --ignore-platform-req=php && \
composer remove --dev --ignore-platform-req=php phpunit/phpunit && \
composer require --dev --ignore-platform-req=php phpunit/php-text-template ^2.0 && \
composer require --dev --ignore-platform-req=php phpunit/phpunit ^9.0
- name: Update dependencies for PHP 7.x
if: ${{ matrix.php-versions != '8.0' && matrix.php-versions != '8.1' }}
run: composer update
- name: Clean up
run: make clean
- name: Check permissions
run: make check_permissions
- name: Run PHPCS
run: make code_sniffer
- name: Run tests
run: make all_tests
node:
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Yarn install
run: yarn install
- name: Verify successful frontend builds
run: yarn run build
- name: JS static analysis
run: make eslint
- name: Linter for SASS syntax
run: make sasslint
python:
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
node-version: 3.8
- name: Install dependencies
run: pip install mkdocs
- name: Build documentation
run: mkdocs build --clean

25
.github/workflows/docker-latest.yml vendored Normal file
View file

@ -0,0 +1,25 @@
name: Build/push Docker image (master/latest)
on:
push:
branches: [ master ]
jobs:
docker-build:
runs-on: ubuntu-latest
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: shaarli/shaarli:latest
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

31
.github/workflows/docker-tags.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: Build/push Docker image (tags/releases)
on:
push:
tags:
- "v*.*.*"
branches:
- "v*.*"
- release
jobs:
docker-build:
runs-on: ubuntu-latest
steps:
- name: Get the tag name
run: echo "REF=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: shaarli/shaarli:${{ env.REF }}
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

View file

@ -1,68 +0,0 @@
dist: bionic
matrix:
include:
# jobs for each supported php version
- language: php
php: nightly # PHP 8.0
install:
- composer self-update --2
- composer update --ignore-platform-req=php
- composer remove --dev --ignore-platform-req=php phpunit/phpunit
- composer require --dev --ignore-platform-req=php phpunit/php-text-template ^2.0
- composer require --dev --ignore-platform-req=php phpunit/phpunit ^9.0
- language: php
php: 7.4
- language: php
php: 7.3
- language: php
php: 7.2
- language: php
php: 7.1
# jobs for frontend builds
- language: node_js
node_js: 10
cache:
yarn: true
directories:
- $HOME/.cache/yarn
install:
- yarn install
before_script:
- PATH=${PATH//:\.\/node_modules\/\.bin/}
script:
- yarn run build # verify successful frontend builds
- make eslint # javascript static analysis
- make sasslint # linter for SASS syntax
# jobs for documentation builds
- language: python
python: 3.6
cache:
directories:
- $HOME/.cache/pip
install:
- pip install mkdocs
script:
- mkdocs build --clean
cache:
directories:
- $HOME/.composer/cache
before_install:
# Disable xdebug: it significantly speed up tests and linter, and we don't use coverage yet
- phpenv config-rm xdebug.ini || echo 'No xdebug config.'
install:
# install/update composer and php dependencies
- composer config --unset platform && composer config platform.php $TRAVIS_PHP_VERSION
- composer update
before_script:
- PATH=${PATH//:\.\/node_modules\/\.bin/}
script:
- make clean
- make check_permissions
- make code_sniffer
- make all_tests

View file

@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [v0.12.2]() - UNRELEASED ## [v0.12.2]() - UNRELEASED
> The `:master` Docker image is deprecated, please use `:latest` instead.
> The `:stable` Docker image is deprecated, please use `:release` instead.
## [v0.12.1](https://github.com/shaarli/Shaarli/releases/tag/v0.12.0) - 2020-11-12 ## [v0.12.1](https://github.com/shaarli/Shaarli/releases/tag/v0.12.0) - 2020-11-12
> nginx ([#1628](https://github.com/shaarli/Shaarli/pull/1628)) and Apache ([#1630](https://github.com/shaarli/Shaarli/pull/1630)) configurations have been reviewed. It is recommended that you > nginx ([#1628](https://github.com/shaarli/Shaarli/pull/1628)) and Apache ([#1630](https://github.com/shaarli/Shaarli/pull/1630)) configurations have been reviewed. It is recommended that you

View file

@ -13,7 +13,7 @@ _It is designed to be personal (single-user), fast and handy._
[![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli) [![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli)
• •
[![](https://img.shields.io/badge/master-v0.12.x-blue.svg)](https://github.com/shaarli/Shaarli) [![](https://img.shields.io/badge/master-v0.12.x-blue.svg)](https://github.com/shaarli/Shaarli)
[![](https://img.shields.io/travis/shaarli/Shaarli.svg?label=master)](https://travis-ci.org/shaarli/Shaarli) [![](https://github.com/shaarli/Shaarli/actions/workflows/ci.yml/badge.svg)](https://github.com/shaarli/Shaarli/actions)
[![Join the chat at https://gitter.im/shaarli/Shaarli](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/shaarli/Shaarli) [![Join the chat at https://gitter.im/shaarli/Shaarli](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/shaarli/Shaarli)
[![Bountysource](https://www.bountysource.com/badge/team?team_id=19583&style=bounties_received)](https://www.bountysource.com/teams/shaarli/issues) [![Bountysource](https://www.bountysource.com/badge/team?team_id=19583&style=bounties_received)](https://www.bountysource.com/teams/shaarli/issues)

View file

@ -187,6 +187,7 @@ class Languages
'fr' => t('French'), 'fr' => t('French'),
'jp' => t('Japanese'), 'jp' => t('Japanese'),
'ru' => t('Russian'), 'ru' => t('Russian'),
'zh_CN' => t('Chinese (Simplified)'),
]; ];
} }
} }

View file

@ -74,7 +74,7 @@ class BookmarkFileService implements BookmarkServiceInterface
$this->isLoggedIn = $isLoggedIn; $this->isLoggedIn = $isLoggedIn;
if (!$this->isLoggedIn && $this->conf->get('privacy.hide_public_links', false)) { if (!$this->isLoggedIn && $this->conf->get('privacy.hide_public_links', false)) {
$this->bookmarks = []; $this->bookmarks = new BookmarkArray();
} else { } else {
try { try {
$this->bookmarks = $this->bookmarksIO->read(); $this->bookmarks = $this->bookmarksIO->read();

View file

@ -12,8 +12,8 @@ namespace Shaarli\Formatter;
*/ */
class BookmarkDefaultFormatter extends BookmarkFormatter class BookmarkDefaultFormatter extends BookmarkFormatter
{ {
public const SEARCH_HIGHLIGHT_OPEN = '||O_HIGHLIGHT'; public const SEARCH_HIGHLIGHT_OPEN = 'SHAARLI_O_HIGHLIGHT';
public const SEARCH_HIGHLIGHT_CLOSE = '||C_HIGHLIGHT'; public const SEARCH_HIGHLIGHT_CLOSE = 'SHAARLI_C_HIGHLIGHT';
/** /**
* @inheritdoc * @inheritdoc

View file

@ -71,5 +71,11 @@
"Shaarli\\Updater\\": "application/updater", "Shaarli\\Updater\\": "application/updater",
"Shaarli\\Updater\\Exception\\": "application/updater/exception" "Shaarli\\Updater\\Exception\\": "application/updater/exception"
} }
},
"autoload-dev": {
"psr-4": {
"Shaarli\\Tests\\": "tests",
"Shaarli\\Tests\\Utils\\": "tests/utils"
}
} }
} }

518
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -14,7 +14,7 @@ the blocks defined in base.html and its included child templates.
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
{%- if 'media.readthedocs.org' not in config.extra_css[0] %} {%- if config.extra_css|length and 'media.readthedocs.org' not in config.extra_css[0] %}
<meta name="robots" content="noindex, nofollow"> <meta name="robots" content="noindex, nofollow">
{%- endif %} {%- endif %}

View file

@ -41,9 +41,10 @@ docker run hello-world
Shaarli images are available on [DockerHub](https://hub.docker.com/r/shaarli/shaarli/) `shaarli/shaarli`: Shaarli images are available on [DockerHub](https://hub.docker.com/r/shaarli/shaarli/) `shaarli/shaarli`:
- `latest`: latest branch (last release) - `latest`: master (development) branch
- `stable`: stable branch (last release in previous major version) - `vX.Y.Z`: shaarli [releases](https://github.com/shaarli/Shaarli/releases)
- `master`: master branch (development branch) - `release`: always points to the last release
- `stable` and `master`: **deprecated**. These tags are no longer maintained and may be removed without notice
These images are built automatically on DockerHub and rely on: These images are built automatically on DockerHub and rely on:

View file

@ -49,7 +49,6 @@ Usage of each plugin is documented in it's README file:
* `archiveorg`: For each Shaare, add a link to the archived page on Archive.org * `archiveorg`: For each Shaare, add a link to the archived page on Archive.org
* `default_colors`: Override default theme colors. * `default_colors`: Override default theme colors.
* `isso`: Let visitor comment your shaares on permalinks with Isso. * `isso`: Let visitor comment your shaares on permalinks with Isso.
* [`markdown`](https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md): Render shaare description with Markdown syntax.
* `piwik`: A plugin that adds Piwik tracking code to Shaarli pages. * `piwik`: A plugin that adds Piwik tracking code to Shaarli pages.
* [`playvideos`](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md): Add a button in the toolbar allowing to watch all videos. * [`playvideos`](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md): Add a button in the toolbar allowing to watch all videos.
* `pubsubhubbub`: Enable PubSubHubbub feed publishing * `pubsubhubbub`: Enable PubSubHubbub feed publishing
@ -59,4 +58,4 @@ Usage of each plugin is documented in it's README file:
### Third party plugins ### Third party plugins
See [Community & related software](https://shaarli.readthedocs.io/en/master/Community-and-Related-software/) See [Community & related software](https://shaarli.readthedocs.io/en/master/Community-and-related-software/)

View file

@ -118,6 +118,7 @@ http {
ssl_certificate /path/to/certificate ssl_certificate /path/to/certificate
ssl_certificate_key /path/to/private/key ssl_certificate_key /path/to/private/key
# if shaarli is installed in a subdirectory of the main domain, edit the location accordingly
location / { location / {
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

View file

@ -59,10 +59,15 @@ Extension | Required? | Usage
[`php-json`](http://php.net/manual/en/book.json.php) | required | configuration parsing [`php-json`](http://php.net/manual/en/book.json.php) | required | configuration parsing
[`php-simplexml`](https://www.php.net/manual/en/book.simplexml.php) | required | REST API (Slim framework) [`php-simplexml`](https://www.php.net/manual/en/book.simplexml.php) | required | REST API (Slim framework)
[`php-mbstring`](http://php.net/manual/en/book.mbstring.php) | CentOS, Fedora, RHEL, Windows, some hosting providers | multibyte (Unicode) string support [`php-mbstring`](http://php.net/manual/en/book.mbstring.php) | CentOS, Fedora, RHEL, Windows, some hosting providers | multibyte (Unicode) string support
[`php-ctype`](https://www.php.net/manual/en/book.ctype.php) | required (bundled with most PHP installation) | Type checking
[`php-iconv`](https://www.php.net/manual/en/book.iconv.php) | required (bundled with most PHP installation) | Character encoding used in translations
[`php-session`](https://www.php.net/manual/en/book.session.php) | required (bundled with most PHP installation) | User session
[`php-zlib`](https://www.php.net/manual/en/book.zlib.php) | required (bundled with most PHP installation) | Datastore I/O compression
[`php-gd`](http://php.net/manual/en/book.image.php) | optional | required to use thumbnails [`php-gd`](http://php.net/manual/en/book.image.php) | optional | required to use thumbnails
[`php-intl`](http://php.net/manual/en/book.intl.php) | optional | localized text sorting (e.g. `e->è->f`) [`php-intl`](http://php.net/manual/en/book.intl.php) | optional | localized text sorting (e.g. `e->è->f`)
[`php-curl`](http://php.net/manual/en/book.curl.php) | optional | using cURL for fetching webpages and thumbnails in a more robust way [`php-curl`](http://php.net/manual/en/book.curl.php) | optional | using cURL for fetching webpages and thumbnails in a more robust way
[`php-gettext`](http://php.net/manual/en/book.gettext.php) | optional | Use the translation system in gettext mode (faster) [`php-gettext`](http://php.net/manual/en/book.gettext.php) | optional | Use the translation system in gettext mode (faster)
[`php-ldap`](https://www.php.net/manual/en/book.ldap.php) | optional | LDAP login support
Some [plugins](Plugins.md) may require additional configuration. Some [plugins](Plugins.md) may require additional configuration.
@ -300,6 +305,7 @@ server {
client_max_body_size 100m; client_max_body_size 100m;
# relative path to shaarli from the root of the webserver # relative path to shaarli from the root of the webserver
# if shaarli is installed in a subdirectory of the main domain, edit the location accordingly
location / { location / {
# default index file when no file URI is requested # default index file when no file URI is requested
index index.php; index index.php;

View file

@ -96,6 +96,14 @@ If you hosting provider only provides apache 2.2 and no support for `mod_version
Follow the instructions in the error message. Make sure you are accessing shaarli via a direct IP address or a proper hostname. If you have **no dots** in the hostname (e.g. `localhost` or `http://my-webserver/shaarli/`), some browsers will not store cookies at all (this respects the [HTTP cookie specification](http://curl.haxx.se/rfc/cookie_spec.html)). Follow the instructions in the error message. Make sure you are accessing shaarli via a direct IP address or a proper hostname. If you have **no dots** in the hostname (e.g. `localhost` or `http://my-webserver/shaarli/`), some browsers will not store cookies at all (this respects the [HTTP cookie specification](http://curl.haxx.se/rfc/cookie_spec.html)).
### Error 406 "Not acceptable"
If attempting to save a link results in a `Not acceptable` error (HTTP status code of `406`), it is likely due to strict settings for `mod_security` (a module used with Apache). This cannot be mitigated by reconfiguring Shaarli itself, and must be dealt with at the level of the underlying web server instead.
On some shared hosting services (such as **Bluehost**), `mod_security` is enabled by default, so the recommended course of action is to get in touch with the helpdesk and ask them to disable `mod_security` for your domain, sub-domain, or the subdirectory where Shaarli is installed. Ideally, you want to narrow it down to a very specific location, so as to continue reaping the benefits of `mod_security` elsewhere on your domain. If asked for specific, you can refer support staff to this [issue](https://github.com/shaarli/Shaarli/issues/1736), where more technical details are available.
---------------------------------------------------------- ----------------------------------------------------------
## Upgrades ## Upgrades
@ -164,7 +172,7 @@ You can use the third-party tool [Derefind](https://github.com/ShawnPConroy/Dere
### The bookmarklet doesn't work ### The bookmarklet doesn't work
Websites which enforce Content Security Policy (CSP), such as github.com, disallow usage of bookmarklets. Unfortunately, there is nothing Shaarli can do about it ([1](https://github.com/shaarli/Shaarli/issues/196), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=866522), [3](https://code.google.com/p/chromium/issues/detail?id=233903). Some websites may disallow usage of bookmarklets through [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP). Unfortunately, there is nothing Shaarli can do about it ([1](https://github.com/shaarli/Shaarli/issues/196), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=866522), [3](https://code.google.com/p/chromium/issues/detail?id=233903).
Under Opera, you can't drag'n drop the button: You have to right-click on it and add a bookmark to your personal toolbar. Under Opera, you can't drag'n drop the button: You have to right-click on it and add a bookmark to your personal toolbar.

View file

@ -143,17 +143,19 @@ A [`Makefile`](https://github.com/shaarli/Shaarli/blob/master/Makefile) is avail
### Continuous Integration ### Continuous Integration
[Travis CI](http://docs.travis-ci.com/) is a Continuous Integration build server, that runs a build: [Github Actions](https://github.com/shaarli/Shaarli/actions) is a Continuous Integration build server, that runs a build:
- each time a commit is merged to the mainline (`master` branch) - each time a commit is pushed to any branch
- each time a Pull Request is submitted or updated - each time a Pull Request is submitted or updated
After all jobs have finished, Travis returns the results to GitHub: After all jobs have finished, Github Actions returns the results to GitHub:
- a status icon represents the result for the `master` branch: [![](https://api.travis-ci.org/shaarli/Shaarli.svg)](https://travis-ci.org/shaarli/Shaarli) - a status icon represents the result for the `master` branch: [![Build Status](https://github.com/shaarli/Shaarli/actions/workflows/ci.yml/badge.svg)](https://github.com/shaarli/Shaarli/actions)
- Pull Requests are updated with the Travis build result. - Pull Requests are updated with the Github Actions build result.
See [`.travis.yml`](https://github.com/shaarli/Shaarli/blob/master/.travis.yml). Github Actions is also used to build and push [Docker](../Docker.md) images to <https://hub.docker.com/r/shaarli/shaarli> for the `master` branch and on every git `tag`/[release](https://github.com/shaarli/Shaarli/releases).
See [`.github/workflows/`](https://github.com/shaarli/Shaarli/tree/master/.github/workflows).
### Documentation ### Documentation
@ -169,13 +171,11 @@ Patches should try to stick to the [PHP Standard Recommendations](http://www.php
- [PSR-2](http://www.php-fig.org/psr/psr-2/) - Coding Style Guide - [PSR-2](http://www.php-fig.org/psr/psr-2/) - Coding Style Guide
- [PSR-12](http://www.php-fig.org/psr/psr-12/) - Extended Coding Style Guide - [PSR-12](http://www.php-fig.org/psr/psr-12/) - Extended Coding Style Guide
These are enforced on pull requests using our Continuous Integration tools. These are enforced on pull requests using our Continuous Integration tools with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer).
**Work in progress:** Static analysis is currently being discussed here: in [#95 - Fix coding style (static analysis)](https://github.com/shaarli/Shaarli/issues/95), [#130 - Continuous Integration tools & features](https://github.com/shaarli/Shaarli/issues/130) Static analysis tools are installed with Composer dependencies, and used through Shaarli's [Makefile](https://github.com/shaarli/Shaarli/blob/master/Makefile) with `make code_sniffer`.
Static analysis tools can be installed with Composer, and used through Shaarli's [Makefile](https://github.com/shaarli/Shaarli/blob/master/Makefile).
For an overview of the available features, see: For an overview of the available features, see:
- [Code quality: Makefile to run static code checkers](https://github.com/shaarli/Shaarli/pull/124) (#124) - [Code quality: Makefile to run static code checkers](https://github.com/shaarli/Shaarli/pull/124) (#124)
- [Run PHPCS against different coding standards](https://github.com/shaarli/Shaarli/pull/276) (#276) - [Apply PHP Code Sniffer to Shaarli code base](https://github.com/shaarli/Shaarli/pull/1635) (#1635)

View file

@ -60,6 +60,7 @@ Shaarli can be used:
- Easily extensible by any client using the [REST API](REST-API.md) exposed by Shaarli - Easily extensible by any client using the [REST API](REST-API.md) exposed by Shaarli
- Bookmarklet and [other tools](Community-and-related-software.md) to share links in one click - Bookmarklet and [other tools](Community-and-related-software.md) to share links in one click
- Responsive/support for mobile browsers, degrades gracefully with Javascript disabled - Responsive/support for mobile browsers, degrades gracefully with Javascript disabled
- LDAP (single-user) login support
### Easy setup ### Easy setup

View file

@ -624,7 +624,7 @@ msgstr "Bildwand ist nicht verfügbar (Miniaturansichten sind deaktiviert)."
#: application/front/exceptions/WrongTokenException.php:16 #: application/front/exceptions/WrongTokenException.php:16
msgid "Wrong token." msgid "Wrong token."
msgstr "Falsches Zeichen." msgstr "Falsches Token."
#: application/helper/ApplicationUtils.php:165 #: application/helper/ApplicationUtils.php:165
#, php-format #, php-format

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Shaarli\n" "Project-Id-Version: Shaarli\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-19 10:19+0900\n" "POT-Creation-Date: 2021-04-04 11:29+0900\n"
"PO-Revision-Date: 2021-01-04 18:54+0900\n" "PO-Revision-Date: 2021-04-04 13:20+0900\n"
"Last-Translator: yude <yudesleepy@gmail.com>\n" "Last-Translator: yude <yudesleepy@gmail.com>\n"
"Language-Team: Shaarli\n" "Language-Team: Shaarli\n"
"Language: ja\n" "Language: ja\n"
@ -19,61 +19,38 @@ msgstr ""
"X-Poedit-SearchPathExcluded-0: node_modules\n" "X-Poedit-SearchPathExcluded-0: node_modules\n"
"X-Poedit-SearchPathExcluded-1: vendor\n" "X-Poedit-SearchPathExcluded-1: vendor\n"
#: application/ApplicationUtils.php:161 #: application/History.php:181
#, php-format
msgid ""
"Your PHP version is obsolete! Shaarli requires at least PHP %s, and thus "
"cannot run. Your PHP version has known security vulnerabilities and should "
"be updated as soon as possible."
msgstr ""
"使用している PHP のバージョンが古すぎます! Shaarli の実行には最低でも PHP %s "
"が必要です。 現在使用している PHP のバージョンには脆弱性があり、できるだけ速"
"やかにアップデートするべきです。"
#: application/ApplicationUtils.php:192 application/ApplicationUtils.php:204
msgid "directory is not readable"
msgstr "ディレクトリを読み込めません"
#: application/ApplicationUtils.php:207
msgid "directory is not writable"
msgstr "ディレクトリに書き込めません"
#: application/ApplicationUtils.php:225
msgid "file is not readable"
msgstr "ファイルを読み取る権限がありません"
#: application/ApplicationUtils.php:228
msgid "file is not writable"
msgstr "ファイルを書き込む権限がありません"
#: application/History.php:179
msgid "History file isn't readable or writable" msgid "History file isn't readable or writable"
msgstr "履歴ファイルを読み込む、または書き込むための権限がありません" msgstr "履歴ファイルを読み込む、または書き込むための権限がありません"
#: application/History.php:190 #: application/History.php:192
msgid "Could not parse history file" msgid "Could not parse history file"
msgstr "履歴ファイルを正常に復元できませんでした" msgstr "履歴ファイルを正常に復元できませんでした"
#: application/Languages.php:181 #: application/Languages.php:184
msgid "Automatic" msgid "Automatic"
msgstr "自動" msgstr "自動"
#: application/Languages.php:182 #: application/Languages.php:185
msgid "German" msgid "German"
msgstr "ドイツ語" msgstr "ドイツ語"
#: application/Languages.php:183 #: application/Languages.php:186
msgid "English" msgid "English"
msgstr "英語" msgstr "英語"
#: application/Languages.php:184 #: application/Languages.php:187
msgid "French" msgid "French"
msgstr "フランス語" msgstr "フランス語"
#: application/Languages.php:185 #: application/Languages.php:188
msgid "Japanese" msgid "Japanese"
msgstr "日本語" msgstr "日本語"
#: application/Languages.php:189
msgid "Russian"
msgstr "ロシア語"
#: application/Thumbnailer.php:62 #: application/Thumbnailer.php:62
msgid "" msgid ""
"php-gd extension must be loaded to use thumbnails. Thumbnails are now " "php-gd extension must be loaded to use thumbnails. Thumbnails are now "
@ -82,49 +59,49 @@ msgstr ""
"サムネイルを使用するには、php-gd 拡張機能が読み込まれている必要があります。サ" "サムネイルを使用するには、php-gd 拡張機能が読み込まれている必要があります。サ"
"ムネイルは無効化されました。ページを再読込してください。" "ムネイルは無効化されました。ページを再読込してください。"
#: application/Utils.php:383 tests/UtilsTest.php:343 #: application/Utils.php:406 tests/UtilsTest.php:327
msgid "Setting not set" msgid "Setting not set"
msgstr "未設定" msgstr "未設定"
#: application/Utils.php:390 tests/UtilsTest.php:341 tests/UtilsTest.php:342 #: application/Utils.php:413 tests/UtilsTest.php:325 tests/UtilsTest.php:326
msgid "Unlimited" msgid "Unlimited"
msgstr "無制限" msgstr "無制限"
#: application/Utils.php:393 tests/UtilsTest.php:338 tests/UtilsTest.php:339 #: application/Utils.php:416 tests/UtilsTest.php:322 tests/UtilsTest.php:323
#: tests/UtilsTest.php:353 #: tests/UtilsTest.php:337
msgid "B" msgid "B"
msgstr "B" msgstr "B"
#: application/Utils.php:393 tests/UtilsTest.php:332 tests/UtilsTest.php:333 #: application/Utils.php:416 tests/UtilsTest.php:316 tests/UtilsTest.php:317
#: tests/UtilsTest.php:340 #: tests/UtilsTest.php:324
msgid "kiB" msgid "kiB"
msgstr "kiB" msgstr "kiB"
#: application/Utils.php:393 tests/UtilsTest.php:334 tests/UtilsTest.php:335 #: application/Utils.php:416 tests/UtilsTest.php:318 tests/UtilsTest.php:319
#: tests/UtilsTest.php:351 tests/UtilsTest.php:352 #: tests/UtilsTest.php:335 tests/UtilsTest.php:336
msgid "MiB" msgid "MiB"
msgstr "MiB" msgstr "MiB"
#: application/Utils.php:393 tests/UtilsTest.php:336 tests/UtilsTest.php:337 #: application/Utils.php:416 tests/UtilsTest.php:320 tests/UtilsTest.php:321
msgid "GiB" msgid "GiB"
msgstr "GiB" msgstr "GiB"
#: application/bookmark/BookmarkFileService.php:180 #: application/bookmark/BookmarkFileService.php:203
#: application/bookmark/BookmarkFileService.php:202 #: application/bookmark/BookmarkFileService.php:225
#: application/bookmark/BookmarkFileService.php:224 #: application/bookmark/BookmarkFileService.php:247
#: application/bookmark/BookmarkFileService.php:238 #: application/bookmark/BookmarkFileService.php:261
msgid "You're not authorized to alter the datastore" msgid "You're not authorized to alter the datastore"
msgstr "設定を変更する権限がありません" msgstr "設定を変更する権限がありません"
#: application/bookmark/BookmarkFileService.php:205 #: application/bookmark/BookmarkFileService.php:228
msgid "This bookmarks already exists" msgid "This bookmarks already exists"
msgstr "このブックマークは既に存在します" msgstr "このブックマークは既に存在します"
#: application/bookmark/BookmarkInitializer.php:39 #: application/bookmark/BookmarkInitializer.php:42
msgid "(private bookmark with thumbnail demo)" msgid "(private bookmark with thumbnail demo)"
msgstr "(サムネイルデモが付属しているプライベートブックマーク)" msgstr "(サムネイルデモが付属しているプライベートブックマーク)"
#: application/bookmark/BookmarkInitializer.php:42 #: application/bookmark/BookmarkInitializer.php:45
msgid "" msgid ""
"Shaarli will automatically pick up the thumbnail for links to a variety of " "Shaarli will automatically pick up the thumbnail for links to a variety of "
"websites.\n" "websites.\n"
@ -146,11 +123,11 @@ msgstr ""
"\n" "\n"
"今から、既定の shaares を編集したり、削除したりすることができます。\n" "今から、既定の shaares を編集したり、削除したりすることができます。\n"
#: application/bookmark/BookmarkInitializer.php:55 #: application/bookmark/BookmarkInitializer.php:58
msgid "Note: Shaare descriptions" msgid "Note: Shaare descriptions"
msgstr "説明: Shaare の概要" msgstr "説明: Shaare の概要"
#: application/bookmark/BookmarkInitializer.php:57 #: application/bookmark/BookmarkInitializer.php:60
msgid "" msgid ""
"Adding a shaare without entering a URL creates a text-only \"note\" post " "Adding a shaare without entering a URL creates a text-only \"note\" post "
"such as this one.\n" "such as this one.\n"
@ -214,14 +191,14 @@ msgstr ""
"| レモン | 果物 | 黄 | 30 |\n" "| レモン | 果物 | 黄 | 30 |\n"
"| 人参 | 野菜 | 赤 | 14 |\n" "| 人参 | 野菜 | 赤 | 14 |\n"
#: application/bookmark/BookmarkInitializer.php:91 #: application/bookmark/BookmarkInitializer.php:94
#: application/legacy/LegacyLinkDB.php:246 #: application/legacy/LegacyLinkDB.php:246
msgid "" msgid ""
"The personal, minimalist, super-fast, database free, bookmarking service" "The personal, minimalist, super-fast, database free, bookmarking service"
msgstr "" msgstr ""
"個人向けの、ミニマムで高速でかつデータベースのいらないブックマークサービス" "個人向けの、ミニマムで高速でかつデータベースのいらないブックマークサービス"
#: application/bookmark/BookmarkInitializer.php:94 #: application/bookmark/BookmarkInitializer.php:97
msgid "" msgid ""
"Welcome to Shaarli!\n" "Welcome to Shaarli!\n"
"\n" "\n"
@ -269,11 +246,11 @@ msgstr ""
"何か問題に遭遇したり、提案があれば、気軽に [Issue](https://github.com/" "何か問題に遭遇したり、提案があれば、気軽に [Issue](https://github.com/"
"shaarli/Shaarli/issues) を開いてください。\n" "shaarli/Shaarli/issues) を開いてください。\n"
#: application/bookmark/exception/BookmarkNotFoundException.php:13 #: application/bookmark/exception/BookmarkNotFoundException.php:14
msgid "The link you are trying to reach does not exist or has been deleted." msgid "The link you are trying to reach does not exist or has been deleted."
msgstr "開こうとしたリンクは存在しないか、削除されています。" msgstr "開こうとしたリンクは存在しないか、削除されています。"
#: application/config/ConfigJson.php:52 application/config/ConfigPhp.php:129 #: application/config/ConfigJson.php:52 application/config/ConfigPhp.php:131
msgid "" msgid ""
"Shaarli could not create the config file. Please make sure Shaarli has the " "Shaarli could not create the config file. Please make sure Shaarli has the "
"right to write in the folder is it installed in." "right to write in the folder is it installed in."
@ -282,13 +259,13 @@ msgstr ""
"ていて、インストールされているディレクトリに書き込みできることを確認してくだ" "ていて、インストールされているディレクトリに書き込みできることを確認してくだ"
"さい。" "さい。"
#: application/config/ConfigManager.php:136 #: application/config/ConfigManager.php:137
#: application/config/ConfigManager.php:163 #: application/config/ConfigManager.php:164
msgid "Invalid setting key parameter. String expected, got: " msgid "Invalid setting key parameter. String expected, got: "
msgstr "" msgstr ""
"不正なキーの値です。文字列が想定されていますが、次のように入力されました: " "不正なキーの値です。文字列が想定されていますが、次のように入力されました: "
#: application/config/exception/MissingFieldConfigException.php:21 #: application/config/exception/MissingFieldConfigException.php:20
#, php-format #, php-format
msgid "Configuration value is required for %s" msgid "Configuration value is required for %s"
msgstr "%s には設定が必要です" msgstr "%s には設定が必要です"
@ -297,42 +274,43 @@ msgstr "%s には設定が必要です"
msgid "An error occurred while trying to save plugins loading order." msgid "An error occurred while trying to save plugins loading order."
msgstr "プラグインの読込順を変更する際にエラーが発生しました。" msgstr "プラグインの読込順を変更する際にエラーが発生しました。"
#: application/config/exception/UnauthorizedConfigException.php:16 #: application/config/exception/UnauthorizedConfigException.php:15
msgid "You are not authorized to alter config." msgid "You are not authorized to alter config."
msgstr "設定を変更する権限がありません。" msgstr "設定を変更する権限がありません。"
#: application/exceptions/IOException.php:22 #: application/exceptions/IOException.php:23
msgid "Error accessing" msgid "Error accessing"
msgstr "読込中にエラーが発生しました" msgstr "読込中にエラーが発生しました"
#: application/feed/FeedBuilder.php:179 #: application/feed/FeedBuilder.php:174
msgid "Direct link" msgid "Direct link"
msgstr "ダイレクトリンク" msgstr "ダイレクトリンク"
#: application/feed/FeedBuilder.php:181 #: application/feed/FeedBuilder.php:176
msgid "Permalink" msgid "Permalink"
msgstr "パーマリンク" msgstr "パーマリンク"
#: application/front/controller/admin/ConfigureController.php:54 #: application/front/controller/admin/ConfigureController.php:56
msgid "Configure" msgid "Configure"
msgstr "設定" msgstr "設定"
#: application/front/controller/admin/ConfigureController.php:102 #: application/front/controller/admin/ConfigureController.php:106
#: application/legacy/LegacyUpdater.php:537 #: application/legacy/LegacyUpdater.php:539
msgid "You have enabled or changed thumbnails mode." msgid "You have enabled or changed thumbnails mode."
msgstr "サムネイルのモードを有効化、または変更しました。" msgstr "サムネイルのモードを有効化、または変更しました。"
#: application/front/controller/admin/ConfigureController.php:103 #: application/front/controller/admin/ConfigureController.php:108
#: application/legacy/LegacyUpdater.php:538 #: application/front/controller/admin/ServerController.php:81
#: application/legacy/LegacyUpdater.php:540
msgid "Please synchronize them." msgid "Please synchronize them."
msgstr "それらを同期してください。" msgstr "それらを同期してください。"
#: application/front/controller/admin/ConfigureController.php:113 #: application/front/controller/admin/ConfigureController.php:119
#: application/front/controller/visitor/InstallController.php:136 #: application/front/controller/visitor/InstallController.php:154
msgid "Error while writing config file after configuration update." msgid "Error while writing config file after configuration update."
msgstr "設定ファイルを更新した後の書き込みに失敗しました。" msgstr "設定ファイルを更新した後の書き込みに失敗しました。"
#: application/front/controller/admin/ConfigureController.php:122 #: application/front/controller/admin/ConfigureController.php:128
msgid "Configuration was saved." msgid "Configuration was saved."
msgstr "設定は保存されました。" msgstr "設定は保存されました。"
@ -362,61 +340,42 @@ msgstr ""
"ルサイズ (%s) よりも大きいです。もう少し小さいものをアップロードしてくださ" "ルサイズ (%s) よりも大きいです。もう少し小さいものをアップロードしてくださ"
"い。" "い。"
#: application/front/controller/admin/ManageShaareController.php:29 #: application/front/controller/admin/ManageTagController.php:30
msgid "Shaare a new link" msgid "whitespace"
msgstr "新しいリンクを追加" msgstr "空白"
#: application/front/controller/admin/ManageShaareController.php:78 #: application/front/controller/admin/ManageTagController.php:35
msgid "Note: "
msgstr "注: "
#: application/front/controller/admin/ManageShaareController.php:109
#: application/front/controller/admin/ManageShaareController.php:206
#: application/front/controller/admin/ManageShaareController.php:275
#: application/front/controller/admin/ManageShaareController.php:315
#, php-format
msgid "Bookmark with identifier %s could not be found."
msgstr "%s という識別子を持ったブックマークは見つかりませんでした。"
#: application/front/controller/admin/ManageShaareController.php:194
#: application/front/controller/admin/ManageShaareController.php:252
msgid "Invalid bookmark ID provided."
msgstr "不正なブックマーク ID が入力されました。"
#: application/front/controller/admin/ManageShaareController.php:260
msgid "Invalid visibility provided."
msgstr "不正な公開設定が入力されました。"
#: application/front/controller/admin/ManageShaareController.php:363
msgid "Edit"
msgstr "共有"
#: application/front/controller/admin/ManageShaareController.php:366
msgid "Shaare"
msgstr "Shaare"
#: application/front/controller/admin/ManageTagController.php:29
msgid "Manage tags" msgid "Manage tags"
msgstr "タグを設定" msgstr "タグを設定"
#: application/front/controller/admin/ManageTagController.php:48 #: application/front/controller/admin/ManageTagController.php:54
msgid "Invalid tags provided." msgid "Invalid tags provided."
msgstr "不正なタグが入力されました。" msgstr "不正なタグが入力されました。"
#: application/front/controller/admin/ManageTagController.php:72 #: application/front/controller/admin/ManageTagController.php:81
#, php-format #, php-format
msgid "The tag was removed from %d bookmark." msgid "The tag was removed from %d bookmark."
msgid_plural "The tag was removed from %d bookmarks." msgid_plural "The tag was removed from %d bookmarks."
msgstr[0] "%d 件のリンクからタグが削除されました。" msgstr[0] "%d 件のリンクからタグが削除されました。"
msgstr[1] "%d 件のリンクからタグが削除されました。" msgstr[1] "%d 件のリンクからタグが削除されました。"
#: application/front/controller/admin/ManageTagController.php:77 #: application/front/controller/admin/ManageTagController.php:86
#, php-format #, php-format
msgid "The tag was renamed in %d bookmark." msgid "The tag was renamed in %d bookmark."
msgid_plural "The tag was renamed in %d bookmarks." msgid_plural "The tag was renamed in %d bookmarks."
msgstr[0] "このタグを持つ %d 件のリンクにおいて、名前が変更されました。" msgstr[0] "このタグを持つ %d 件のリンクにおいて、名前が変更されました。"
msgstr[1] "このタグを持つ %d 件のリンクにおいて、名前が変更されました。" msgstr[1] "このタグを持つ %d 件のリンクにおいて、名前が変更されました。"
#: application/front/controller/admin/ManageTagController.php:108
msgid "Tags separator must be a single character."
msgstr "タグを分離する文字は1つでなければいけません。"
#: application/front/controller/admin/ManageTagController.php:114
msgid "These characters are reserved and can't be used as tags separator: "
msgstr ""
"それらの文字は予約文字であり、タグを分離するための文字として使うことはできま"
"せん: "
#: application/front/controller/admin/PasswordController.php:28 #: application/front/controller/admin/PasswordController.php:28
msgid "Change password" msgid "Change password"
msgstr "パスワードを変更" msgstr "パスワードを変更"
@ -447,6 +406,55 @@ msgstr "設定が正常に保存されました。"
msgid "Error while saving plugin configuration: " msgid "Error while saving plugin configuration: "
msgstr "プラグインの設定ファイルを保存するときにエラーが発生しました: " msgstr "プラグインの設定ファイルを保存するときにエラーが発生しました: "
#: application/front/controller/admin/ServerController.php:35
msgid "Check disabled"
msgstr "無効になっている項目をチェック"
#: application/front/controller/admin/ServerController.php:62
msgid "Server administration"
msgstr "サーバー管理"
#: application/front/controller/admin/ServerController.php:79
msgid "Thumbnails cache has been cleared."
msgstr "サムネイルのキャッシュがクリアされました。"
#: application/front/controller/admin/ServerController.php:90
msgid "Shaarli's cache folder has been cleared!"
msgstr "Shaarli のキャッシュのフォルダーがクリアされました!"
#: application/front/controller/admin/ShaareAddController.php:26
msgid "Shaare a new link"
msgstr "新しいリンクを追加"
#: application/front/controller/admin/ShaareManageController.php:35
#: application/front/controller/admin/ShaareManageController.php:97
msgid "Invalid bookmark ID provided."
msgstr "不正なブックマーク ID が入力されました。"
#: application/front/controller/admin/ShaareManageController.php:47
#: application/front/controller/admin/ShaareManageController.php:120
#: application/front/controller/admin/ShaareManageController.php:160
#: application/front/controller/admin/ShaarePublishController.php:82
#, php-format
msgid "Bookmark with identifier %s could not be found."
msgstr "%s という識別子を持ったブックマークは見つかりませんでした。"
#: application/front/controller/admin/ShaareManageController.php:105
msgid "Invalid visibility provided."
msgstr "不正な公開設定が入力されました。"
#: application/front/controller/admin/ShaarePublishController.php:173
msgid "Edit"
msgstr "共有"
#: application/front/controller/admin/ShaarePublishController.php:176
msgid "Shaare"
msgstr "Shaare"
#: application/front/controller/admin/ShaarePublishController.php:208
msgid "Note: "
msgstr "注: "
#: application/front/controller/admin/ThumbnailsController.php:37 #: application/front/controller/admin/ThumbnailsController.php:37
msgid "Thumbnails update" msgid "Thumbnails update"
msgstr "サムネイルの更新" msgstr "サムネイルの更新"
@ -455,23 +463,44 @@ msgstr "サムネイルの更新"
msgid "Tools" msgid "Tools"
msgstr "ツール" msgstr "ツール"
#: application/front/controller/visitor/BookmarkListController.php:116 #: application/front/controller/visitor/BookmarkListController.php:103
msgid "Search: " msgid "Search: "
msgstr "検索: " msgstr "検索: "
#: application/front/controller/visitor/DailyController.php:45 #: application/front/controller/visitor/DailyController.php:201
msgid "Today" msgid "day"
msgstr "日" msgstr "日"
#: application/front/controller/visitor/DailyController.php:47 #: application/front/controller/visitor/DailyController.php:201
msgid "Yesterday" #: application/front/controller/visitor/DailyController.php:204
msgstr "昨日"
#: application/front/controller/visitor/DailyController.php:85
msgid "Daily" msgid "Daily"
msgstr "デイリー" msgstr "デイリー"
#: application/front/controller/visitor/ErrorController.php:36 #: application/front/controller/visitor/DailyController.php:202
msgid "week"
msgstr "週"
#: application/front/controller/visitor/DailyController.php:202
msgid "Weekly"
msgstr "週間"
#: application/front/controller/visitor/DailyController.php:203
msgid "month"
msgstr "月"
#: application/front/controller/visitor/DailyController.php:203
msgid "Monthly"
msgstr "月間"
#: application/front/controller/visitor/ErrorController.php:30
msgid "Error: "
msgstr "エラー: "
#: application/front/controller/visitor/ErrorController.php:34
msgid "Please report it on Github."
msgstr "GitHub で報告してください。"
#: application/front/controller/visitor/ErrorController.php:39
msgid "An unexpected error occurred." msgid "An unexpected error occurred."
msgstr "予期しないエラーが発生しました。" msgstr "予期しないエラーが発生しました。"
@ -479,7 +508,11 @@ msgstr "予期しないエラーが発生しました。"
msgid "Requested page could not be found." msgid "Requested page could not be found."
msgstr "リクエストされたページは存在しません。" msgstr "リクエストされたページは存在しません。"
#: application/front/controller/visitor/InstallController.php:73 #: application/front/controller/visitor/InstallController.php:70
msgid "Install Shaarli"
msgstr "Shaarli をインストール"
#: application/front/controller/visitor/InstallController.php:90
#, php-format #, php-format
msgid "" msgid ""
"<pre>Sessions do not seem to work correctly on your server.<br>Make sure the " "<pre>Sessions do not seem to work correctly on your server.<br>Make sure the "
@ -497,14 +530,14 @@ msgstr ""
"ります。IP アドレスや完全なドメイン名でサーバーにアクセスすることをおすすめし" "ります。IP アドレスや完全なドメイン名でサーバーにアクセスすることをおすすめし"
"ます。<br>" "ます。<br>"
#: application/front/controller/visitor/InstallController.php:144 #: application/front/controller/visitor/InstallController.php:162
msgid "" msgid ""
"Shaarli is now configured. Please login and start shaaring your bookmarks!" "Shaarli is now configured. Please login and start shaaring your bookmarks!"
msgstr "" msgstr ""
"Shaarli の設定が完了しました。ログインして、あなたのブックマークを登録しま" "Shaarli の設定が完了しました。ログインして、あなたのブックマークを登録しま"
"しょう!" "しょう!"
#: application/front/controller/visitor/InstallController.php:158 #: application/front/controller/visitor/InstallController.php:176
msgid "Insufficient permissions:" msgid "Insufficient permissions:"
msgstr "権限がありません:" msgstr "権限がありません:"
@ -520,7 +553,7 @@ msgstr "不正なユーザー名、またはパスワードです。"
msgid "Picture wall" msgid "Picture wall"
msgstr "ピクチャウォール" msgstr "ピクチャウォール"
#: application/front/controller/visitor/TagCloudController.php:88 #: application/front/controller/visitor/TagCloudController.php:90
msgid "Tag " msgid "Tag "
msgstr "タグ " msgstr "タグ "
@ -547,6 +580,94 @@ msgstr "ピクチャ ウォールは利用できません (サムネイルが無
msgid "Wrong token." msgid "Wrong token."
msgstr "不正なトークンです。" msgstr "不正なトークンです。"
#: application/helper/ApplicationUtils.php:165
#, php-format
msgid ""
"Your PHP version is obsolete! Shaarli requires at least PHP %s, and thus "
"cannot run. Your PHP version has known security vulnerabilities and should "
"be updated as soon as possible."
msgstr ""
"使用している PHP のバージョンが古すぎます! Shaarli の実行には最低でも PHP %s "
"が必要です。 現在使用している PHP のバージョンには脆弱性があり、できるだけ速"
"やかにアップデートするべきです。"
#: application/helper/ApplicationUtils.php:200
#: application/helper/ApplicationUtils.php:220
msgid "directory is not readable"
msgstr "ディレクトリを読み込めません"
#: application/helper/ApplicationUtils.php:223
msgid "directory is not writable"
msgstr "ディレクトリに書き込めません"
#: application/helper/ApplicationUtils.php:247
msgid "file is not readable"
msgstr "ファイルを読み取る権限がありません"
#: application/helper/ApplicationUtils.php:250
msgid "file is not writable"
msgstr "ファイルを書き込む権限がありません"
#: application/helper/ApplicationUtils.php:265
msgid ""
"Lock can not be acquired on the datastore. You might encounter concurrent "
"access issues."
msgstr ""
"ロックはデータストアでは取得できません。同時にアクセスしたことによってエラー"
"が発生した可能性があります。"
#: application/helper/ApplicationUtils.php:298
msgid "Configuration parsing"
msgstr "設定ファイルのパース"
#: application/helper/ApplicationUtils.php:299
msgid "Slim Framework (routing, etc.)"
msgstr "軽量なフレームワーク (ルーティングなど)"
#: application/helper/ApplicationUtils.php:300
msgid "Multibyte (Unicode) string support"
msgstr "マルチバイト (Unicode) の文字のサポート"
#: application/helper/ApplicationUtils.php:301
msgid "Required to use thumbnails"
msgstr "サムネイルを使うことは必須です"
#: application/helper/ApplicationUtils.php:302
msgid "Localized text sorting (e.g. e->è->f)"
msgstr "ローカライズされた文字のソート (例: e->è->f)"
#: application/helper/ApplicationUtils.php:303
msgid "Better retrieval of bookmark metadata and thumbnail"
msgstr "ブックマークのメタデータとサムネイルの改善された検索"
#: application/helper/ApplicationUtils.php:304
msgid "Use the translation system in gettext mode"
msgstr "gettext モードで翻訳システムを使用"
#: application/helper/ApplicationUtils.php:305
msgid "Login using LDAP server"
msgstr "LDAP サーバーを使用してログイン"
#: application/helper/DailyPageHelper.php:179
msgid "Week"
msgstr "週"
#: application/helper/DailyPageHelper.php:183
msgid "Today"
msgstr "今日"
#: application/helper/DailyPageHelper.php:185
msgid "Yesterday"
msgstr "昨日"
#: application/helper/FileUtils.php:100
msgid "Provided path is not a directory."
msgstr "入力されたパスはディレクトリではありません。"
#: application/helper/FileUtils.php:104
msgid "Trying to delete a folder outside of Shaarli path."
msgstr "Shaarli のパスの外にあるフォルダを削除しようとしています。"
#: application/legacy/LegacyLinkDB.php:131 #: application/legacy/LegacyLinkDB.php:131
msgid "You are not authorized to add a link." msgid "You are not authorized to add a link."
msgstr "リンクを追加するには、ログインする必要があります。" msgstr "リンクを追加するには、ログインする必要があります。"
@ -597,7 +718,7 @@ msgstr ""
msgid "Couldn't retrieve updater class methods." msgid "Couldn't retrieve updater class methods."
msgstr "アップデーターのクラスメゾットを受信できませんでした。" msgstr "アップデーターのクラスメゾットを受信できませんでした。"
#: application/legacy/LegacyUpdater.php:538 #: application/legacy/LegacyUpdater.php:540
msgid "<a href=\"./admin/thumbnails\">" msgid "<a href=\"./admin/thumbnails\">"
msgstr "<a href=\"./admin/thumbnails\">" msgstr "<a href=\"./admin/thumbnails\">"
@ -623,16 +744,17 @@ msgstr ""
"が %d 秒で処理され、%d 件のリンクがインポートされ、%d 件のリンクが上書きさ" "が %d 秒で処理され、%d 件のリンクがインポートされ、%d 件のリンクが上書きさ"
"れ、%d 件のリンクがスキップされました。" "れ、%d 件のリンクがスキップされました。"
#: application/plugin/PluginManager.php:124 #: application/plugin/PluginManager.php:103
#: application/plugin/PluginManager.php:141
msgid " [plugin incompatibility]: " msgid " [plugin incompatibility]: "
msgstr " [非対応のプラグイン]: " msgstr " [非対応のプラグイン]: "
#: application/plugin/exception/PluginFileNotFoundException.php:21 #: application/plugin/exception/PluginFileNotFoundException.php:22
#, php-format #, php-format
msgid "Plugin \"%s\" files not found." msgid "Plugin \"%s\" files not found."
msgstr "プラグイン「%s」のファイルが存在しません。" msgstr "プラグイン「%s」のファイルが存在しません。"
#: application/render/PageCacheManager.php:32 #: application/render/PageCacheManager.php:33
#, php-format #, php-format
msgid "Cannot purge %s: no directory" msgid "Cannot purge %s: no directory"
msgstr "%s を削除できません: ディレクトリが存在しません" msgstr "%s を削除できません: ディレクトリが存在しません"
@ -641,7 +763,7 @@ msgstr "%s を削除できません: ディレクトリが存在しません"
msgid "An error occurred while running the update " msgid "An error occurred while running the update "
msgstr "更新中に問題が発生しました " msgstr "更新中に問題が発生しました "
#: index.php:65 #: index.php:82
msgid "Shared bookmarks on " msgid "Shared bookmarks on "
msgstr "次において共有されたリンク " msgstr "次において共有されたリンク "
@ -657,11 +779,11 @@ msgstr "リンクを追加"
msgid "Adds the addlink input on the linklist page." msgid "Adds the addlink input on the linklist page."
msgstr "リンク一覧のページに、リンクを追加するためのフォームを表示する。" msgstr "リンク一覧のページに、リンクを追加するためのフォームを表示する。"
#: plugins/archiveorg/archiveorg.php:28 #: plugins/archiveorg/archiveorg.php:29
msgid "View on archive.org" msgid "View on archive.org"
msgstr "archive.org 上で表示する" msgstr "archive.org 上で表示する"
#: plugins/archiveorg/archiveorg.php:41 #: plugins/archiveorg/archiveorg.php:42
msgid "For each link, add an Archive.org icon." msgid "For each link, add an Archive.org icon."
msgstr "それぞれのリンクに、Archive.org のアイコンを追加する。" msgstr "それぞれのリンクに、Archive.org のアイコンを追加する。"
@ -673,24 +795,24 @@ msgstr ""
"既定の色のプラグインにおけるエラー: このプラグインは有効なので、カスタム カ" "既定の色のプラグインにおけるエラー: このプラグインは有効なので、カスタム カ"
"ラーは適用されません。" "ラーは適用されません。"
#: plugins/default_colors/default_colors.php:113 #: plugins/default_colors/default_colors.php:127
msgid "Override default theme colors. Use any CSS valid color." msgid "Override default theme colors. Use any CSS valid color."
msgstr "" msgstr ""
"既定のテーマの色を上書きします。どのような CSS カラーコードでも使えます。" "既定のテーマの色を上書きします。どのような CSS カラーコードでも使えます。"
#: plugins/default_colors/default_colors.php:114 #: plugins/default_colors/default_colors.php:128
msgid "Main color (navbar green)" msgid "Main color (navbar green)"
msgstr "メイン カラー (ナビバーの緑)" msgstr "メイン カラー (ナビバーの緑)"
#: plugins/default_colors/default_colors.php:115 #: plugins/default_colors/default_colors.php:129
msgid "Background color (light grey)" msgid "Background color (light grey)"
msgstr "背景色 (灰色)" msgstr "背景色 (灰色)"
#: plugins/default_colors/default_colors.php:116 #: plugins/default_colors/default_colors.php:130
msgid "Dark main color (e.g. visited links)" msgid "Dark main color (e.g. visited links)"
msgstr "暗い方の メイン カラー (例: 閲覧済みリンク)" msgstr "暗い方の メイン カラー (例: 閲覧済みリンク)"
#: plugins/demo_plugin/demo_plugin.php:477 #: plugins/demo_plugin/demo_plugin.php:528
msgid "" msgid ""
"A demo plugin covering all use cases for template designers and plugin " "A demo plugin covering all use cases for template designers and plugin "
"developers." "developers."
@ -698,11 +820,11 @@ msgstr ""
"テンプレートのデザイナーや、プラグインの開発者のためのすべての状況に対応でき" "テンプレートのデザイナーや、プラグインの開発者のためのすべての状況に対応でき"
"るデモプラグインです。" "るデモプラグインです。"
#: plugins/demo_plugin/demo_plugin.php:478 #: plugins/demo_plugin/demo_plugin.php:529
msgid "This is a parameter dedicated to the demo plugin. It'll be suffixed." msgid "This is a parameter dedicated to the demo plugin. It'll be suffixed."
msgstr "これはデモプラグイン専用のパラメーターです。末尾に追加されます。" msgstr "これはデモプラグイン専用のパラメーターです。末尾に追加されます。"
#: plugins/demo_plugin/demo_plugin.php:479 #: plugins/demo_plugin/demo_plugin.php:530
msgid "Other demo parameter" msgid "Other demo parameter"
msgstr "他のデモ パラメーター" msgstr "他のデモ パラメーター"
@ -724,7 +846,7 @@ msgstr ""
msgid "Isso server URL (without 'http://')" msgid "Isso server URL (without 'http://')"
msgstr "Isso server URL ('http://' 抜き)" msgstr "Isso server URL ('http://' 抜き)"
#: plugins/piwik/piwik.php:23 #: plugins/piwik/piwik.php:24
msgid "" msgid ""
"Piwik plugin error: Please define PIWIK_URL and PIWIK_SITEID in the plugin " "Piwik plugin error: Please define PIWIK_URL and PIWIK_SITEID in the plugin "
"administration page." "administration page."
@ -732,27 +854,27 @@ msgstr ""
"Piwik プラグインエラー: PIWIK_URL と PIWIK_SITEID の値をプラグイン管理ページ" "Piwik プラグインエラー: PIWIK_URL と PIWIK_SITEID の値をプラグイン管理ページ"
"で指定してください。" "で指定してください。"
#: plugins/piwik/piwik.php:72 #: plugins/piwik/piwik.php:73
msgid "A plugin that adds Piwik tracking code to Shaarli pages." msgid "A plugin that adds Piwik tracking code to Shaarli pages."
msgstr "Piwik のトラッキングコードをShaarliに追加するプラグインです。" msgstr "Piwik のトラッキングコードをShaarliに追加するプラグインです。"
#: plugins/piwik/piwik.php:73 #: plugins/piwik/piwik.php:74
msgid "Piwik URL" msgid "Piwik URL"
msgstr "Piwik URL" msgstr "Piwik URL"
#: plugins/piwik/piwik.php:74 #: plugins/piwik/piwik.php:75
msgid "Piwik site ID" msgid "Piwik site ID"
msgstr "Piwik サイトID" msgstr "Piwik サイトID"
#: plugins/playvideos/playvideos.php:25 #: plugins/playvideos/playvideos.php:26
msgid "Video player" msgid "Video player"
msgstr "動画プレイヤー" msgstr "動画プレイヤー"
#: plugins/playvideos/playvideos.php:28 #: plugins/playvideos/playvideos.php:29
msgid "Play Videos" msgid "Play Videos"
msgstr "動画を再生" msgstr "動画を再生"
#: plugins/playvideos/playvideos.php:59 #: plugins/playvideos/playvideos.php:60
msgid "Add a button in the toolbar allowing to watch all videos." msgid "Add a button in the toolbar allowing to watch all videos."
msgstr "すべての動画を閲覧するボタンをツールバーに追加します。" msgstr "すべての動画を閲覧するボタンをツールバーに追加します。"
@ -779,11 +901,11 @@ msgstr "ハブ %s からの不正なレスポンス"
msgid "Enable PubSubHubbub feed publishing." msgid "Enable PubSubHubbub feed publishing."
msgstr "PubSubHubbub へのフィードを公開する。" msgstr "PubSubHubbub へのフィードを公開する。"
#: plugins/qrcode/qrcode.php:73 plugins/wallabag/wallabag.php:70 #: plugins/qrcode/qrcode.php:74 plugins/wallabag/wallabag.php:72
msgid "For each link, add a QRCode icon." msgid "For each link, add a QRCode icon."
msgstr "それぞれのリンクについて、QRコードのアイコンを追加する。" msgstr "それぞれのリンクについて、QRコードのアイコンを追加する。"
#: plugins/wallabag/wallabag.php:21 #: plugins/wallabag/wallabag.php:22
msgid "" msgid ""
"Wallabag plugin error: Please define the \"WALLABAG_URL\" setting in the " "Wallabag plugin error: Please define the \"WALLABAG_URL\" setting in the "
"plugin administration page." "plugin administration page."
@ -791,15 +913,15 @@ msgstr ""
"Wallabag プラグインエラー: \"WALLABAG_URL\" の値をプラグイン管理ページにおい" "Wallabag プラグインエラー: \"WALLABAG_URL\" の値をプラグイン管理ページにおい"
"て指定してください。" "て指定してください。"
#: plugins/wallabag/wallabag.php:47 #: plugins/wallabag/wallabag.php:49
msgid "Save to wallabag" msgid "Save to wallabag"
msgstr "Wallabag に保存" msgstr "Wallabag に保存"
#: plugins/wallabag/wallabag.php:71 #: plugins/wallabag/wallabag.php:73
msgid "Wallabag API URL" msgid "Wallabag API URL"
msgstr "Wallabag のAPIのURL" msgstr "Wallabag のAPIのURL"
#: plugins/wallabag/wallabag.php:72 #: plugins/wallabag/wallabag.php:74
msgid "Wallabag API version (1 or 2)" msgid "Wallabag API version (1 or 2)"
msgstr "Wallabag のAPIのバージョン (1 または 2)" msgstr "Wallabag のAPIのバージョン (1 または 2)"
@ -944,9 +1066,6 @@ msgstr[1] "検索"
#~ msgid "Do not show any links if the user is not logged in" #~ msgid "Do not show any links if the user is not logged in"
#~ msgstr "ログインしていないユーザーには何のリンクも表示しない" #~ msgstr "ログインしていないユーザーには何のリンクも表示しない"
#~ msgid "Check updates"
#~ msgstr "更新を確認"
#~ msgid "Notify me when a new release is ready" #~ msgid "Notify me when a new release is ready"
#~ msgstr "新しいバージョンがリリースされたときに通知" #~ msgstr "新しいバージョンがリリースされたときに通知"
@ -1043,9 +1162,6 @@ msgstr[1] "検索"
#~ msgid "Add default tags" #~ msgid "Add default tags"
#~ msgstr "既定のタグを追加" #~ msgstr "既定のタグを追加"
#~ msgid "Install Shaarli"
#~ msgstr "Shaarli をインストール"
#~ msgid "" #~ msgid ""
#~ "It looks like it's the first time you run Shaarli. Please configure it." #~ "It looks like it's the first time you run Shaarli. Please configure it."
#~ msgstr "どうやら Shaarli を初めて起動しているようです。設定してください。" #~ msgstr "どうやら Shaarli を初めて起動しているようです。設定してください。"
@ -1161,9 +1277,6 @@ msgstr[1] "検索"
#~ msgid "is available" #~ msgid "is available"
#~ msgstr "が利用可能" #~ msgstr "が利用可能"
#~ msgid "Error"
#~ msgstr "エラー"
#~ msgid "Picture Wall" #~ msgid "Picture Wall"
#~ msgstr "ピクチャーウォール" #~ msgstr "ピクチャーウォール"

File diff suppressed because it is too large Load diff

View file

@ -12,7 +12,7 @@ site_dir: doc/html
# - https://github.com/rtfd/readthedocs.org/issues/4314 # - https://github.com/rtfd/readthedocs.org/issues/4314
# strict: true # strict: true
pages: nav:
- Home: index.md - Home: index.md
- Setup: - Setup:
- Server configuration: Server-configuration.md - Server configuration: Server-configuration.md

View file

@ -5,7 +5,7 @@
<file>index.php</file> <file>index.php</file>
<file>application</file> <file>application</file>
<file>plugins</file> <file>plugins</file>
<!-- <file>tests</file>--> <file>tests</file>
<exclude-pattern>*/*.css</exclude-pattern> <exclude-pattern>*/*.css</exclude-pattern>
<exclude-pattern>*/*.js</exclude-pattern> <exclude-pattern>*/*.js</exclude-pattern>
@ -19,5 +19,11 @@
<!-- index.php bootstraps everything, so yes mixed symbols with side effects --> <!-- index.php bootstraps everything, so yes mixed symbols with side effects -->
<exclude-pattern>index.php</exclude-pattern> <exclude-pattern>index.php</exclude-pattern>
<exclude-pattern>plugins/*</exclude-pattern> <exclude-pattern>plugins/*</exclude-pattern>
<exclude-pattern>tests/bootstrap.php</exclude-pattern>
<exclude-pattern>tests/utils/RainTPL.php</exclude-pattern>
</rule>
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
<exclude-pattern>tests/utils/RainTPL.php</exclude-pattern>
</rule> </rule>
</ruleset> </ruleset>

View file

@ -39,7 +39,7 @@ class PluginManagerTest extends \Shaarli\TestCase
public function testPlugin(): void public function testPlugin(): void
{ {
PluginManager::$PLUGINS_PATH = self::$pluginPath; PluginManager::$PLUGINS_PATH = self::$pluginPath;
$this->pluginManager->load(array(self::$pluginName)); $this->pluginManager->load([self::$pluginName]);
$this->assertTrue(function_exists('hook_test_random')); $this->assertTrue(function_exists('hook_test_random'));
@ -50,19 +50,19 @@ class PluginManagerTest extends \Shaarli\TestCase
static::assertSame('woot', $data[1]); static::assertSame('woot', $data[1]);
$data = [0 => 'woot']; $data = [0 => 'woot'];
$this->pluginManager->executeHooks('random', $data, array('target' => 'test')); $this->pluginManager->executeHooks('random', $data, ['target' => 'test']);
static::assertCount(2, $data); static::assertCount(2, $data);
static::assertSame('page test', $data[1]); static::assertSame('page test', $data[1]);
$data = [0 => 'woot']; $data = [0 => 'woot'];
$this->pluginManager->executeHooks('random', $data, array('loggedin' => true)); $this->pluginManager->executeHooks('random', $data, ['loggedin' => true]);
static::assertCount(2, $data); static::assertCount(2, $data);
static::assertEquals('loggedin', $data[1]); static::assertEquals('loggedin', $data[1]);
$data = [0 => 'woot']; $data = [0 => 'woot'];
$this->pluginManager->executeHooks('random', $data, array('loggedin' => null)); $this->pluginManager->executeHooks('random', $data, ['loggedin' => null]);
static::assertCount(3, $data); static::assertCount(3, $data);
static::assertEquals('loggedin', $data[1]); static::assertEquals('loggedin', $data[1]);
@ -76,7 +76,7 @@ class PluginManagerTest extends \Shaarli\TestCase
public function testPluginWithPhpError(): void public function testPluginWithPhpError(): void
{ {
PluginManager::$PLUGINS_PATH = self::$pluginPath; PluginManager::$PLUGINS_PATH = self::$pluginPath;
$this->pluginManager->load(array(self::$pluginName)); $this->pluginManager->load([self::$pluginName]);
$this->assertTrue(function_exists('hook_test_error')); $this->assertTrue(function_exists('hook_test_error'));

View file

@ -15,9 +15,9 @@ use WebThumbnailer\Application\ConfigManager as WTConfigManager;
*/ */
class ThumbnailerTest extends TestCase class ThumbnailerTest extends TestCase
{ {
const WIDTH = 190; protected const WIDTH = 190;
const HEIGHT = 210; protected const HEIGHT = 210;
/** /**
* @var Thumbnailer; * @var Thumbnailer;
@ -103,10 +103,10 @@ class ThumbnailerTest extends TestCase
$objects = scandir($dir); $objects = scandir($dir);
foreach ($objects as $object) { foreach ($objects as $object) {
if ($object != "." && $object != "..") { if ($object != "." && $object != "..") {
if (is_dir($dir."/".$object)) { if (is_dir($dir . "/" . $object)) {
$this->rrmdirContent($dir."/".$object); $this->rrmdirContent($dir . "/" . $object);
} else { } else {
unlink($dir."/".$object); unlink($dir . "/" . $object);
} }
} }
} }

View file

@ -1,14 +1,17 @@
<?php <?php
/** /**
* TimeZone's tests * TimeZone's tests
*/ */
require_once 'application/TimeZone.php'; namespace Shaarli\Tests;
use Shaarli\TestCase;
/** /**
* Unitary tests for timezone utilities * Unitary tests for timezone utilities
*/ */
class TimeZoneTest extends \Shaarli\TestCase class TimeZoneTest extends TestCase
{ {
/** /**
* @var array of timezones * @var array of timezones

View file

@ -1,16 +1,18 @@
<?php <?php
/** /**
* Utilities' tests * Utilities' tests
*/ */
require_once 'application/Utils.php'; namespace Shaarli\Tests;
require_once 'application/Languages.php';
use DateTime;
use Shaarli\TestCase;
/** /**
* Unitary tests for Shaarli utilities * Unitary tests for Shaarli utilities
*/ */
class UtilsTest extends \Shaarli\TestCase class UtilsTest extends TestCase
{ {
// Log file // Log file
protected static $testLogFile = 'tests.log'; protected static $testLogFile = 'tests.log';
@ -54,7 +56,7 @@ class UtilsTest extends \Shaarli\TestCase
/** /**
* Returns a list of the elements from the last logged entry * Returns a list of the elements from the last logged entry
* *
* @return list (date, ip address, message) * @return array (date, ip address, message)
*/ */
protected function getLastLogEntry() protected function getLastLogEntry()
{ {
@ -187,7 +189,7 @@ class UtilsTest extends \Shaarli\TestCase
public function testGenerateLocationLoop() public function testGenerateLocationLoop()
{ {
$ref = 'http://localhost/?test'; $ref = 'http://localhost/?test';
$this->assertEquals('./?', generateLocation($ref, 'localhost', array('test'))); $this->assertEquals('./?', generateLocation($ref, 'localhost', ['test']));
} }
/** /**
@ -313,15 +315,15 @@ class UtilsTest extends \Shaarli\TestCase
*/ */
public function testHumanBytes() public function testHumanBytes()
{ {
$this->assertEquals('2'. t('kiB'), human_bytes(2 * 1024)); $this->assertEquals('2' . t('kiB'), human_bytes(2 * 1024));
$this->assertEquals('2'. t('kiB'), human_bytes(strval(2 * 1024))); $this->assertEquals('2' . t('kiB'), human_bytes(strval(2 * 1024)));
$this->assertEquals('2'. t('MiB'), human_bytes(2 * (pow(1024, 2)))); $this->assertEquals('2' . t('MiB'), human_bytes(2 * (pow(1024, 2))));
$this->assertEquals('2'. t('MiB'), human_bytes(strval(2 * (pow(1024, 2))))); $this->assertEquals('2' . t('MiB'), human_bytes(strval(2 * (pow(1024, 2)))));
$this->assertEquals('2'. t('GiB'), human_bytes(2 * (pow(1024, 3)))); $this->assertEquals('2' . t('GiB'), human_bytes(2 * (pow(1024, 3))));
$this->assertEquals('2'. t('GiB'), human_bytes(strval(2 * (pow(1024, 3))))); $this->assertEquals('2' . t('GiB'), human_bytes(strval(2 * (pow(1024, 3)))));
$this->assertEquals('374'. t('B'), human_bytes(374)); $this->assertEquals('374' . t('B'), human_bytes(374));
$this->assertEquals('374'. t('B'), human_bytes('374')); $this->assertEquals('374' . t('B'), human_bytes('374'));
$this->assertEquals('232'. t('kiB'), human_bytes(237481)); $this->assertEquals('232' . t('kiB'), human_bytes(237481));
$this->assertEquals(t('Unlimited'), human_bytes('0')); $this->assertEquals(t('Unlimited'), human_bytes('0'));
$this->assertEquals(t('Unlimited'), human_bytes(0)); $this->assertEquals(t('Unlimited'), human_bytes(0));
$this->assertEquals(t('Setting not set'), human_bytes('')); $this->assertEquals(t('Setting not set'), human_bytes(''));
@ -332,9 +334,9 @@ class UtilsTest extends \Shaarli\TestCase
*/ */
public function testGetMaxUploadSize() public function testGetMaxUploadSize()
{ {
$this->assertEquals('1'. t('MiB'), get_max_upload_size(2097152, '1024k')); $this->assertEquals('1' . t('MiB'), get_max_upload_size(2097152, '1024k'));
$this->assertEquals('1'. t('MiB'), get_max_upload_size('1m', '2m')); $this->assertEquals('1' . t('MiB'), get_max_upload_size('1m', '2m'));
$this->assertEquals('100'. t('B'), get_max_upload_size(100, 100)); $this->assertEquals('100' . t('B'), get_max_upload_size(100, 100));
} }
/** /**

View file

@ -1,9 +1,11 @@
<?php <?php
namespace Shaarli\Api; namespace Shaarli\Api;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -32,7 +34,7 @@ class ApiMiddlewareTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -49,7 +51,7 @@ class ApiMiddlewareTest extends \Shaarli\TestCase
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('api.secret', 'NapoleonWasALizard'); $this->conf->set('api.secret', 'NapoleonWasALizard');
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');
@ -80,7 +82,7 @@ class ApiMiddlewareTest extends \Shaarli\TestCase
$env = Environment::mock([ $env = Environment::mock([
'REQUEST_METHOD' => 'GET', 'REQUEST_METHOD' => 'GET',
'REQUEST_URI' => '/echo', 'REQUEST_URI' => '/echo',
'HTTP_AUTHORIZATION'=> 'Bearer ' . ApiUtilsTest::generateValidJwtToken('NapoleonWasALizard'), 'HTTP_AUTHORIZATION' => 'Bearer ' . ApiUtilsTest::generateValidJwtToken('NapoleonWasALizard'),
]); ]);
$request = Request::createFromEnvironment($env); $request = Request::createFromEnvironment($env);
$response = new Response(); $response = new Response();
@ -196,7 +198,7 @@ class ApiMiddlewareTest extends \Shaarli\TestCase
$env = Environment::mock([ $env = Environment::mock([
'REQUEST_METHOD' => 'GET', 'REQUEST_METHOD' => 'GET',
'REQUEST_URI' => '/echo', 'REQUEST_URI' => '/echo',
'HTTP_AUTHORIZATION'=> 'Bearer jwt', 'HTTP_AUTHORIZATION' => 'Bearer jwt',
]); ]);
$request = Request::createFromEnvironment($env); $request = Request::createFromEnvironment($env);
$response = new Response(); $response = new Response();
@ -219,7 +221,7 @@ class ApiMiddlewareTest extends \Shaarli\TestCase
$env = Environment::mock([ $env = Environment::mock([
'REQUEST_METHOD' => 'GET', 'REQUEST_METHOD' => 'GET',
'REQUEST_URI' => '/echo', 'REQUEST_URI' => '/echo',
'HTTP_AUTHORIZATION'=> 'PolarBearer jwt', 'HTTP_AUTHORIZATION' => 'PolarBearer jwt',
]); ]);
$request = Request::createFromEnvironment($env); $request = Request::createFromEnvironment($env);
$response = new Response(); $response = new Response();
@ -245,7 +247,7 @@ class ApiMiddlewareTest extends \Shaarli\TestCase
$env = Environment::mock([ $env = Environment::mock([
'REQUEST_METHOD' => 'GET', 'REQUEST_METHOD' => 'GET',
'REQUEST_URI' => '/echo', 'REQUEST_URI' => '/echo',
'HTTP_AUTHORIZATION'=> 'Bearer jwt', 'HTTP_AUTHORIZATION' => 'Bearer jwt',
]); ]);
$request = Request::createFromEnvironment($env); $request = Request::createFromEnvironment($env);
$response = new Response(); $response = new Response();

View file

@ -32,10 +32,10 @@ class ApiUtilsTest extends \Shaarli\TestCase
"alg": "HS512" "alg": "HS512"
}'); }');
$payload = Base64Url::encode('{ $payload = Base64Url::encode('{
"iat": '. time() .' "iat": ' . time() . '
}'); }');
$signature = Base64Url::encode(hash_hmac('sha512', $header .'.'. $payload, $secret, true)); $signature = Base64Url::encode(hash_hmac('sha512', $header . '.' . $payload, $secret, true));
return $header .'.'. $payload .'.'. $signature; return $header . '.' . $payload . '.' . $signature;
} }
/** /**

View file

@ -4,14 +4,14 @@ namespace Shaarli\Api\Controllers;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\TestCase;
use Shaarli\Tests\Utils\ReferenceHistory;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
use Slim\Http\Response; use Slim\Http\Response;
require_once 'tests/utils/ReferenceHistory.php'; class HistoryTest extends TestCase
class HistoryTest extends \Shaarli\TestCase
{ {
/** /**
* @var string datastore to test write operations * @var string datastore to test write operations
@ -24,7 +24,7 @@ class HistoryTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceHistory instance. * @var ReferenceHistory instance.
*/ */
protected $refHistory = null; protected $refHistory = null;
@ -44,7 +44,7 @@ class HistoryTest extends \Shaarli\TestCase
protected function setUp(): void protected function setUp(): void
{ {
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->refHistory = new \ReferenceHistory(); $this->refHistory = new ReferenceHistory();
$this->refHistory->write(self::$testHistory); $this->refHistory->write(self::$testHistory);
$this->container = new Container(); $this->container = new Container();
$this->container['conf'] = $this->conf; $this->container['conf'] = $this->conf;

View file

@ -1,4 +1,5 @@
<?php <?php
namespace Shaarli\Api\Controllers; namespace Shaarli\Api\Controllers;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
@ -7,6 +8,7 @@ use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -32,7 +34,7 @@ class InfoTest extends TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -54,7 +56,7 @@ class InfoTest extends TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$this->pluginManager = new PluginManager($this->conf); $this->pluginManager = new PluginManager($this->conf);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');
@ -95,7 +97,7 @@ class InfoTest extends TestCase
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$data = json_decode((string) $response->getBody(), true); $data = json_decode((string) $response->getBody(), true);
$this->assertEquals(\ReferenceLinkDB::$NB_LINKS_TOTAL, $data['global_counter']); $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, $data['global_counter']);
$this->assertEquals(2, $data['private_counter']); $this->assertEquals(2, $data['private_counter']);
$this->assertEquals('Shaarli', $data['settings']['title']); $this->assertEquals('Shaarli', $data['settings']['title']);
$this->assertEquals('?', $data['settings']['header_link']); $this->assertEquals('?', $data['settings']['header_link']);
@ -106,7 +108,7 @@ class InfoTest extends TestCase
$title = 'My bookmarks'; $title = 'My bookmarks';
$headerLink = 'http://shaarli.tld'; $headerLink = 'http://shaarli.tld';
$timezone = 'Europe/Paris'; $timezone = 'Europe/Paris';
$enabledPlugins = array('foo', 'bar'); $enabledPlugins = ['foo', 'bar'];
$defaultPrivateLinks = true; $defaultPrivateLinks = true;
$this->conf->set('general.title', $title); $this->conf->set('general.title', $title);
$this->conf->set('general.header_link', $headerLink); $this->conf->set('general.header_link', $headerLink);
@ -118,7 +120,7 @@ class InfoTest extends TestCase
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$data = json_decode((string) $response->getBody(), true); $data = json_decode((string) $response->getBody(), true);
$this->assertEquals(\ReferenceLinkDB::$NB_LINKS_TOTAL, $data['global_counter']); $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, $data['global_counter']);
$this->assertEquals(2, $data['private_counter']); $this->assertEquals(2, $data['private_counter']);
$this->assertEquals($title, $data['settings']['title']); $this->assertEquals($title, $data['settings']['title']);
$this->assertEquals($headerLink, $data['settings']['header_link']); $this->assertEquals($headerLink, $data['settings']['header_link']);

View file

@ -1,6 +1,5 @@
<?php <?php
namespace Shaarli\Api\Controllers; namespace Shaarli\Api\Controllers;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
@ -8,6 +7,8 @@ use Shaarli\Bookmark\BookmarkFileService;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceHistory;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -31,7 +32,7 @@ class DeleteLinkTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -69,9 +70,9 @@ class DeleteLinkTest extends \Shaarli\TestCase
$this->mutex = new NoMutex(); $this->mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$refHistory = new \ReferenceHistory(); $refHistory = new ReferenceHistory();
$refHistory->write(self::$testHistory); $refHistory->write(self::$testHistory);
$this->history = new History(self::$testHistory); $this->history = new History(self::$testHistory);
$this->pluginManager = new PluginManager($this->conf); $this->pluginManager = new PluginManager($this->conf);

View file

@ -8,6 +8,7 @@ use Shaarli\Bookmark\BookmarkFileService;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -35,7 +36,7 @@ class GetLinkIdTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -52,7 +53,7 @@ class GetLinkIdTest extends \Shaarli\TestCase
/** /**
* Number of JSON fields per link. * Number of JSON fields per link.
*/ */
const NB_FIELDS_LINK = 9; protected const NB_FIELDS_LINK = 9;
/** /**
* Before each test, instantiate a new Api with its config, plugins and bookmarks. * Before each test, instantiate a new Api with its config, plugins and bookmarks.
@ -62,7 +63,7 @@ class GetLinkIdTest extends \Shaarli\TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');

View file

@ -1,4 +1,5 @@
<?php <?php
namespace Shaarli\Api\Controllers; namespace Shaarli\Api\Controllers;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
@ -8,6 +9,7 @@ use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -35,7 +37,7 @@ class GetLinksTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -52,7 +54,7 @@ class GetLinksTest extends \Shaarli\TestCase
/** /**
* Number of JSON field per link. * Number of JSON field per link.
*/ */
const NB_FIELDS_LINK = 9; protected const NB_FIELDS_LINK = 9;
/** /**
* Before every test, instantiate a new Api with its config, plugins and bookmarks. * Before every test, instantiate a new Api with its config, plugins and bookmarks.
@ -62,7 +64,7 @@ class GetLinksTest extends \Shaarli\TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');
@ -329,7 +331,7 @@ class GetLinksTest extends \Shaarli\TestCase
// URL encoding // URL encoding
$env = Environment::mock([ $env = Environment::mock([
'REQUEST_METHOD' => 'GET', 'REQUEST_METHOD' => 'GET',
'QUERY_STRING' => 'searchterm='. urlencode('@web') 'QUERY_STRING' => 'searchterm=' . urlencode('@web')
]); ]);
$request = Request::createFromEnvironment($env); $request = Request::createFromEnvironment($env);
$response = $this->controller->getLinks($request, new Response()); $response = $this->controller->getLinks($request, new Response());
@ -430,7 +432,7 @@ class GetLinksTest extends \Shaarli\TestCase
$response = $this->controller->getLinks($request, new Response()); $response = $this->controller->getLinks($request, new Response());
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$data = json_decode((string) $response->getBody(), true); $data = json_decode((string) $response->getBody(), true);
$this->assertEquals(\ReferenceLinkDB::$NB_LINKS_TOTAL, count($data)); $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data));
$this->assertEquals(10, $data[0]['id']); $this->assertEquals(10, $data[0]['id']);
$this->assertEquals(41, $data[2]['id']); $this->assertEquals(41, $data[2]['id']);

View file

@ -9,6 +9,8 @@ use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\ReferenceHistory;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -40,7 +42,7 @@ class PostLinkTest extends TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -67,7 +69,7 @@ class PostLinkTest extends TestCase
/** /**
* Number of JSON field per link. * Number of JSON field per link.
*/ */
const NB_FIELDS_LINK = 9; protected const NB_FIELDS_LINK = 9;
/** /**
* Before every test, instantiate a new Api with its config, plugins and bookmarks. * Before every test, instantiate a new Api with its config, plugins and bookmarks.
@ -77,9 +79,9 @@ class PostLinkTest extends TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$refHistory = new \ReferenceHistory(); $refHistory = new ReferenceHistory();
$refHistory->write(self::$testHistory); $refHistory->write(self::$testHistory);
$this->history = new History(self::$testHistory); $this->history = new History(self::$testHistory);
$pluginManager = new PluginManager($this->conf); $pluginManager = new PluginManager($this->conf);

View file

@ -1,6 +1,5 @@
<?php <?php
namespace Shaarli\Api\Controllers; namespace Shaarli\Api\Controllers;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
@ -9,6 +8,8 @@ use Shaarli\Bookmark\BookmarkFileService;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceHistory;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -32,7 +33,7 @@ class PutLinkTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -59,7 +60,7 @@ class PutLinkTest extends \Shaarli\TestCase
/** /**
* Number of JSON field per link. * Number of JSON field per link.
*/ */
const NB_FIELDS_LINK = 9; protected const NB_FIELDS_LINK = 9;
/** /**
* Before every test, instantiate a new Api with its config, plugins and bookmarks. * Before every test, instantiate a new Api with its config, plugins and bookmarks.
@ -69,9 +70,9 @@ class PutLinkTest extends \Shaarli\TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$refHistory = new \ReferenceHistory(); $refHistory = new ReferenceHistory();
$refHistory->write(self::$testHistory); $refHistory->write(self::$testHistory);
$this->history = new History(self::$testHistory); $this->history = new History(self::$testHistory);
$pluginManager = new PluginManager($this->conf); $pluginManager = new PluginManager($this->conf);

View file

@ -1,6 +1,5 @@
<?php <?php
namespace Shaarli\Api\Controllers; namespace Shaarli\Api\Controllers;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
@ -9,6 +8,8 @@ use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceHistory;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -32,7 +33,7 @@ class DeleteTagTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -70,9 +71,9 @@ class DeleteTagTest extends \Shaarli\TestCase
$this->mutex = new NoMutex(); $this->mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$refHistory = new \ReferenceHistory(); $refHistory = new ReferenceHistory();
$refHistory->write(self::$testHistory); $refHistory->write(self::$testHistory);
$this->history = new History(self::$testHistory); $this->history = new History(self::$testHistory);
$this->pluginManager = new PluginManager($this->conf); $this->pluginManager = new PluginManager($this->conf);

View file

@ -8,6 +8,7 @@ use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -33,7 +34,7 @@ class GetTagNameTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -53,7 +54,7 @@ class GetTagNameTest extends \Shaarli\TestCase
/** /**
* Number of JSON fields per link. * Number of JSON fields per link.
*/ */
const NB_FIELDS_TAG = 2; protected const NB_FIELDS_TAG = 2;
/** /**
* Before each test, instantiate a new Api with its config, plugins and bookmarks. * Before each test, instantiate a new Api with its config, plugins and bookmarks.
@ -63,7 +64,7 @@ class GetTagNameTest extends \Shaarli\TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');

View file

@ -1,4 +1,5 @@
<?php <?php
namespace Shaarli\Api\Controllers; namespace Shaarli\Api\Controllers;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
@ -7,6 +8,7 @@ use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -32,7 +34,7 @@ class GetTagsTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -57,7 +59,7 @@ class GetTagsTest extends \Shaarli\TestCase
/** /**
* Number of JSON field per link. * Number of JSON field per link.
*/ */
const NB_FIELDS_TAG = 2; protected const NB_FIELDS_TAG = 2;
/** /**
* Before every test, instantiate a new Api with its config, plugins and bookmarks. * Before every test, instantiate a new Api with its config, plugins and bookmarks.
@ -67,7 +69,7 @@ class GetTagsTest extends \Shaarli\TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');
$this->pluginManager = new PluginManager($this->conf); $this->pluginManager = new PluginManager($this->conf);

View file

@ -9,6 +9,8 @@ use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Tests\Utils\ReferenceHistory;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;
@ -32,7 +34,7 @@ class PutTagTest extends \Shaarli\TestCase
protected $conf; protected $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected $refDB = null; protected $refDB = null;
@ -62,7 +64,7 @@ class PutTagTest extends \Shaarli\TestCase
/** /**
* Number of JSON field per link. * Number of JSON field per link.
*/ */
const NB_FIELDS_TAG = 2; protected const NB_FIELDS_TAG = 2;
/** /**
* Before every test, instantiate a new Api with its config, plugins and bookmarks. * Before every test, instantiate a new Api with its config, plugins and bookmarks.
@ -72,9 +74,9 @@ class PutTagTest extends \Shaarli\TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf = new ConfigManager('tests/utils/config/configJson');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$refHistory = new \ReferenceHistory(); $refHistory = new ReferenceHistory();
$refHistory->write(self::$testHistory); $refHistory->write(self::$testHistory);
$this->history = new History(self::$testHistory); $this->history = new History(self::$testHistory);
$this->pluginManager = new PluginManager($this->conf); $this->pluginManager = new PluginManager($this->conf);

View file

@ -3,6 +3,7 @@
namespace Shaarli\Bookmark; namespace Shaarli\Bookmark;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\ReferenceLinkDB;
/** /**
* Class BookmarkArrayTest * Class BookmarkArrayTest
@ -185,7 +186,7 @@ class BookmarkArrayTest extends TestCase
$this->assertCount(3, $array); $this->assertCount(3, $array);
foreach ($array as $id => $bookmark) { foreach ($array as $id => $bookmark) {
$this->assertEquals(${'bookmark'. $id}, $bookmark); $this->assertEquals(${'bookmark' . $id}, $bookmark);
} }
} }
@ -194,7 +195,7 @@ class BookmarkArrayTest extends TestCase
*/ */
public function testReorder() public function testReorder()
{ {
$refDB = new \ReferenceLinkDB(); $refDB = new ReferenceLinkDB();
$refDB->write('sandbox/datastore.php'); $refDB->write('sandbox/datastore.php');

View file

@ -1,4 +1,5 @@
<?php <?php
/** /**
* Link datastore tests * Link datastore tests
*/ */
@ -7,7 +8,6 @@ namespace Shaarli\Bookmark;
use DateTime; use DateTime;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
use ReferenceLinkDB;
use ReflectionClass; use ReflectionClass;
use Shaarli; use Shaarli;
use Shaarli\Bookmark\Exception\BookmarkNotFoundException; use Shaarli\Bookmark\Exception\BookmarkNotFoundException;
@ -16,6 +16,8 @@ use Shaarli\Formatter\BookmarkMarkdownFormatter;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\FakeBookmarkService;
use Shaarli\Tests\Utils\ReferenceLinkDB;
/** /**
* Unitary tests for LegacyLinkDBTest * Unitary tests for LegacyLinkDBTest
@ -82,19 +84,19 @@ class BookmarkFileServiceTest extends TestCase
unlink(self::$testDatastore); unlink(self::$testDatastore);
} }
if (file_exists(self::$testConf .'.json.php')) { if (file_exists(self::$testConf . '.json.php')) {
unlink(self::$testConf .'.json.php'); unlink(self::$testConf . '.json.php');
} }
if (file_exists(self::$testUpdates)) { if (file_exists(self::$testUpdates)) {
unlink(self::$testUpdates); unlink(self::$testUpdates);
} }
copy('tests/utils/config/configJson.json.php', self::$testConf .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$testConf . '.json.php');
$this->conf = new ConfigManager(self::$testConf); $this->conf = new ConfigManager(self::$testConf);
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->conf->set('resource.updates', self::$testUpdates); $this->conf->set('resource.updates', self::$testUpdates);
$this->refDB = new \ReferenceLinkDB(); $this->refDB = new ReferenceLinkDB();
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$this->history = new History('sandbox/history.php'); $this->history = new History('sandbox/history.php');
$this->pluginManager = new PluginManager($this->conf); $this->pluginManager = new PluginManager($this->conf);
@ -123,12 +125,12 @@ class BookmarkFileServiceTest extends TestCase
define('SHAARLI_VERSION', 'dev'); define('SHAARLI_VERSION', 'dev');
} }
$this->refDB = new \ReferenceLinkDB(true); $this->refDB = new ReferenceLinkDB(true);
$this->refDB->write(self::$testDatastore); $this->refDB->write(self::$testDatastore);
$db = self::getMethod('migrate'); $db = self::getMethod('migrate');
$db->invokeArgs($this->privateLinkDB, []); $db->invokeArgs($this->privateLinkDB, []);
$db = new \FakeBookmarkService( $db = new FakeBookmarkService(
$this->conf, $this->conf,
$this->pluginManager, $this->pluginManager,
$this->history, $this->history,
@ -203,7 +205,7 @@ class BookmarkFileServiceTest extends TestCase
$this->assertEquals($updated, $bookmark->getUpdated()); $this->assertEquals($updated, $bookmark->getUpdated());
// reload from file // reload from file
$this->privateLinkDB = new \FakeBookmarkService( $this->privateLinkDB = new FakeBookmarkService(
$this->conf, $this->conf,
$this->pluginManager, $this->pluginManager,
$this->history, $this->history,
@ -714,7 +716,7 @@ class BookmarkFileServiceTest extends TestCase
{ {
unlink(self::$testDatastore); unlink(self::$testDatastore);
$this->assertFileNotExists(self::$testDatastore); $this->assertFileNotExists(self::$testDatastore);
$db = new \FakeBookmarkService($this->conf, $this->pluginManager, $this->history, $this->mutex, false); $db = new FakeBookmarkService($this->conf, $this->pluginManager, $this->history, $this->mutex, false);
$this->assertFileNotExists(self::$testDatastore); $this->assertFileNotExists(self::$testDatastore);
$this->assertInstanceOf(BookmarkArray::class, $db->getBookmarks()); $this->assertInstanceOf(BookmarkArray::class, $db->getBookmarks());
$this->assertCount(0, $db->getBookmarks()); $this->assertCount(0, $db->getBookmarks());

View file

@ -3,11 +3,12 @@
namespace Shaarli\Bookmark; namespace Shaarli\Bookmark;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
use ReferenceLinkDB;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\FakeBookmarkService;
use Shaarli\Tests\Utils\ReferenceLinkDB;
/** /**
* Class BookmarkFilterTest. * Class BookmarkFilterTest.
@ -46,10 +47,10 @@ class BookmarkFilterTest extends TestCase
$conf = new ConfigManager('tests/utils/config/configJson'); $conf = new ConfigManager('tests/utils/config/configJson');
$conf->set('resource.datastore', self::$testDatastore); $conf->set('resource.datastore', self::$testDatastore);
static::$pluginManager = new PluginManager($conf); static::$pluginManager = new PluginManager($conf);
self::$refDB = new \ReferenceLinkDB(); self::$refDB = new ReferenceLinkDB();
self::$refDB->write(self::$testDatastore); self::$refDB->write(self::$testDatastore);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');
self::$bookmarkService = new \FakeBookmarkService($conf, static::$pluginManager, $history, $mutex, true); self::$bookmarkService = new FakeBookmarkService($conf, static::$pluginManager, $history, $mutex, true);
self::$linkFilter = new BookmarkFilter(self::$bookmarkService->getBookmarks(), $conf, static::$pluginManager); self::$linkFilter = new BookmarkFilter(self::$bookmarkService->getBookmarks(), $conf, static::$pluginManager);
} }
@ -417,28 +418,28 @@ class BookmarkFilterTest extends TestCase
1, 1,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT, BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT,
array($tags, $terms) [$tags, $terms]
)) ))
); );
$this->assertEquals( $this->assertEquals(
2, 2,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT, BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT,
array('', $terms) ['', $terms]
)) ))
); );
$this->assertEquals( $this->assertEquals(
1, 1,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT, BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT,
array(false, 'PSR-2') [false, 'PSR-2']
)) ))
); );
$this->assertEquals( $this->assertEquals(
1, 1,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT, BookmarkFilter::$FILTER_TAG | BookmarkFilter::$FILTER_TEXT,
array($tags, '') [$tags, '']
)) ))
); );
$this->assertEquals( $this->assertEquals(

View file

@ -7,6 +7,7 @@ use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\ReferenceLinkDB;
/** /**
* Class BookmarkInitializerTest * Class BookmarkInitializerTest
@ -52,7 +53,7 @@ class BookmarkInitializerTest extends TestCase
unlink(self::$testDatastore); unlink(self::$testDatastore);
} }
copy('tests/utils/config/configJson.json.php', self::$testConf .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$testConf . '.json.php');
$this->conf = new ConfigManager(self::$testConf); $this->conf = new ConfigManager(self::$testConf);
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->pluginManager = new PluginManager($this->conf); $this->pluginManager = new PluginManager($this->conf);
@ -73,7 +74,7 @@ class BookmarkInitializerTest extends TestCase
*/ */
public function testInitializeNotEmptyDataStore(): void public function testInitializeNotEmptyDataStore(): void
{ {
$refDB = new \ReferenceLinkDB(); $refDB = new ReferenceLinkDB();
$refDB->write(self::$testDatastore); $refDB->write(self::$testDatastore);
$this->bookmarkService = new BookmarkFileService( $this->bookmarkService = new BookmarkFileService(
$this->conf, $this->conf,

View file

@ -167,7 +167,7 @@ class BookmarkTest extends TestCase
$exception = $e; $exception = $e;
} }
$this->assertNotNull($exception); $this->assertNotNull($exception);
$this->assertContainsPolyfill('- ID: '. PHP_EOL, $exception->getMessage()); $this->assertContainsPolyfill('- ID: ' . PHP_EOL, $exception->getMessage());
} }
/** /**
@ -186,7 +186,7 @@ class BookmarkTest extends TestCase
$exception = $e; $exception = $e;
} }
$this->assertNotNull($exception); $this->assertNotNull($exception);
$this->assertContainsPolyfill('- ShortUrl: '. PHP_EOL, $exception->getMessage()); $this->assertContainsPolyfill('- ShortUrl: ' . PHP_EOL, $exception->getMessage());
} }
/** /**
@ -205,7 +205,7 @@ class BookmarkTest extends TestCase
$exception = $e; $exception = $e;
} }
$this->assertNotNull($exception); $this->assertNotNull($exception);
$this->assertContainsPolyfill('- Created: '. PHP_EOL, $exception->getMessage()); $this->assertContainsPolyfill('- Created: ' . PHP_EOL, $exception->getMessage());
} }
/** /**

View file

@ -4,8 +4,6 @@ namespace Shaarli\Bookmark;
use Shaarli\TestCase; use Shaarli\TestCase;
require_once 'tests/utils/CurlUtils.php';
/** /**
* Class LinkUtilsTest. * Class LinkUtilsTest.
*/ */
@ -142,7 +140,7 @@ class LinkUtilsTest extends TestCase
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
// OpenGraph multiple properties both end with noise // OpenGraph multiple properties both end with noise
$html = '<meta tag1="content1" property="og:unrelated1 og:description og:unrelated2" '. $html = '<meta tag1="content1" property="og:unrelated1 og:description og:unrelated2" ' .
'tag2="content2" content="' . $description . '" tag3="content3">'; 'tag2="content2" content="' . $description . '" tag3="content3">';
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
@ -159,7 +157,7 @@ class LinkUtilsTest extends TestCase
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
// OpenGraph reversed multiple properties both end with noise // OpenGraph reversed multiple properties both end with noise
$html = '<meta tag1="content1" content="' . $description . '" tag2="content2" '. $html = '<meta tag1="content1" content="' . $description . '" tag2="content2" ' .
'property="og:unrelated1 og:description og:unrelated2" tag3="content3">'; 'property="og:unrelated1 og:description og:unrelated2" tag3="content3">';
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
@ -178,7 +176,7 @@ class LinkUtilsTest extends TestCase
$html = '<meta property="og:description" content="' . $description . '">'; $html = '<meta property="og:description" content="' . $description . '">';
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
$html = '<meta tag1="content1" property="og:unrelated1 og:description og:unrelated2" '. $html = '<meta tag1="content1" property="og:unrelated1 og:description og:unrelated2" ' .
'tag2="content2" content="' . $description . '" tag3="content3">'; 'tag2="content2" content="' . $description . '" tag3="content3">';
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
@ -190,7 +188,7 @@ class LinkUtilsTest extends TestCase
$html = '<meta property="og:description" content=\'' . $description . '\'>'; $html = '<meta property="og:description" content=\'' . $description . '\'>';
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
$html = '<meta tag1="content1" property="og:unrelated1 og:description og:unrelated2" '. $html = '<meta tag1="content1" property="og:unrelated1 og:description og:unrelated2" ' .
'tag2="content2" content=\'' . $description . '\' tag3="content3">'; 'tag2="content2" content=\'' . $description . '\' tag3="content3">';
$this->assertEquals($description, html_extract_tag('description', $html)); $this->assertEquals($description, html_extract_tag('description', $html));
@ -247,9 +245,9 @@ class LinkUtilsTest extends TestCase
public function testHtmlExtractDescriptionFromGoogleRealCase(): void public function testHtmlExtractDescriptionFromGoogleRealCase(): void
{ {
$html = 'id="gsr"><meta content="Fêtes de fin d\'année" property="twitter:title"><meta '. $html = 'id="gsr"><meta content="Fêtes de fin d\'année" property="twitter:title"><meta ' .
'content="Bonnes fêtes de fin d\'année ! #GoogleDoodle" property="twitter:description">'. 'content="Bonnes fêtes de fin d\'année ! #GoogleDoodle" property="twitter:description">' .
'<meta content="Bonnes fêtes de fin d\'année ! #GoogleDoodle" property="og:description">'. '<meta content="Bonnes fêtes de fin d\'année ! #GoogleDoodle" property="og:description">' .
'<meta content="summary_large_image" property="twitter:card"><meta co' '<meta content="summary_large_image" property="twitter:card"><meta co'
; ;
$this->assertSame('Bonnes fêtes de fin d\'année ! #GoogleDoodle', html_extract_tag('description', $html)); $this->assertSame('Bonnes fêtes de fin d\'année ! #GoogleDoodle', html_extract_tag('description', $html));
@ -701,7 +699,10 @@ class LinkUtilsTest extends TestCase
static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter(['tag1', 'tag2', 'tag3'], $separator)); static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter(['tag1', 'tag2', 'tag3'], $separator));
static::assertSame(['tag1,', 'tag2@', 'tag3'], tags_filter(['tag1,', 'tag2@', 'tag3'], $separator)); static::assertSame(['tag1,', 'tag2@', 'tag3'], tags_filter(['tag1,', 'tag2@', 'tag3'], $separator));
static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter([' tag1 ', 'tag2', 'tag3 '], $separator)); static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter([' tag1 ', 'tag2', 'tag3 '], $separator));
static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter([' tag1 ', ' ', 'tag2', ' ', 'tag3 '], $separator)); static::assertSame(
['tag1', 'tag2', 'tag3'],
tags_filter([' tag1 ', ' ', 'tag2', ' ', 'tag3 '], $separator)
);
static::assertSame(['tag1'], tags_filter([' tag1 '], $separator)); static::assertSame(['tag1'], tags_filter([' tag1 '], $separator));
static::assertSame([], tags_filter([' '], $separator)); static::assertSame([], tags_filter([' '], $separator));
static::assertSame([], tags_filter([], $separator)); static::assertSame([], tags_filter([], $separator));
@ -721,7 +722,10 @@ class LinkUtilsTest extends TestCase
['tag1', 'tag2, and other', 'tag3'], ['tag1', 'tag2, and other', 'tag3'],
tags_filter(['@@@@ tag1@@@', ' @tag2, and other @', 'tag3@@@@'], $separator) tags_filter(['@@@@ tag1@@@', ' @tag2, and other @', 'tag3@@@@'], $separator)
); );
static::assertSame(['tag1', 'tag2', 'tag3'], tags_filter(['@@@tag1@@@', '@', 'tag2', '@@@', 'tag3@@@'], $separator)); static::assertSame(
['tag1', 'tag2', 'tag3'],
tags_filter(['@@@tag1@@@', '@', 'tag2', '@@@', 'tag3@@@'], $separator)
);
static::assertSame(['tag1'], tags_filter(['@@@@tag1@@@@'], $separator)); static::assertSame(['tag1'], tags_filter(['@@@@tag1@@@@'], $separator));
static::assertSame([], tags_filter(['@@@'], $separator)); static::assertSame([], tags_filter(['@@@'], $separator));
static::assertSame([], tags_filter([], $separator)); static::assertSame([], tags_filter([], $separator));

View file

@ -2,6 +2,8 @@
require_once 'vendor/autoload.php'; require_once 'vendor/autoload.php';
use Shaarli\Tests\Utils\ReferenceSessionIdHashes;
$conf = new \Shaarli\Config\ConfigManager('tests/utils/config/configJson'); $conf = new \Shaarli\Config\ConfigManager('tests/utils/config/configJson');
new \Shaarli\Languages('en', $conf); new \Shaarli\Languages('en', $conf);
@ -13,23 +15,26 @@ if (!function_exists('is_iterable')) {
} }
} }
// TODO: remove this after fixing UT // raw functions
require_once 'application/config/ConfigPlugin.php';
require_once 'application/bookmark/LinkUtils.php'; require_once 'application/bookmark/LinkUtils.php';
require_once 'application/Utils.php';
require_once 'application/http/UrlUtils.php'; require_once 'application/http/UrlUtils.php';
require_once 'application/http/HttpUtils.php'; require_once 'application/http/HttpUtils.php';
require_once 'application/Utils.php';
require_once 'application/TimeZone.php';
require_once 'tests/utils/CurlUtils.php';
require_once 'tests/utils/RainTPL.php';
// TODO: remove this after fixing UT
require_once 'tests/TestCase.php'; require_once 'tests/TestCase.php';
require_once 'tests/container/ShaarliTestContainer.php'; require_once 'tests/container/ShaarliTestContainer.php';
require_once 'tests/front/controller/visitor/FrontControllerMockHelper.php'; require_once 'tests/front/controller/visitor/FrontControllerMockHelper.php';
require_once 'tests/front/controller/admin/FrontAdminControllerMockHelper.php'; require_once 'tests/front/controller/admin/FrontAdminControllerMockHelper.php';
require_once 'tests/updater/DummyUpdater.php';
require_once 'tests/utils/FakeBookmarkService.php';
require_once 'tests/utils/FakeConfigManager.php'; require_once 'tests/utils/FakeConfigManager.php';
require_once 'tests/utils/ReferenceHistory.php'; require_once 'tests/utils/ReferenceHistory.php';
require_once 'tests/utils/ReferenceLinkDB.php'; require_once 'tests/utils/ReferenceLinkDB.php';
require_once 'tests/utils/ReferenceSessionIdHashes.php';
\ReferenceSessionIdHashes::genAllHashes(); ReferenceSessionIdHashes::genAllHashes();
if (!defined('SHAARLI_MUTEX_FILE')) { if (!defined('SHAARLI_MUTEX_FILE')) {
define('SHAARLI_MUTEX_FILE', __FILE__); define('SHAARLI_MUTEX_FILE', __FILE__);

View file

@ -1,4 +1,5 @@
<?php <?php
namespace Shaarli\Config; namespace Shaarli\Config;
/** /**
@ -29,13 +30,13 @@ class ConfigManagerTest extends \Shaarli\TestCase
$this->conf->set('paramInt', 42); $this->conf->set('paramInt', 42);
$this->conf->set('paramString', 'value1'); $this->conf->set('paramString', 'value1');
$this->conf->set('paramBool', false); $this->conf->set('paramBool', false);
$this->conf->set('paramArray', array('foo' => 'bar')); $this->conf->set('paramArray', ['foo' => 'bar']);
$this->conf->set('paramNull', null); $this->conf->set('paramNull', null);
$this->assertEquals(42, $this->conf->get('paramInt')); $this->assertEquals(42, $this->conf->get('paramInt'));
$this->assertEquals('value1', $this->conf->get('paramString')); $this->assertEquals('value1', $this->conf->get('paramString'));
$this->assertFalse($this->conf->get('paramBool')); $this->assertFalse($this->conf->get('paramBool'));
$this->assertEquals(array('foo' => 'bar'), $this->conf->get('paramArray')); $this->assertEquals(['foo' => 'bar'], $this->conf->get('paramArray'));
$this->assertEquals(null, $this->conf->get('paramNull')); $this->assertEquals(null, $this->conf->get('paramNull'));
} }
@ -51,7 +52,7 @@ class ConfigManagerTest extends \Shaarli\TestCase
$this->conf->set('paramInt', 42); $this->conf->set('paramInt', 42);
$this->conf->set('paramString', 'value1'); $this->conf->set('paramString', 'value1');
$this->conf->set('paramBool', false); $this->conf->set('paramBool', false);
$this->conf->set('paramArray', array('foo' => 'bar')); $this->conf->set('paramArray', ['foo' => 'bar']);
$this->conf->set('paramNull', null); $this->conf->set('paramNull', null);
$this->conf->setConfigFile('tests/utils/config/configTmp'); $this->conf->setConfigFile('tests/utils/config/configTmp');
@ -62,7 +63,7 @@ class ConfigManagerTest extends \Shaarli\TestCase
$this->assertEquals(42, $this->conf->get('paramInt')); $this->assertEquals(42, $this->conf->get('paramInt'));
$this->assertEquals('value1', $this->conf->get('paramString')); $this->assertEquals('value1', $this->conf->get('paramString'));
$this->assertFalse($this->conf->get('paramBool')); $this->assertFalse($this->conf->get('paramBool'));
$this->assertEquals(array('foo' => 'bar'), $this->conf->get('paramArray')); $this->assertEquals(['foo' => 'bar'], $this->conf->get('paramArray'));
$this->assertEquals(null, $this->conf->get('paramNull')); $this->assertEquals(null, $this->conf->get('paramNull'));
} }
@ -112,7 +113,7 @@ class ConfigManagerTest extends \Shaarli\TestCase
$this->expectException(\Exception::class); $this->expectException(\Exception::class);
$this->expectExceptionMessageRegExp('#^Invalid setting key parameter. String expected, got.*#'); $this->expectExceptionMessageRegExp('#^Invalid setting key parameter. String expected, got.*#');
$this->conf->set(array('foo' => 'bar'), 'stuff'); $this->conf->set(['foo' => 'bar'], 'stuff');
} }
/** /**

View file

@ -1,4 +1,5 @@
<?php <?php
namespace Shaarli\Config; namespace Shaarli\Config;
/** /**
@ -37,7 +38,7 @@ class ConfigPhpTest extends \Shaarli\TestCase
*/ */
public function testReadNonExistent() public function testReadNonExistent()
{ {
$this->assertEquals(array(), $this->configIO->read('nope')); $this->assertEquals([], $this->configIO->read('nope'));
} }
/** /**
@ -60,16 +61,16 @@ class ConfigPhpTest extends \Shaarli\TestCase
public function testWriteNew() public function testWriteNew()
{ {
$dataFile = 'tests/utils/config/configWrite.php'; $dataFile = 'tests/utils/config/configWrite.php';
$data = array( $data = [
'login' => 'root', 'login' => 'root',
'redirector' => 'lala', 'redirector' => 'lala',
'config' => array( 'config' => [
'DATASTORE' => 'data/datastore.php', 'DATASTORE' => 'data/datastore.php',
), ],
'plugins' => array( 'plugins' => [
'WALLABAG_VERSION' => '1', 'WALLABAG_VERSION' => '1',
) ]
); ];
$this->configIO->write($dataFile, $data); $this->configIO->write($dataFile, $data);
$expected = '<?php $expected = '<?php
$GLOBALS[\'login\'] = \'root\'; $GLOBALS[\'login\'] = \'root\';

View file

@ -1,15 +1,15 @@
<?php <?php
namespace Shaarli\Config; namespace Shaarli\Config;
use Shaarli\Config\Exception\PluginConfigOrderException; use Shaarli\Config\Exception\PluginConfigOrderException;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase;
require_once 'application/config/ConfigPlugin.php';
/** /**
* Unitary tests for Shaarli config related functions * Unitary tests for Shaarli config related functions
*/ */
class ConfigPluginTest extends \Shaarli\TestCase class ConfigPluginTest extends TestCase
{ {
/** /**
* Test save_plugin_config with valid data. * Test save_plugin_config with valid data.
@ -35,12 +35,16 @@ class ConfigPluginTest extends \Shaarli\TestCase
mkdir($path = __DIR__ . '/folder'); mkdir($path = __DIR__ . '/folder');
PluginManager::$PLUGINS_PATH = $path; PluginManager::$PLUGINS_PATH = $path;
array_map(function (string $plugin) use ($path) { touch($path . '/' . $plugin); }, $expected); array_map(function (string $plugin) use ($path) {
touch($path . '/' . $plugin);
}, $expected);
$out = save_plugin_config($data); $out = save_plugin_config($data);
$this->assertEquals($expected, $out); $this->assertEquals($expected, $out);
array_map(function (string $plugin) use ($path) { unlink($path . '/' . $plugin); }, $expected); array_map(function (string $plugin) use ($path) {
unlink($path . '/' . $plugin);
}, $expected);
rmdir($path); rmdir($path);
} }
@ -49,15 +53,15 @@ class ConfigPluginTest extends \Shaarli\TestCase
*/ */
public function testSavePluginConfigInvalid() public function testSavePluginConfigInvalid()
{ {
$this->expectException(\Shaarli\Config\Exception\PluginConfigOrderException::class); $this->expectException(PluginConfigOrderException::class);
$data = array( $data = [
'plugin2' => 0, 'plugin2' => 0,
'plugin3' => 0, 'plugin3' => 0,
'order_plugin3' => 0, 'order_plugin3' => 0,
'plugin4' => 0, 'plugin4' => 0,
'order_plugin4' => 0, 'order_plugin4' => 0,
); ];
save_plugin_config($data); save_plugin_config($data);
} }
@ -67,7 +71,7 @@ class ConfigPluginTest extends \Shaarli\TestCase
*/ */
public function testSavePluginConfigEmpty() public function testSavePluginConfigEmpty()
{ {
$this->assertEquals(array(), save_plugin_config(array())); $this->assertEquals([], save_plugin_config([]));
} }
/** /**
@ -75,14 +79,14 @@ class ConfigPluginTest extends \Shaarli\TestCase
*/ */
public function testValidatePluginOrderValid() public function testValidatePluginOrderValid()
{ {
$data = array( $data = [
'order_plugin1' => 2, 'order_plugin1' => 2,
'plugin2' => 0, 'plugin2' => 0,
'plugin3' => 0, 'plugin3' => 0,
'order_plugin3' => 1, 'order_plugin3' => 1,
'plugin4' => 0, 'plugin4' => 0,
'order_plugin4' => 5, 'order_plugin4' => 5,
); ];
$this->assertTrue(validate_plugin_order($data)); $this->assertTrue(validate_plugin_order($data));
} }
@ -92,11 +96,11 @@ class ConfigPluginTest extends \Shaarli\TestCase
*/ */
public function testValidatePluginOrderInvalid() public function testValidatePluginOrderInvalid()
{ {
$data = array( $data = [
'order_plugin1' => 2, 'order_plugin1' => 2,
'order_plugin3' => 1, 'order_plugin3' => 1,
'order_plugin4' => 1, 'order_plugin4' => 1,
); ];
$this->assertFalse(validate_plugin_order($data)); $this->assertFalse(validate_plugin_order($data));
} }
@ -106,20 +110,20 @@ class ConfigPluginTest extends \Shaarli\TestCase
*/ */
public function testLoadPluginParameterValues() public function testLoadPluginParameterValues()
{ {
$plugins = array( $plugins = [
'plugin_name' => array( 'plugin_name' => [
'parameters' => array( 'parameters' => [
'param1' => array('value' => true), 'param1' => ['value' => true],
'param2' => array('value' => false), 'param2' => ['value' => false],
'param3' => array('value' => ''), 'param3' => ['value' => ''],
) ]
) ]
); ];
$parameters = array( $parameters = [
'param1' => 'value1', 'param1' => 'value1',
'param2' => 'value2', 'param2' => 'value2',
); ];
$result = load_plugin_parameter_values($plugins, $parameters); $result = load_plugin_parameter_values($plugins, $parameters);
$this->assertEquals('value1', $result['plugin_name']['parameters']['param1']['value']); $this->assertEquals('value1', $result['plugin_name']['parameters']['param1']['value']);

View file

@ -1,7 +1,9 @@
<?php <?php
/** /**
* PageCache tests * PageCache tests
*/ */
namespace Shaarli\Feed; namespace Shaarli\Feed;
/** /**

View file

@ -4,7 +4,6 @@ namespace Shaarli\Feed;
use DateTime; use DateTime;
use malkusch\lock\mutex\NoMutex; use malkusch\lock\mutex\NoMutex;
use ReferenceLinkDB;
use Shaarli\Bookmark\Bookmark; use Shaarli\Bookmark\Bookmark;
use Shaarli\Bookmark\BookmarkFileService; use Shaarli\Bookmark\BookmarkFileService;
use Shaarli\Bookmark\LinkDB; use Shaarli\Bookmark\LinkDB;
@ -13,6 +12,7 @@ use Shaarli\Formatter\FormatterFactory;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\ReferenceLinkDB;
/** /**
* FeedBuilderTest class. * FeedBuilderTest class.
@ -52,7 +52,7 @@ class FeedBuilderTest extends TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
$conf = new ConfigManager('tests/utils/config/configJson'); $conf = new ConfigManager('tests/utils/config/configJson');
$conf->set('resource.datastore', self::$testDatastore); $conf->set('resource.datastore', self::$testDatastore);
$refLinkDB = new \ReferenceLinkDB(); $refLinkDB = new ReferenceLinkDB();
$refLinkDB->write(self::$testDatastore); $refLinkDB->write(self::$testDatastore);
$history = new History('sandbox/history.php'); $history = new History('sandbox/history.php');
$factory = new FormatterFactory($conf, true); $factory = new FormatterFactory($conf, true);
@ -66,13 +66,13 @@ class FeedBuilderTest extends TestCase
true true
); );
self::$serverInfo = array( self::$serverInfo = [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/index.php', 'SCRIPT_NAME' => '/index.php',
'REQUEST_URI' => '/feed/atom', 'REQUEST_URI' => '/feed/atom',
); ];
} }
/** /**
@ -100,7 +100,10 @@ class FeedBuilderTest extends TestCase
// Test first not pinned link (note link) // Test first not pinned link (note link)
$link = $data['links'][array_keys($data['links'])[0]]; $link = $data['links'][array_keys($data['links'])[0]];
$this->assertEquals(41, $link['id']); $this->assertEquals(41, $link['id']);
$this->assertEquals(DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); $this->assertEquals(
DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'),
$link['created']
);
$this->assertEquals('http://host.tld/shaare/WDWyig', $link['guid']); $this->assertEquals('http://host.tld/shaare/WDWyig', $link['guid']);
$this->assertEquals('http://host.tld/shaare/WDWyig', $link['url']); $this->assertEquals('http://host.tld/shaare/WDWyig', $link['url']);
$this->assertRegExp('/Tue, 10 Mar 2015 11:46:51 \+\d{4}/', $link['pub_iso_date']); $this->assertRegExp('/Tue, 10 Mar 2015 11:46:51 \+\d{4}/', $link['pub_iso_date']);
@ -149,10 +152,10 @@ class FeedBuilderTest extends TestCase
*/ */
public function testBuildDataFiltered() public function testBuildDataFiltered()
{ {
$criteria = array( $criteria = [
'searchtags' => 'stuff', 'searchtags' => 'stuff',
'searchterm' => 'beard', 'searchterm' => 'beard',
); ];
$feedBuilder = new FeedBuilder( $feedBuilder = new FeedBuilder(
self::$bookmarkService, self::$bookmarkService,
self::$formatter, self::$formatter,
@ -164,7 +167,10 @@ class FeedBuilderTest extends TestCase
$this->assertEquals(1, count($data['links'])); $this->assertEquals(1, count($data['links']));
$link = array_shift($data['links']); $link = array_shift($data['links']);
$this->assertEquals(41, $link['id']); $this->assertEquals(41, $link['id']);
$this->assertEquals(DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); $this->assertEquals(
DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'),
$link['created']
);
} }
/** /**
@ -172,9 +178,9 @@ class FeedBuilderTest extends TestCase
*/ */
public function testBuildDataCount() public function testBuildDataCount()
{ {
$criteria = array( $criteria = [
'nb' => '3', 'nb' => '3',
); ];
$feedBuilder = new FeedBuilder( $feedBuilder = new FeedBuilder(
self::$bookmarkService, self::$bookmarkService,
self::$formatter, self::$formatter,
@ -186,7 +192,10 @@ class FeedBuilderTest extends TestCase
$this->assertEquals(3, count($data['links'])); $this->assertEquals(3, count($data['links']));
$link = $data['links'][array_keys($data['links'])[0]]; $link = $data['links'][array_keys($data['links'])[0]];
$this->assertEquals(41, $link['id']); $this->assertEquals(41, $link['id']);
$this->assertEquals(DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); $this->assertEquals(
DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'),
$link['created']
);
} }
/** /**
@ -208,7 +217,10 @@ class FeedBuilderTest extends TestCase
// First link is a permalink // First link is a permalink
$link = $data['links'][array_keys($data['links'])[0]]; $link = $data['links'][array_keys($data['links'])[0]];
$this->assertEquals(41, $link['id']); $this->assertEquals(41, $link['id']);
$this->assertEquals(DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); $this->assertEquals(
DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114651'),
$link['created']
);
$this->assertEquals('http://host.tld/shaare/WDWyig', $link['guid']); $this->assertEquals('http://host.tld/shaare/WDWyig', $link['guid']);
$this->assertEquals('http://host.tld/shaare/WDWyig', $link['url']); $this->assertEquals('http://host.tld/shaare/WDWyig', $link['url']);
$this->assertContainsPolyfill('Direct link', $link['description']); $this->assertContainsPolyfill('Direct link', $link['description']);
@ -216,7 +228,10 @@ class FeedBuilderTest extends TestCase
// Second link is a direct link // Second link is a direct link
$link = $data['links'][array_keys($data['links'])[1]]; $link = $data['links'][array_keys($data['links'])[1]];
$this->assertEquals(8, $link['id']); $this->assertEquals(8, $link['id']);
$this->assertEquals(DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114633'), $link['created']); $this->assertEquals(
DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150310_114633'),
$link['created']
);
$this->assertEquals('http://host.tld/shaare/RttfEw', $link['guid']); $this->assertEquals('http://host.tld/shaare/RttfEw', $link['guid']);
$this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $link['url']); $this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $link['url']);
$this->assertContainsPolyfill('Direct link', $link['description']); $this->assertContainsPolyfill('Direct link', $link['description']);
@ -259,13 +274,13 @@ class FeedBuilderTest extends TestCase
*/ */
public function testBuildDataServerSubdir() public function testBuildDataServerSubdir()
{ {
$serverInfo = array( $serverInfo = [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '8080', 'SERVER_PORT' => '8080',
'SCRIPT_NAME' => '/~user/shaarli/index.php', 'SCRIPT_NAME' => '/~user/shaarli/index.php',
'REQUEST_URI' => '/~user/shaarli/feed/atom', 'REQUEST_URI' => '/~user/shaarli/feed/atom',
); ];
$feedBuilder = new FeedBuilder( $feedBuilder = new FeedBuilder(
self::$bookmarkService, self::$bookmarkService,
self::$formatter, self::$formatter,

View file

@ -27,7 +27,7 @@ class BookmarkDefaultFormatterTest extends TestCase
*/ */
protected function setUp(): void protected function setUp(): void
{ {
copy('tests/utils/config/configJson.json.php', self::$testConf .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$testConf . '.json.php');
$this->conf = new ConfigManager(self::$testConf); $this->conf = new ConfigManager(self::$testConf);
$this->formatter = new BookmarkDefaultFormatter($this->conf, true); $this->formatter = new BookmarkDefaultFormatter($this->conf, true);
} }
@ -112,9 +112,9 @@ class BookmarkDefaultFormatterTest extends TestCase
{ {
$description = []; $description = [];
$description[] = 'This a <strong>description</strong>' . PHP_EOL; $description[] = 'This a <strong>description</strong>' . PHP_EOL;
$description[] = 'text https://sub.domain.tld?query=here&for=real#hash more text'. PHP_EOL; $description[] = 'text https://sub.domain.tld?query=here&for=real#hash more text' . PHP_EOL;
$description[] = 'Also, there is an #hashtag added'. PHP_EOL; $description[] = 'Also, there is an #hashtag added' . PHP_EOL;
$description[] = ' A N D KEEP SPACES ! '. PHP_EOL; $description[] = ' A N D KEEP SPACES ! ' . PHP_EOL;
$bookmark = new Bookmark(); $bookmark = new Bookmark();
$bookmark->setDescription(implode('', $description)); $bookmark->setDescription(implode('', $description));
@ -122,10 +122,10 @@ class BookmarkDefaultFormatterTest extends TestCase
$description[0] = 'This a &lt;strong&gt;description&lt;/strong&gt;<br />'; $description[0] = 'This a &lt;strong&gt;description&lt;/strong&gt;<br />';
$url = 'https://sub.domain.tld?query=here&amp;for=real#hash'; $url = 'https://sub.domain.tld?query=here&amp;for=real#hash';
$description[1] = 'text <a href="'. $url .'">'. $url .'</a> more text<br />'; $description[1] = 'text <a href="' . $url . '">' . $url . '</a> more text<br />';
$description[2] = 'Also, there is an <a href="./add-tag/hashtag" '. $description[2] = 'Also, there is an <a href="./add-tag/hashtag" ' .
'title="Hashtag hashtag">#hashtag</a> added<br />'; 'title="Hashtag hashtag">#hashtag</a> added<br />';
$description[3] = '&nbsp; &nbsp; A &nbsp;N &nbsp;D KEEP &nbsp; &nbsp; '. $description[3] = '&nbsp; &nbsp; A &nbsp;N &nbsp;D KEEP &nbsp; &nbsp; ' .
'SPACES &nbsp; &nbsp;! &nbsp; <br />'; 'SPACES &nbsp; &nbsp;! &nbsp; <br />';
$this->assertEquals(implode(PHP_EOL, $description) . PHP_EOL, $link['description']); $this->assertEquals(implode(PHP_EOL, $description) . PHP_EOL, $link['description']);
@ -148,7 +148,7 @@ class BookmarkDefaultFormatterTest extends TestCase
$this->assertEquals($root . $short, $link['url']); $this->assertEquals($root . $short, $link['url']);
$this->assertEquals($root . $short, $link['real_url']); $this->assertEquals($root . $short, $link['real_url']);
$this->assertEquals( $this->assertEquals(
'Text <a href="'. $root .'./add-tag/hashtag" title="Hashtag hashtag">'. 'Text <a href="' . $root . './add-tag/hashtag" title="Hashtag hashtag">' .
'#hashtag</a> more text', '#hashtag</a> more text',
$link['description'] $link['description']
); );

View file

@ -27,7 +27,7 @@ class BookmarkMarkdownExtraFormatterTest extends TestCase
*/ */
public function setUp(): void public function setUp(): void
{ {
copy('tests/utils/config/configJson.json.php', self::$testConf .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$testConf . '.json.php');
$this->conf = new ConfigManager(self::$testConf); $this->conf = new ConfigManager(self::$testConf);
$this->formatter = new BookmarkMarkdownExtraFormatter($this->conf, true); $this->formatter = new BookmarkMarkdownExtraFormatter($this->conf, true);
} }
@ -60,8 +60,8 @@ class BookmarkMarkdownExtraFormatterTest extends TestCase
); );
$this->assertEquals('This is a &lt;strong&gt;bookmark&lt;/strong&gt;', $link['title']); $this->assertEquals('This is a &lt;strong&gt;bookmark&lt;/strong&gt;', $link['title']);
$this->assertEquals( $this->assertEquals(
'<div class="markdown"><p>'. '<div class="markdown"><p>' .
'&lt;h2&gt;Content&lt;/h2&gt;&lt;p&gt;`Here is some content&lt;/p&gt;'. '&lt;h2&gt;Content&lt;/h2&gt;&lt;p&gt;`Here is some content&lt;/p&gt;' .
'</p></div>', '</p></div>',
$link['description'] $link['description']
); );
@ -112,21 +112,21 @@ class BookmarkMarkdownExtraFormatterTest extends TestCase
*/ */
public function testFormatExtrraDescription(): void public function testFormatExtrraDescription(): void
{ {
$description = 'This a <strong>description</strong>'. PHP_EOL; $description = 'This a <strong>description</strong>' . PHP_EOL;
$description .= 'text https://sub.domain.tld?query=here&for=real#hash more text'. PHP_EOL; $description .= 'text https://sub.domain.tld?query=here&for=real#hash more text' . PHP_EOL;
$description .= 'Also, there is an #hashtag added'. PHP_EOL; $description .= 'Also, there is an #hashtag added' . PHP_EOL;
$description .= ' A N D KEEP SPACES ! '. PHP_EOL; $description .= ' A N D KEEP SPACES ! ' . PHP_EOL;
$description .= '# Header {.class}'. PHP_EOL; $description .= '# Header {.class}' . PHP_EOL;
$bookmark = new Bookmark(); $bookmark = new Bookmark();
$bookmark->setDescription($description); $bookmark->setDescription($description);
$link = $this->formatter->format($bookmark); $link = $this->formatter->format($bookmark);
$description = '<div class="markdown"><p>'; $description = '<div class="markdown"><p>';
$description .= 'This a &lt;strong&gt;description&lt;/strong&gt;<br />'. PHP_EOL; $description .= 'This a &lt;strong&gt;description&lt;/strong&gt;<br />' . PHP_EOL;
$url = 'https://sub.domain.tld?query=here&amp;for=real#hash'; $url = 'https://sub.domain.tld?query=here&amp;for=real#hash';
$description .= 'text <a href="'. $url .'">'. $url .'</a> more text<br />'. PHP_EOL; $description .= 'text <a href="' . $url . '">' . $url . '</a> more text<br />' . PHP_EOL;
$description .= 'Also, there is an <a href="./add-tag/hashtag">#hashtag</a> added<br />'. PHP_EOL; $description .= 'Also, there is an <a href="./add-tag/hashtag">#hashtag</a> added<br />' . PHP_EOL;
$description .= 'A N D KEEP SPACES ! </p>' . PHP_EOL; $description .= 'A N D KEEP SPACES ! </p>' . PHP_EOL;
$description .= '<h1 class="class">Header</h1>'; $description .= '<h1 class="class">Header</h1>';
$description .= '</div>'; $description .= '</div>';
@ -148,7 +148,7 @@ class BookmarkMarkdownExtraFormatterTest extends TestCase
$this->formatter->addContextData('index_url', $root = 'https://domain.tld/hithere/'); $this->formatter->addContextData('index_url', $root = 'https://domain.tld/hithere/');
$description = '<div class="markdown"><p>'; $description = '<div class="markdown"><p>';
$description .= 'Text <a href="'. $root .'./add-tag/hashtag">#hashtag</a> more text'; $description .= 'Text <a href="' . $root . './add-tag/hashtag">#hashtag</a> more text';
$description .= '</p></div>'; $description .= '</p></div>';
$link = $this->formatter->format($bookmark); $link = $this->formatter->format($bookmark);

View file

@ -27,7 +27,7 @@ class BookmarkMarkdownFormatterTest extends TestCase
*/ */
protected function setUp(): void protected function setUp(): void
{ {
copy('tests/utils/config/configJson.json.php', self::$testConf .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$testConf . '.json.php');
$this->conf = new ConfigManager(self::$testConf); $this->conf = new ConfigManager(self::$testConf);
$this->formatter = new BookmarkMarkdownFormatter($this->conf, true); $this->formatter = new BookmarkMarkdownFormatter($this->conf, true);
} }
@ -60,8 +60,8 @@ class BookmarkMarkdownFormatterTest extends TestCase
); );
$this->assertEquals('This is a &lt;strong&gt;bookmark&lt;/strong&gt;', $link['title']); $this->assertEquals('This is a &lt;strong&gt;bookmark&lt;/strong&gt;', $link['title']);
$this->assertEquals( $this->assertEquals(
'<div class="markdown"><p>'. '<div class="markdown"><p>' .
'&lt;h2&gt;Content&lt;/h2&gt;&lt;p&gt;`Here is some content&lt;/p&gt;'. '&lt;h2&gt;Content&lt;/h2&gt;&lt;p&gt;`Here is some content&lt;/p&gt;' .
'</p></div>', '</p></div>',
$link['description'] $link['description']
); );
@ -112,20 +112,20 @@ class BookmarkMarkdownFormatterTest extends TestCase
*/ */
public function testFormatDescription() public function testFormatDescription()
{ {
$description = 'This a <strong>description</strong>'. PHP_EOL; $description = 'This a <strong>description</strong>' . PHP_EOL;
$description .= 'text https://sub.domain.tld?query=here&for=real#hash more text'. PHP_EOL; $description .= 'text https://sub.domain.tld?query=here&for=real#hash more text' . PHP_EOL;
$description .= 'Also, there is an #hashtag added'. PHP_EOL; $description .= 'Also, there is an #hashtag added' . PHP_EOL;
$description .= ' A N D KEEP SPACES ! '. PHP_EOL; $description .= ' A N D KEEP SPACES ! ' . PHP_EOL;
$bookmark = new Bookmark(); $bookmark = new Bookmark();
$bookmark->setDescription($description); $bookmark->setDescription($description);
$link = $this->formatter->format($bookmark); $link = $this->formatter->format($bookmark);
$description = '<div class="markdown"><p>'; $description = '<div class="markdown"><p>';
$description .= 'This a &lt;strong&gt;description&lt;/strong&gt;<br />'. PHP_EOL; $description .= 'This a &lt;strong&gt;description&lt;/strong&gt;<br />' . PHP_EOL;
$url = 'https://sub.domain.tld?query=here&amp;for=real#hash'; $url = 'https://sub.domain.tld?query=here&amp;for=real#hash';
$description .= 'text <a href="'. $url .'">'. $url .'</a> more text<br />'. PHP_EOL; $description .= 'text <a href="' . $url . '">' . $url . '</a> more text<br />' . PHP_EOL;
$description .= 'Also, there is an <a href="./add-tag/hashtag">#hashtag</a> added<br />'. PHP_EOL; $description .= 'Also, there is an <a href="./add-tag/hashtag">#hashtag</a> added<br />' . PHP_EOL;
$description .= 'A N D KEEP SPACES ! '; $description .= 'A N D KEEP SPACES ! ';
$description .= '</p></div>'; $description .= '</p></div>';
@ -137,11 +137,11 @@ class BookmarkMarkdownFormatterTest extends TestCase
*/ */
public function testFormatDescriptionWithSearchHighlight() public function testFormatDescriptionWithSearchHighlight()
{ {
$description = 'This a <strong>description</strong>'. PHP_EOL; $description = 'This a <strong>description</strong>' . PHP_EOL;
$description .= 'text https://sub.domain.tld?query=here&for=real#hash more text'. PHP_EOL; $description .= 'text https://sub.domain.tld?query=here&for=real#hash more text' . PHP_EOL;
$description .= 'Also, there is an #hashtag added'. PHP_EOL; $description .= 'Also, there is an #hashtag added' . PHP_EOL;
$description .= ' A N D KEEP SPACES ! '. PHP_EOL; $description .= ' A N D KEEP SPACES ! ' . PHP_EOL;
$description .= 'And [yet another link](https://other.domain.tld)'. PHP_EOL; $description .= 'And [yet another link](https://other.domain.tld)' . PHP_EOL;
$bookmark = new Bookmark(); $bookmark = new Bookmark();
$bookmark->setDescription($description); $bookmark->setDescription($description);
@ -164,9 +164,9 @@ class BookmarkMarkdownFormatterTest extends TestCase
$url = 'https://sub.domain.tld?query=here&amp;for=real#hash'; $url = 'https://sub.domain.tld?query=here&amp;for=real#hash';
$highlighted = 'https://<span class="search-highlight">sub</span>.domain.tld'; $highlighted = 'https://<span class="search-highlight">sub</span>.domain.tld';
$highlighted .= '?query=here&amp;for=real#<span class="search-highlight">hash</span>'; $highlighted .= '?query=here&amp;for=real#<span class="search-highlight">hash</span>';
$description .= 'text <a href="'. $url .'">'. $highlighted .'</a> more text<br />'. PHP_EOL; $description .= 'text <a href="' . $url . '">' . $highlighted . '</a> more text<br />' . PHP_EOL;
$description .= 'Also, there is an <a href="./add-tag/hashtag">#<span class="search-highlight">hasht</span>' . $description .= 'Also, there is an <a href="./add-tag/hashtag">#<span class="search-highlight">hasht</span>' .
'ag</a> added<br />'. PHP_EOL; 'ag</a> added<br />' . PHP_EOL;
$description .= 'A N D KEEP SPACES !<br />' . PHP_EOL; $description .= 'A N D KEEP SPACES !<br />' . PHP_EOL;
$description .= 'And <a href="https://other.domain.tld">' . $description .= 'And <a href="https://other.domain.tld">' .
'<span class="search-highlight">yet another link</span></a>'; '<span class="search-highlight">yet another link</span></a>';
@ -189,7 +189,7 @@ class BookmarkMarkdownFormatterTest extends TestCase
$this->formatter->addContextData('index_url', $root = 'https://domain.tld/hithere/'); $this->formatter->addContextData('index_url', $root = 'https://domain.tld/hithere/');
$description = '<div class="markdown"><p>'; $description = '<div class="markdown"><p>';
$description .= 'Text <a href="'. $root .'./add-tag/hashtag">#hashtag</a> more text'; $description .= 'Text <a href="' . $root . './add-tag/hashtag">#hashtag</a> more text';
$description .= '</p></div>'; $description .= '</p></div>';
$link = $this->formatter->format($bookmark); $link = $this->formatter->format($bookmark);

View file

@ -27,7 +27,7 @@ class BookmarkRawFormatterTest extends TestCase
*/ */
protected function setUp(): void protected function setUp(): void
{ {
copy('tests/utils/config/configJson.json.php', self::$testConf .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$testConf . '.json.php');
$this->conf = new ConfigManager(self::$testConf); $this->conf = new ConfigManager(self::$testConf);
$this->formatter = new BookmarkRawFormatter($this->conf, true); $this->formatter = new BookmarkRawFormatter($this->conf, true);
} }

View file

@ -26,7 +26,7 @@ class FormatterFactoryTest extends TestCase
*/ */
protected function setUp(): void protected function setUp(): void
{ {
copy('tests/utils/config/configJson.json.php', self::$testConf .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$testConf . '.json.php');
$this->conf = new ConfigManager(self::$testConf); $this->conf = new ConfigManager(self::$testConf);
$this->factory = new FormatterFactory($this->conf, true); $this->factory = new FormatterFactory($this->conf, true);
} }

View file

@ -63,7 +63,8 @@ class ShaarliAdminMiddlewareTest extends TestCase
$response = new Response(); $response = new Response();
/** @var Response $result */ /** @var Response $result */
$result = $this->middleware->__invoke($request, $response, function () {}); $result = $this->middleware->__invoke($request, $response, function () {
});
static::assertSame(302, $result->getStatusCode()); static::assertSame(302, $result->getStatusCode());
static::assertSame( static::assertSame(

View file

@ -91,7 +91,7 @@ class ShaarliMiddlewareTest extends TestCase
$controller = function (): void { $controller = function (): void {
$exception = new LoginBannedException(); $exception = new LoginBannedException();
throw new $exception; throw new $exception();
}; };
$pageBuilder = $this->createMock(PageBuilder::class); $pageBuilder = $this->createMock(PageBuilder::class);
@ -148,7 +148,8 @@ class ShaarliMiddlewareTest extends TestCase
return $uri; return $uri;
}); });
$dummyException = new class() extends \Exception {}; $dummyException = new class () extends \Exception {
};
$response = new Response(); $response = new Response();
$controller = function () use ($dummyException): void { $controller = function () use ($dummyException): void {

View file

@ -62,7 +62,7 @@ class ConfigureControllerTest extends TestCase
static::assertSame('privacy.hide_public_links', $assignedVariables['hide_public_links']); static::assertSame('privacy.hide_public_links', $assignedVariables['hide_public_links']);
static::assertSame('api.enabled', $assignedVariables['api_enabled']); static::assertSame('api.enabled', $assignedVariables['api_enabled']);
static::assertSame('api.secret', $assignedVariables['api_secret']); static::assertSame('api.secret', $assignedVariables['api_secret']);
static::assertCount(6, $assignedVariables['languages']); static::assertCount(7, $assignedVariables['languages']);
static::assertArrayHasKey('gd_enabled', $assignedVariables); static::assertArrayHasKey('gd_enabled', $assignedVariables);
static::assertSame('thumbnails.mode', $assignedVariables['thumbnails_mode']); static::assertSame('thumbnails.mode', $assignedVariables['thumbnails_mode']);
} }
@ -122,8 +122,7 @@ class ConfigureControllerTest extends TestCase
} }
return $parameters[$key]; return $parameters[$key];
} });
);
$response = new Response(); $response = new Response();
@ -137,8 +136,7 @@ class ConfigureControllerTest extends TestCase
} }
static::assertSame($parametersConfigMapping[$key], $value); static::assertSame($parametersConfigMapping[$key], $value);
} });
);
$result = $this->controller->save($request, $response); $result = $this->controller->save($request, $response);
static::assertSame(302, $result->getStatusCode()); static::assertSame(302, $result->getStatusCode());

View file

@ -80,7 +80,10 @@ class ExportControllerTest extends TestCase
string $selection, string $selection,
bool $prependNoteUrl, bool $prependNoteUrl,
string $indexUrl string $indexUrl
) use ($parameters, $bookmarks): array { ) use (
$parameters,
$bookmarks
): array {
static::assertInstanceOf(BookmarkRawFormatter::class, $formatter); static::assertInstanceOf(BookmarkRawFormatter::class, $formatter);
static::assertSame($parameters['selection'], $selection); static::assertSame($parameters['selection'], $selection);
static::assertTrue($prependNoteUrl); static::assertTrue($prependNoteUrl);

View file

@ -74,7 +74,10 @@ class ImportControllerTest extends TestCase
function ( function (
array $post, array $post,
UploadedFileInterface $file UploadedFileInterface $file
) use ($parameters, $requestFile): string { ) use (
$parameters,
$requestFile
): string {
static::assertSame($parameters, $post); static::assertSame($parameters, $post);
static::assertSame($requestFile, $file); static::assertSame($requestFile, $file);

View file

@ -16,7 +16,7 @@ class PluginsControllerTest extends TestCase
{ {
use FrontAdminControllerMockHelper; use FrontAdminControllerMockHelper;
const PLUGIN_NAMES = ['plugin1', 'plugin2', 'plugin3', 'plugin4']; protected const PLUGIN_NAMES = ['plugin1', 'plugin2', 'plugin3', 'plugin4'];
/** @var PluginsController */ /** @var PluginsController */
protected $controller; protected $controller;
@ -29,13 +29,17 @@ class PluginsControllerTest extends TestCase
mkdir($path = __DIR__ . '/folder'); mkdir($path = __DIR__ . '/folder');
PluginManager::$PLUGINS_PATH = $path; PluginManager::$PLUGINS_PATH = $path;
array_map(function (string $plugin) use ($path) { touch($path . '/' . $plugin); }, static::PLUGIN_NAMES); array_map(function (string $plugin) use ($path) {
touch($path . '/' . $plugin);
}, static::PLUGIN_NAMES);
} }
public function tearDown(): void public function tearDown(): void
{ {
$path = __DIR__ . '/folder'; $path = __DIR__ . '/folder';
array_map(function (string $plugin) use ($path) { unlink($path . '/' . $plugin); }, static::PLUGIN_NAMES); array_map(function (string $plugin) use ($path) {
unlink($path . '/' . $plugin);
}, static::PLUGIN_NAMES);
rmdir($path); rmdir($path);
} }

View file

@ -365,5 +365,4 @@ class SaveBookmarkTest extends TestCase
$this->controller->save($request, $response); $this->controller->save($request, $response);
} }
} }

View file

@ -26,7 +26,7 @@ class ShaarliAdminControllerTest extends TestCase
{ {
$this->createContainer(); $this->createContainer();
$this->controller = new class($this->container) extends ShaarliAdminController $this->controller = new class ($this->container) extends ShaarliAdminController
{ {
public function checkToken(Request $request): bool public function checkToken(Request $request): bool
{ {

View file

@ -54,8 +54,7 @@ class BookmarkListControllerTest extends TestCase
(new Bookmark())->setId(1)->setUrl('http://url1.tld')->setTitle('Title 1'), (new Bookmark())->setId(1)->setUrl('http://url1.tld')->setTitle('Title 1'),
(new Bookmark())->setId(2)->setUrl('http://url2.tld')->setTitle('Title 2'), (new Bookmark())->setId(2)->setUrl('http://url2.tld')->setTitle('Title 2'),
(new Bookmark())->setId(3)->setUrl('http://url3.tld')->setTitle('Title 3'), (new Bookmark())->setId(3)->setUrl('http://url3.tld')->setTitle('Title 3'),
], 0, 2) ], 0, 2));
);
$this->container->sessionManager $this->container->sessionManager
->method('getSessionParameter') ->method('getSessionParameter')

View file

@ -102,7 +102,7 @@ class DailyControllerTest extends TestCase
static::assertSame(200, $result->getStatusCode()); static::assertSame(200, $result->getStatusCode());
static::assertSame('daily', (string) $result->getBody()); static::assertSame('daily', (string) $result->getBody());
static::assertSame( static::assertSame(
'Daily - '. format_date($currentDay, false, true) .' - Shaarli', 'Daily - ' . format_date($currentDay, false, true) . ' - Shaarli',
$assignedVariables['pagetitle'] $assignedVariables['pagetitle']
); );
static::assertEquals($currentDay, $assignedVariables['dayDate']); static::assertEquals($currentDay, $assignedVariables['dayDate']);
@ -225,7 +225,7 @@ class DailyControllerTest extends TestCase
static::assertSame(200, $result->getStatusCode()); static::assertSame(200, $result->getStatusCode());
static::assertSame('daily', (string) $result->getBody()); static::assertSame('daily', (string) $result->getBody());
static::assertSame( static::assertSame(
'Daily - '. format_date($currentDay, false, true) .' - Shaarli', 'Daily - ' . format_date($currentDay, false, true) . ' - Shaarli',
$assignedVariables['pagetitle'] $assignedVariables['pagetitle']
); );
static::assertCount(1, $assignedVariables['linksToDisplay']); static::assertCount(1, $assignedVariables['linksToDisplay']);
@ -285,7 +285,9 @@ class DailyControllerTest extends TestCase
static::assertCount(7, $assignedVariables['linksToDisplay']); static::assertCount(7, $assignedVariables['linksToDisplay']);
$columnIds = function (array $column): array { $columnIds = function (array $column): array {
return array_map(function (array $item): int { return $item['id']; }, $column); return array_map(function (array $item): int {
return $item['id'];
}, $column);
}; };
static::assertSame([1, 4, 6], $columnIds($assignedVariables['cols'][0])); static::assertSame([1, 4, 6], $columnIds($assignedVariables['cols'][0]));
@ -366,8 +368,7 @@ class DailyControllerTest extends TestCase
$cachedPage->expects(static::once())->method('cache')->with('dailyrss'); $cachedPage->expects(static::once())->method('cache')->with('dailyrss');
return $cachedPage; return $cachedPage;
} });
);
// Save RainTPL assigned variables // Save RainTPL assigned variables
$assignedVariables = []; $assignedVariables = [];
@ -390,7 +391,7 @@ class DailyControllerTest extends TestCase
static::assertEquals($date, $day['date']); static::assertEquals($date, $day['date']);
static::assertSame($date->format(\DateTime::RSS), $day['date_rss']); static::assertSame($date->format(\DateTime::RSS), $day['date_rss']);
static::assertSame(format_date($date, false), $day['date_human']); static::assertSame(format_date($date, false), $day['date_human']);
static::assertSame('http://shaarli/subfolder/daily?day='. $dates[0]->format('Ymd'), $day['absolute_url']); static::assertSame('http://shaarli/subfolder/daily?day=' . $dates[0]->format('Ymd'), $day['absolute_url']);
static::assertCount(1, $day['links']); static::assertCount(1, $day['links']);
static::assertSame(1, $day['links'][0]['id']); static::assertSame(1, $day['links'][0]['id']);
static::assertSame('http://domain.tld/1', $day['links'][0]['url']); static::assertSame('http://domain.tld/1', $day['links'][0]['url']);
@ -402,7 +403,7 @@ class DailyControllerTest extends TestCase
static::assertEquals($date, $day['date']); static::assertEquals($date, $day['date']);
static::assertSame($date->format(\DateTime::RSS), $day['date_rss']); static::assertSame($date->format(\DateTime::RSS), $day['date_rss']);
static::assertSame(format_date($date, false), $day['date_human']); static::assertSame(format_date($date, false), $day['date_human']);
static::assertSame('http://shaarli/subfolder/daily?day='. $dates[1]->format('Ymd'), $day['absolute_url']); static::assertSame('http://shaarli/subfolder/daily?day=' . $dates[1]->format('Ymd'), $day['absolute_url']);
static::assertCount(2, $day['links']); static::assertCount(2, $day['links']);
static::assertSame(2, $day['links'][0]['id']); static::assertSame(2, $day['links'][0]['id']);
@ -418,7 +419,7 @@ class DailyControllerTest extends TestCase
static::assertEquals($date, $day['date']); static::assertEquals($date, $day['date']);
static::assertSame($date->format(\DateTime::RSS), $day['date_rss']); static::assertSame($date->format(\DateTime::RSS), $day['date_rss']);
static::assertSame(format_date($date, false), $day['date_human']); static::assertSame(format_date($date, false), $day['date_human']);
static::assertSame('http://shaarli/subfolder/daily?day='. $dates[2]->format('Ymd'), $day['absolute_url']); static::assertSame('http://shaarli/subfolder/daily?day=' . $dates[2]->format('Ymd'), $day['absolute_url']);
static::assertCount(1, $day['links']); static::assertCount(1, $day['links']);
static::assertSame(4, $day['links'][0]['id']); static::assertSame(4, $day['links'][0]['id']);
static::assertSame('http://domain.tld/4', $day['links'][0]['url']); static::assertSame('http://domain.tld/4', $day['links'][0]['url']);
@ -647,7 +648,7 @@ class DailyControllerTest extends TestCase
static::assertEquals($date, $day['date']); static::assertEquals($date, $day['date']);
static::assertSame($date->format(\DateTime::RSS), $day['date_rss']); static::assertSame($date->format(\DateTime::RSS), $day['date_rss']);
static::assertSame('Week 21 (May 18, 2020)', $day['date_human']); static::assertSame('Week 21 (May 18, 2020)', $day['date_human']);
static::assertSame('http://shaarli/subfolder/daily?week='. $dates[0]->format('YW'), $day['absolute_url']); static::assertSame('http://shaarli/subfolder/daily?week=' . $dates[0]->format('YW'), $day['absolute_url']);
static::assertCount(1, $day['links']); static::assertCount(1, $day['links']);
$day = $assignedVariables['days'][$dates[1]->format('YW')]; $day = $assignedVariables['days'][$dates[1]->format('YW')];
@ -656,7 +657,7 @@ class DailyControllerTest extends TestCase
static::assertEquals($date, $day['date']); static::assertEquals($date, $day['date']);
static::assertSame($date->format(\DateTime::RSS), $day['date_rss']); static::assertSame($date->format(\DateTime::RSS), $day['date_rss']);
static::assertSame('Week 20 (May 11, 2020)', $day['date_human']); static::assertSame('Week 20 (May 11, 2020)', $day['date_human']);
static::assertSame('http://shaarli/subfolder/daily?week='. $dates[1]->format('YW'), $day['absolute_url']); static::assertSame('http://shaarli/subfolder/daily?week=' . $dates[1]->format('YW'), $day['absolute_url']);
static::assertCount(2, $day['links']); static::assertCount(2, $day['links']);
} }
@ -710,7 +711,7 @@ class DailyControllerTest extends TestCase
static::assertEquals($date, $day['date']); static::assertEquals($date, $day['date']);
static::assertSame($date->format(\DateTime::RSS), $day['date_rss']); static::assertSame($date->format(\DateTime::RSS), $day['date_rss']);
static::assertSame('May, 2020', $day['date_human']); static::assertSame('May, 2020', $day['date_human']);
static::assertSame('http://shaarli/subfolder/daily?month='. $dates[0]->format('Ym'), $day['absolute_url']); static::assertSame('http://shaarli/subfolder/daily?month=' . $dates[0]->format('Ym'), $day['absolute_url']);
static::assertCount(1, $day['links']); static::assertCount(1, $day['links']);
$day = $assignedVariables['days'][$dates[1]->format('Ym')]; $day = $assignedVariables['days'][$dates[1]->format('Ym')];
@ -719,7 +720,7 @@ class DailyControllerTest extends TestCase
static::assertEquals($date, $day['date']); static::assertEquals($date, $day['date']);
static::assertSame($date->format(\DateTime::RSS), $day['date_rss']); static::assertSame($date->format(\DateTime::RSS), $day['date_rss']);
static::assertSame('April, 2020', $day['date_human']); static::assertSame('April, 2020', $day['date_human']);
static::assertSame('http://shaarli/subfolder/daily?month='. $dates[1]->format('Ym'), $day['absolute_url']); static::assertSame('http://shaarli/subfolder/daily?month=' . $dates[1]->format('Ym'), $day['absolute_url']);
static::assertCount(2, $day['links']); static::assertCount(2, $day['links']);
} }
} }

View file

@ -41,7 +41,8 @@ class ErrorControllerTest extends TestCase
$result = ($this->controller)( $result = ($this->controller)(
$request, $request,
$response, $response,
new class($message, $errorCode) extends ShaarliFrontException {} new class ($message, $errorCode) extends ShaarliFrontException {
}
); );
static::assertSame($errorCode, $result->getStatusCode()); static::assertSame($errorCode, $result->getStatusCode());

View file

@ -118,5 +118,5 @@ trait FrontControllerMockHelper
/** /**
* Force to be used in PHPUnit context. * Force to be used in PHPUnit context.
*/ */
protected abstract function isInTestsContext(): bool; abstract protected function isInTestsContext(): bool;
} }

View file

@ -15,7 +15,7 @@ class InstallControllerTest extends TestCase
{ {
use FrontControllerMockHelper; use FrontControllerMockHelper;
const MOCK_FILE = '.tmp'; protected const MOCK_FILE = '.tmp';
/** @var InstallController */ /** @var InstallController */
protected $controller; protected $controller;

View file

@ -32,7 +32,7 @@ class ShaarliVisitorControllerTest extends TestCase
{ {
$this->createContainer(); $this->createContainer();
$this->controller = new class($this->container) extends ShaarliVisitorController $this->controller = new class ($this->container) extends ShaarliVisitorController
{ {
public function assignView(string $key, $value): ShaarliVisitorController public function assignView(string $key, $value): ShaarliVisitorController
{ {

View file

@ -1,10 +1,9 @@
<?php <?php
namespace Shaarli\Helper; namespace Shaarli\Helper;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\FakeApplicationUtils; use Shaarli\Tests\Utils\FakeApplicationUtils;
require_once 'tests/utils/FakeApplicationUtils.php';
/** /**
* Unitary tests for Shaarli utilities * Unitary tests for Shaarli utilities
@ -49,7 +48,7 @@ class ApplicationUtilsTest extends \Shaarli\TestCase
'0.5.4', '0.5.4',
ApplicationUtils::getVersion( ApplicationUtils::getVersion(
'https://raw.githubusercontent.com/shaarli/Shaarli/' 'https://raw.githubusercontent.com/shaarli/Shaarli/'
.'v0.5.4/shaarli_version.php', . 'v0.5.4/shaarli_version.php',
$testTimeout $testTimeout
) )
); );
@ -57,7 +56,7 @@ class ApplicationUtilsTest extends \Shaarli\TestCase
self::$versionPattern, self::$versionPattern,
ApplicationUtils::getVersion( ApplicationUtils::getVersion(
'https://raw.githubusercontent.com/shaarli/Shaarli/' 'https://raw.githubusercontent.com/shaarli/Shaarli/'
.'latest/shaarli_version.php', . 'latest/shaarli_version.php',
$testTimeout $testTimeout
) )
); );
@ -68,7 +67,7 @@ class ApplicationUtilsTest extends \Shaarli\TestCase
*/ */
public function testGetVersionCodeFromFile() public function testGetVersionCodeFromFile()
{ {
file_put_contents('sandbox/version.php', '<?php /* 1.2.3 */ ?>'. PHP_EOL); file_put_contents('sandbox/version.php', '<?php /* 1.2.3 */ ?>' . PHP_EOL);
$this->assertEquals( $this->assertEquals(
'1.2.3', '1.2.3',
ApplicationUtils::getVersion('sandbox/version.php', 1) ApplicationUtils::getVersion('sandbox/version.php', 1)
@ -301,7 +300,7 @@ class ApplicationUtilsTest extends \Shaarli\TestCase
$conf->set('resource.update_check', 'data/lastupdatecheck.txt'); $conf->set('resource.update_check', 'data/lastupdatecheck.txt');
$this->assertEquals( $this->assertEquals(
array(), [],
ApplicationUtils::checkResourcePermissions($conf) ApplicationUtils::checkResourcePermissions($conf)
); );
} }
@ -324,7 +323,7 @@ class ApplicationUtilsTest extends \Shaarli\TestCase
$conf->set('resource.raintpl_theme', 'null/tpl/default'); $conf->set('resource.raintpl_theme', 'null/tpl/default');
$conf->set('resource.update_check', 'null/data/lastupdatecheck.txt'); $conf->set('resource.update_check', 'null/data/lastupdatecheck.txt');
$this->assertEquals( $this->assertEquals(
array( [
'"null/tpl" directory is not readable', '"null/tpl" directory is not readable',
'"null/tpl/default" directory is not readable', '"null/tpl/default" directory is not readable',
'"null/cache" directory is not readable', '"null/cache" directory is not readable',
@ -335,7 +334,7 @@ class ApplicationUtilsTest extends \Shaarli\TestCase
'"null/pagecache" directory is not writable', '"null/pagecache" directory is not writable',
'"null/tmp" directory is not readable', '"null/tmp" directory is not readable',
'"null/tmp" directory is not writable' '"null/tmp" directory is not writable'
), ],
ApplicationUtils::checkResourcePermissions($conf) ApplicationUtils::checkResourcePermissions($conf)
); );
} }

View file

@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Shaarli\Helper; namespace Shaarli\Helper;
use DateTime;
use DateTimeImmutable; use DateTimeImmutable;
use DateTimeInterface; use DateTimeInterface;
use Shaarli\Bookmark\Bookmark; use Shaarli\Bookmark\Bookmark;
@ -147,7 +148,8 @@ class DailyPageHelperTest extends TestCase
/** /**
* @dataProvider getRssLengthsByType * @dataProvider getRssLengthsByType
*/ */
public function testGeRssLengthsByType(string $type): void { public function testGeRssLengthsByType(string $type): void
{
$length = DailyPageHelper::getRssLengthByType($type); $length = DailyPageHelper::getRssLengthByType($type);
static::assertIsInt($length); static::assertIsInt($length);
@ -208,31 +210,31 @@ class DailyPageHelperTest extends TestCase
public function getRequestedDateTimes(): array public function getRequestedDateTimes(): array
{ {
return [ return [
[DailyPageHelper::DAY, '20201013', null, new \DateTime('2020-10-13')], [DailyPageHelper::DAY, '20201013', null, new DateTime('2020-10-13')],
[ [
DailyPageHelper::DAY, DailyPageHelper::DAY,
'', '',
(new Bookmark())->setCreated($date = new \DateTime('2020-10-13 12:05:31')), (new Bookmark())->setCreated($date = new DateTime('2020-10-13 12:05:31')),
$date, $date,
], ],
[DailyPageHelper::DAY, '', null, new \DateTime()], [DailyPageHelper::DAY, '', null, new DateTime()],
[DailyPageHelper::WEEK, '202030', null, new \DateTime('2020-07-20')], [DailyPageHelper::WEEK, '202030', null, new DateTime('2020-07-20')],
[ [
DailyPageHelper::WEEK, DailyPageHelper::WEEK,
'', '',
(new Bookmark())->setCreated($date = new \DateTime('2020-10-13 12:05:31')), (new Bookmark())->setCreated($date = new DateTime('2020-10-13 12:05:31')),
new \DateTime('2020-10-13'), new DateTime('2020-10-13'),
], ],
[DailyPageHelper::WEEK, '', null, new \DateTime(), 'Ym'], [DailyPageHelper::WEEK, '', null, new DateTime(), 'Ym'],
[DailyPageHelper::MONTH, '202008', null, new \DateTime('2020-08-01'), 'Ym'], [DailyPageHelper::MONTH, '202008', null, new DateTime('2020-08-01'), 'Ym'],
[ [
DailyPageHelper::MONTH, DailyPageHelper::MONTH,
'', '',
(new Bookmark())->setCreated($date = new \DateTime('2020-10-13 12:05:31')), (new Bookmark())->setCreated($date = new DateTime('2020-10-13 12:05:31')),
new \DateTime('2020-10-13'), new DateTime('2020-10-13'),
'Ym' 'Ym'
], ],
[DailyPageHelper::MONTH, '', null, new \DateTime(), 'Ym'], [DailyPageHelper::MONTH, '', null, new DateTime(), 'Ym'],
]; ];
} }
@ -254,9 +256,9 @@ class DailyPageHelperTest extends TestCase
public function getStartDatesByType(): array public function getStartDatesByType(): array
{ {
return [ return [
[DailyPageHelper::DAY, new DateTimeImmutable('2020-10-09 04:05:06'), new \DateTime('2020-10-09 00:00:00')], [DailyPageHelper::DAY, new DateTimeImmutable('2020-10-09 04:05:06'), new DateTime('2020-10-09 00:00:00')],
[DailyPageHelper::WEEK, new DateTimeImmutable('2020-10-09 04:05:06'), new \DateTime('2020-10-05 00:00:00')], [DailyPageHelper::WEEK, new DateTimeImmutable('2020-10-09 04:05:06'), new DateTime('2020-10-05 00:00:00')],
[DailyPageHelper::MONTH, new DateTimeImmutable('2020-10-09 04:05:06'), new \DateTime('2020-10-01 00:00:00')], [DailyPageHelper::MONTH, new DateTimeImmutable('2020-10-09 04:05:06'), new DateTime('2020-10-01 00:00:00')],
]; ];
} }
@ -266,9 +268,9 @@ class DailyPageHelperTest extends TestCase
public function getEndDatesByType(): array public function getEndDatesByType(): array
{ {
return [ return [
[DailyPageHelper::DAY, new DateTimeImmutable('2020-10-09 04:05:06'), new \DateTime('2020-10-09 23:59:59')], [DailyPageHelper::DAY, new DateTimeImmutable('2020-10-09 04:05:06'), new DateTime('2020-10-09 23:59:59')],
[DailyPageHelper::WEEK, new DateTimeImmutable('2020-10-09 04:05:06'), new \DateTime('2020-10-11 23:59:59')], [DailyPageHelper::WEEK, new DateTimeImmutable('2020-10-09 04:05:06'), new DateTime('2020-10-11 23:59:59')],
[DailyPageHelper::MONTH, new DateTimeImmutable('2020-10-09 04:05:06'), new \DateTime('2020-10-31 23:59:59')], [DailyPageHelper::MONTH, new DateTimeImmutable('2020-10-09 04:05:06'), new DateTime('2020-10-31 23:59:59')],
]; ];
} }
@ -321,20 +323,20 @@ class DailyPageHelperTest extends TestCase
[ [
DailyPageHelper::DAY, DailyPageHelper::DAY,
new DateTimeImmutable('2020-10-09 04:05:06'), new DateTimeImmutable('2020-10-09 04:05:06'),
new \DateTime('2020-10-09 00:00:00'), new DateTime('2020-10-09 00:00:00'),
new \DateTime('2020-10-09 23:59:59'), new DateTime('2020-10-09 23:59:59'),
], ],
[ [
DailyPageHelper::WEEK, DailyPageHelper::WEEK,
new DateTimeImmutable('2020-10-09 04:05:06'), new DateTimeImmutable('2020-10-09 04:05:06'),
new \DateTime('2020-10-05 00:00:00'), new DateTime('2020-10-05 00:00:00'),
new \DateTime('2020-10-11 23:59:59'), new DateTime('2020-10-11 23:59:59'),
], ],
[ [
DailyPageHelper::MONTH, DailyPageHelper::MONTH,
new DateTimeImmutable('2020-10-09 04:05:06'), new DateTimeImmutable('2020-10-09 04:05:06'),
new \DateTime('2020-10-01 00:00:00'), new DateTime('2020-10-01 00:00:00'),
new \DateTime('2020-10-31 23:59:59'), new DateTime('2020-10-31 23:59:59'),
], ],
]; ];
} }

View file

@ -1,12 +1,11 @@
<?php <?php
/** /**
* HttpUtils' tests * HttpUtils' tests
*/ */
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/HttpUtils.php';
/** /**
* Unitary tests for client_ip_id() * Unitary tests for client_ip_id()
*/ */

View file

@ -1,12 +1,11 @@
<?php <?php
/** /**
* HttpUtils' tests * HttpUtils' tests
*/ */
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/HttpUtils.php';
/** /**
* Unitary tests for get_http_response() * Unitary tests for get_http_response()
*/ */

View file

@ -2,8 +2,6 @@
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/HttpUtils.php';
/** /**
* Unitary tests for getIpAddressFromProxy() * Unitary tests for getIpAddressFromProxy()
*/ */
@ -15,7 +13,7 @@ class GetIpAdressFromProxyTest extends \Shaarli\TestCase
*/ */
public function testWithoutProxy() public function testWithoutProxy()
{ {
$this->assertFalse(getIpAddressFromProxy(array(), array())); $this->assertFalse(getIpAddressFromProxy([], []));
} }
/** /**
@ -24,8 +22,8 @@ class GetIpAdressFromProxyTest extends \Shaarli\TestCase
public function testWithOneForwardedIp() public function testWithOneForwardedIp()
{ {
$ip = '1.1.1.1'; $ip = '1.1.1.1';
$server = array('HTTP_X_FORWARDED_FOR' => $ip); $server = ['HTTP_X_FORWARDED_FOR' => $ip];
$this->assertEquals($ip, getIpAddressFromProxy($server, array())); $this->assertEquals($ip, getIpAddressFromProxy($server, []));
} }
/** /**
@ -36,11 +34,11 @@ class GetIpAdressFromProxyTest extends \Shaarli\TestCase
$ip = '1.1.1.1'; $ip = '1.1.1.1';
$ip2 = '2.2.2.2'; $ip2 = '2.2.2.2';
$server = array('HTTP_X_FORWARDED_FOR' => $ip .','. $ip2); $server = ['HTTP_X_FORWARDED_FOR' => $ip . ',' . $ip2];
$this->assertEquals($ip2, getIpAddressFromProxy($server, array())); $this->assertEquals($ip2, getIpAddressFromProxy($server, []));
$server = array('HTTP_X_FORWARDED_FOR' => $ip .' , '. $ip2); $server = ['HTTP_X_FORWARDED_FOR' => $ip . ' , ' . $ip2];
$this->assertEquals($ip2, getIpAddressFromProxy($server, array())); $this->assertEquals($ip2, getIpAddressFromProxy($server, []));
} }
/** /**
@ -51,11 +49,11 @@ class GetIpAdressFromProxyTest extends \Shaarli\TestCase
$ip = '1.1.1.1'; $ip = '1.1.1.1';
$ip2 = '2.2.2.2'; $ip2 = '2.2.2.2';
$server = array('HTTP_X_FORWARDED_FOR' => $ip); $server = ['HTTP_X_FORWARDED_FOR' => $ip];
$this->assertFalse(getIpAddressFromProxy($server, array($ip))); $this->assertFalse(getIpAddressFromProxy($server, [$ip]));
$server = array('HTTP_X_FORWARDED_FOR' => $ip .','. $ip2); $server = ['HTTP_X_FORWARDED_FOR' => $ip . ',' . $ip2];
$this->assertEquals($ip2, getIpAddressFromProxy($server, array($ip))); $this->assertEquals($ip2, getIpAddressFromProxy($server, [$ip]));
$this->assertFalse(getIpAddressFromProxy($server, array($ip, $ip2))); $this->assertFalse(getIpAddressFromProxy($server, [$ip, $ip2]));
} }
} }

View file

@ -1,4 +1,5 @@
<?php <?php
/** /**
* HttpUtils' tests * HttpUtils' tests
*/ */
@ -7,8 +8,6 @@ namespace Shaarli\Http;
use Shaarli\TestCase; use Shaarli\TestCase;
require_once 'application/http/HttpUtils.php';
/** /**
* Unitary tests for index_url() * Unitary tests for index_url()
*/ */
@ -22,24 +21,24 @@ class IndexUrlTest extends TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld/', 'http://host.tld/',
index_url( index_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/index.php' 'SCRIPT_NAME' => '/index.php'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'http://host.tld/admin/', 'http://host.tld/admin/',
index_url( index_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/admin/index.php' 'SCRIPT_NAME' => '/admin/index.php'
) ]
) )
); );
} }
@ -52,24 +51,24 @@ class IndexUrlTest extends TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld/page.php', 'http://host.tld/page.php',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/page.php' 'SCRIPT_NAME' => '/page.php'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'http://host.tld/admin/page.php', 'http://host.tld/admin/page.php',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/admin/page.php' 'SCRIPT_NAME' => '/admin/page.php'
) ]
) )
); );
} }
@ -82,26 +81,26 @@ class IndexUrlTest extends TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld/picture-wall', 'http://host.tld/picture-wall',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/index.php', 'SCRIPT_NAME' => '/index.php',
'REQUEST_URI' => '/picture-wall', 'REQUEST_URI' => '/picture-wall',
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'http://host.tld/admin/picture-wall', 'http://host.tld/admin/picture-wall',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/admin/index.php', 'SCRIPT_NAME' => '/admin/index.php',
'REQUEST_URI' => '/admin/picture-wall', 'REQUEST_URI' => '/admin/picture-wall',
) ]
) )
); );
} }
@ -114,26 +113,26 @@ class IndexUrlTest extends TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld/subfolder/picture-wall', 'http://host.tld/subfolder/picture-wall',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/subfolder/index.php', 'SCRIPT_NAME' => '/subfolder/index.php',
'REQUEST_URI' => '/subfolder/picture-wall', 'REQUEST_URI' => '/subfolder/picture-wall',
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'http://host.tld/subfolder/admin/picture-wall', 'http://host.tld/subfolder/admin/picture-wall',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/subfolder/admin/index.php', 'SCRIPT_NAME' => '/subfolder/admin/index.php',
'REQUEST_URI' => '/subfolder/admin/picture-wall', 'REQUEST_URI' => '/subfolder/admin/picture-wall',
) ]
) )
); );
} }

View file

@ -25,26 +25,26 @@ class IndexUrlTestWithConstant extends TestCase
$this->assertEquals( $this->assertEquals(
'http://other-host.tld/subfolder/', 'http://other-host.tld/subfolder/',
index_url( index_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/index.php', 'SCRIPT_NAME' => '/index.php',
'REQUEST_URI' => '/picture-wall', 'REQUEST_URI' => '/picture-wall',
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'http://other-host.tld/subfolder/', 'http://other-host.tld/subfolder/',
index_url( index_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/admin/index.php', 'SCRIPT_NAME' => '/admin/index.php',
'REQUEST_URI' => '/admin/picture-wall', 'REQUEST_URI' => '/admin/picture-wall',
) ]
) )
); );
} }

View file

@ -2,8 +2,6 @@
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/HttpUtils.php';
/** /**
* Class IsHttpsTest * Class IsHttpsTest
* *

View file

@ -1,12 +1,11 @@
<?php <?php
/** /**
* HttpUtils' tests * HttpUtils' tests
*/ */
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/HttpUtils.php';
/** /**
* Unitary tests for page_url() * Unitary tests for page_url()
*/ */
@ -20,26 +19,26 @@ class PageUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld/?p1=v1&p2=v2', 'http://host.tld/?p1=v1&p2=v2',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/index.php', 'SCRIPT_NAME' => '/index.php',
'QUERY_STRING' => 'p1=v1&p2=v2' 'QUERY_STRING' => 'p1=v1&p2=v2'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'http://host.tld/admin/?action=edit_tag', 'http://host.tld/admin/?action=edit_tag',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/admin/index.php', 'SCRIPT_NAME' => '/admin/index.php',
'QUERY_STRING' => 'action=edit_tag' 'QUERY_STRING' => 'action=edit_tag'
) ]
) )
); );
} }
@ -52,26 +51,26 @@ class PageUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld/page.php?p1=v1&p2=v2', 'http://host.tld/page.php?p1=v1&p2=v2',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/page.php', 'SCRIPT_NAME' => '/page.php',
'QUERY_STRING' => 'p1=v1&p2=v2' 'QUERY_STRING' => 'p1=v1&p2=v2'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'http://host.tld/admin/page.php?action=edit_tag', 'http://host.tld/admin/page.php?action=edit_tag',
page_url( page_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'SCRIPT_NAME' => '/admin/page.php', 'SCRIPT_NAME' => '/admin/page.php',
'QUERY_STRING' => 'action=edit_tag' 'QUERY_STRING' => 'action=edit_tag'
) ]
) )
); );
} }

View file

@ -1,12 +1,11 @@
<?php <?php
/** /**
* HttpUtils' tests * HttpUtils' tests
*/ */
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/HttpUtils.php';
/** /**
* Unitary tests for server_url() * Unitary tests for server_url()
*/ */
@ -20,22 +19,22 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'https://host.tld', 'https://host.tld',
server_url( server_url(
array( [
'HTTPS' => 'ON', 'HTTPS' => 'ON',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '443' 'SERVER_PORT' => '443'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'https://host.tld:8080', 'https://host.tld:8080',
server_url( server_url(
array( [
'HTTPS' => 'ON', 'HTTPS' => 'ON',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '8080' 'SERVER_PORT' => '8080'
) ]
) )
); );
} }
@ -48,22 +47,22 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'https://host.tld:8080', 'https://host.tld:8080',
server_url( server_url(
array( [
'HTTP_X_FORWARDED_PROTO' => 'https', 'HTTP_X_FORWARDED_PROTO' => 'https',
'HTTP_X_FORWARDED_PORT' => '8080', 'HTTP_X_FORWARDED_PORT' => '8080',
'HTTP_X_FORWARDED_HOST' => 'host.tld' 'HTTP_X_FORWARDED_HOST' => 'host.tld'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'https://host.tld:4974', 'https://host.tld:4974',
server_url( server_url(
array( [
'HTTP_X_FORWARDED_PROTO' => 'https, https', 'HTTP_X_FORWARDED_PROTO' => 'https, https',
'HTTP_X_FORWARDED_PORT' => '4974, 80', 'HTTP_X_FORWARDED_PORT' => '4974, 80',
'HTTP_X_FORWARDED_HOST' => 'host.tld, example.com' 'HTTP_X_FORWARDED_HOST' => 'host.tld, example.com'
) ]
) )
); );
} }
@ -76,51 +75,51 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'https://host.tld:8080', 'https://host.tld:8080',
server_url( server_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'HTTP_X_FORWARDED_PROTO' => 'https', 'HTTP_X_FORWARDED_PROTO' => 'https',
'HTTP_X_FORWARDED_PORT' => '8080' 'HTTP_X_FORWARDED_PORT' => '8080'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'https://host.tld', 'https://host.tld',
server_url( server_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'HTTP_X_FORWARDED_PROTO' => 'https' 'HTTP_X_FORWARDED_PROTO' => 'https'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'https://host.tld', 'https://host.tld',
server_url( server_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'HTTP_X_FORWARDED_PROTO' => 'https', 'HTTP_X_FORWARDED_PROTO' => 'https',
'HTTP_X_FORWARDED_PORT' => '443' 'HTTP_X_FORWARDED_PORT' => '443'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'https://host.tld:4974', 'https://host.tld:4974',
server_url( server_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'HTTP_X_FORWARDED_PROTO' => 'https, https', 'HTTP_X_FORWARDED_PROTO' => 'https, https',
'HTTP_X_FORWARDED_PORT' => '4974, 80' 'HTTP_X_FORWARDED_PORT' => '4974, 80'
) ]
) )
); );
} }
@ -134,11 +133,11 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld:8080', 'http://host.tld:8080',
server_url( server_url(
array( [
'HTTPS' => 'OFF', 'HTTPS' => 'OFF',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '8080' 'SERVER_PORT' => '8080'
) ]
) )
); );
@ -146,11 +145,11 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'https://host.tld:8080', 'https://host.tld:8080',
server_url( server_url(
array( [
'HTTPS' => 'ON', 'HTTPS' => 'ON',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '8080' 'SERVER_PORT' => '8080'
) ]
) )
); );
} }
@ -163,11 +162,11 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'http://host.tld', 'http://host.tld',
server_url( server_url(
array( [
'HTTPS' => 'OFF', 'HTTPS' => 'OFF',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80' 'SERVER_PORT' => '80'
) ]
) )
); );
} }
@ -180,11 +179,11 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'https://host.tld', 'https://host.tld',
server_url( server_url(
array( [
'HTTPS' => 'ON', 'HTTPS' => 'ON',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '443' 'SERVER_PORT' => '443'
) ]
) )
); );
} }
@ -197,26 +196,26 @@ class ServerUrlTest extends \Shaarli\TestCase
$this->assertEquals( $this->assertEquals(
'https://host.tld', 'https://host.tld',
server_url( server_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'HTTP_X_FORWARDED_PROTO' => 'http', 'HTTP_X_FORWARDED_PROTO' => 'http',
'HTTP_X_FORWARDED_PORT' => '443' 'HTTP_X_FORWARDED_PORT' => '443'
) ]
) )
); );
$this->assertEquals( $this->assertEquals(
'https://host.tld', 'https://host.tld',
server_url( server_url(
array( [
'HTTPS' => 'Off', 'HTTPS' => 'Off',
'SERVER_NAME' => 'host.tld', 'SERVER_NAME' => 'host.tld',
'SERVER_PORT' => '80', 'SERVER_PORT' => '80',
'HTTP_X_FORWARDED_PROTO' => 'https, http', 'HTTP_X_FORWARDED_PROTO' => 'https, http',
'HTTP_X_FORWARDED_PORT' => '443, 80' 'HTTP_X_FORWARDED_PORT' => '443, 80'
) ]
) )
); );
} }

View file

@ -66,7 +66,12 @@ class MetadataRetrieverTest extends TestCase
->expects(static::once()) ->expects(static::once())
->method('getCurlDownloadCallback') ->method('getCurlDownloadCallback')
->willReturnCallback( ->willReturnCallback(
function (&$charset, &$title, &$description, &$tags) use ( function (
&$charset,
&$title,
&$description,
&$tags
) use (
$remoteCharset, $remoteCharset,
$remoteTitle, $remoteTitle,
$remoteDesc, $remoteDesc,
@ -95,7 +100,7 @@ class MetadataRetrieverTest extends TestCase
->expects(static::once()) ->expects(static::once())
->method('getHttpResponse') ->method('getHttpResponse')
->with($url, 30, 4194304) ->with($url, 30, 4194304)
->willReturnCallback(function($url, $timeout, $maxBytes, $headerCallback, $dlCallback): void { ->willReturnCallback(function ($url, $timeout, $maxBytes, $headerCallback, $dlCallback): void {
$headerCallback(); $headerCallback();
$dlCallback(); $dlCallback();
}) })
@ -124,7 +129,8 @@ class MetadataRetrieverTest extends TestCase
->method('getCurlDownloadCallback') ->method('getCurlDownloadCallback')
->willReturnCallback( ->willReturnCallback(
function (): callable { function (): callable {
return function (): void {}; return function (): void {
};
} }
) )
; ;
@ -133,7 +139,8 @@ class MetadataRetrieverTest extends TestCase
->method('getCurlHeaderCallback') ->method('getCurlHeaderCallback')
->willReturnCallback( ->willReturnCallback(
function (): callable { function (): callable {
return function (): void {}; return function (): void {
};
} }
) )
; ;
@ -141,7 +148,7 @@ class MetadataRetrieverTest extends TestCase
->expects(static::once()) ->expects(static::once())
->method('getHttpResponse') ->method('getHttpResponse')
->with($url, 30, 4194304) ->with($url, 30, 4194304)
->willReturnCallback(function($url, $timeout, $maxBytes, $headerCallback, $dlCallback): void { ->willReturnCallback(function ($url, $timeout, $maxBytes, $headerCallback, $dlCallback): void {
$headerCallback(); $headerCallback();
$dlCallback(); $dlCallback();
}) })

View file

@ -1,4 +1,5 @@
<?php <?php
/** /**
* UrlUtils's tests * UrlUtils's tests
*/ */

View file

@ -1,12 +1,11 @@
<?php <?php
/** /**
* Unitary tests for cleanup_url() * Unitary tests for cleanup_url()
*/ */
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/UrlUtils.php';
class CleanupUrlTest extends \Shaarli\TestCase class CleanupUrlTest extends \Shaarli\TestCase
{ {
/** /**
@ -29,7 +28,7 @@ class CleanupUrlTest extends \Shaarli\TestCase
public function testCleanupUrlAlreadyClean() public function testCleanupUrlAlreadyClean()
{ {
$this->assertEquals($this->ref, cleanup_url($this->ref)); $this->assertEquals($this->ref, cleanup_url($this->ref));
$this->ref2 = $this->ref.'/path/to/dir/'; $this->ref2 = $this->ref . '/path/to/dir/';
$this->assertEquals($this->ref2, cleanup_url($this->ref2)); $this->assertEquals($this->ref2, cleanup_url($this->ref2));
} }
@ -38,9 +37,9 @@ class CleanupUrlTest extends \Shaarli\TestCase
*/ */
public function testCleanupUrlFragment() public function testCleanupUrlFragment()
{ {
$this->assertEquals($this->ref, cleanup_url($this->ref.'#tk.rss_all')); $this->assertEquals($this->ref, cleanup_url($this->ref . '#tk.rss_all'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'#xtor=RSS-')); $this->assertEquals($this->ref, cleanup_url($this->ref . '#xtor=RSS-'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'#xtor=RSS-U3ht0tkc4b')); $this->assertEquals($this->ref, cleanup_url($this->ref . '#xtor=RSS-U3ht0tkc4b'));
} }
/** /**
@ -48,23 +47,23 @@ class CleanupUrlTest extends \Shaarli\TestCase
*/ */
public function testCleanupUrlQuerySingle() public function testCleanupUrlQuerySingle()
{ {
$this->assertEquals($this->ref, cleanup_url($this->ref.'?action_object_map=junk')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?action_object_map=junk'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?action_ref_map=Cr4p!')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?action_ref_map=Cr4p!'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?action_type_map=g4R84g3')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?action_type_map=g4R84g3'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?fb_stuff=v41u3')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?fb_stuff=v41u3'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?fb=71m3w4573')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?fb=71m3w4573'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_campaign=zomg')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?utm_campaign=zomg'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_medium=numnum')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?utm_medium=numnum'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_source=c0d3')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?utm_source=c0d3'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_term=1n4l')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?utm_term=1n4l'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?xtor=some-url')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?xtor=some-url'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_name=junk')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?campaign_name=junk'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_start=junk')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?campaign_start=junk'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_item_index=junk')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?campaign_item_index=junk'));
} }
/** /**
@ -72,14 +71,14 @@ class CleanupUrlTest extends \Shaarli\TestCase
*/ */
public function testCleanupUrlQueryMultiple() public function testCleanupUrlQueryMultiple()
{ {
$this->assertEquals($this->ref, cleanup_url($this->ref.'?xtor=some-url&fb=som3th1ng')); $this->assertEquals($this->ref, cleanup_url($this->ref . '?xtor=some-url&fb=som3th1ng'));
$this->assertEquals($this->ref, cleanup_url( $this->assertEquals($this->ref, cleanup_url(
$this->ref.'?fb=stuff&utm_campaign=zomg&utm_medium=numnum&utm_source=c0d3' $this->ref . '?fb=stuff&utm_campaign=zomg&utm_medium=numnum&utm_source=c0d3'
)); ));
$this->assertEquals($this->ref, cleanup_url( $this->assertEquals($this->ref, cleanup_url(
$this->ref.'?campaign_start=zomg&campaign_name=numnum' $this->ref . '?campaign_start=zomg&campaign_name=numnum'
)); ));
} }
@ -89,22 +88,22 @@ class CleanupUrlTest extends \Shaarli\TestCase
public function testCleanupUrlQueryFragment() public function testCleanupUrlQueryFragment()
{ {
$this->assertEquals($this->ref, cleanup_url( $this->assertEquals($this->ref, cleanup_url(
$this->ref.'?xtor=some-url&fb=som3th1ng#tk.rss_all' $this->ref . '?xtor=some-url&fb=som3th1ng#tk.rss_all'
)); ));
// ditch annoying query params and fragment, keep useful params // ditch annoying query params and fragment, keep useful params
$this->assertEquals( $this->assertEquals(
$this->ref.'?my=stuff&is=kept', $this->ref . '?my=stuff&is=kept',
cleanup_url( cleanup_url(
$this->ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all' $this->ref . '?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all'
) )
); );
// ditch annoying query params, keep useful params and fragment // ditch annoying query params, keep useful params and fragment
$this->assertEquals( $this->assertEquals(
$this->ref.'?my=stuff&is=kept#again', $this->ref . '?my=stuff&is=kept#again',
cleanup_url( cleanup_url(
$this->ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again' $this->ref . '?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again'
) )
); );
} }

View file

@ -1,13 +1,14 @@
<?php <?php
/** /**
* Unitary tests for get_url_scheme() * Unitary tests for get_url_scheme()
*/ */
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/UrlUtils.php'; use Shaarli\TestCase;
class GetUrlSchemeTest extends \Shaarli\TestCase class GetUrlSchemeTest extends TestCase
{ {
/** /**
* Get empty scheme string for empty UrlUtils * Get empty scheme string for empty UrlUtils

View file

@ -1,23 +1,24 @@
<?php <?php
/** /**
* Unpares UrlUtils's tests * Unpares UrlUtils's tests
*/ */
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/UrlUtils.php'; use Shaarli\TestCase;
/** /**
* Unitary tests for unparse_url() * Unitary tests for unparse_url()
*/ */
class UnparseUrlTest extends \Shaarli\TestCase class UnparseUrlTest extends TestCase
{ {
/** /**
* Thanks for building nothing * Thanks for building nothing
*/ */
public function testUnparseEmptyArray() public function testUnparseEmptyArray()
{ {
$this->assertEquals('', unparse_url(array())); $this->assertEquals('', unparse_url([]));
} }
/** /**
@ -26,7 +27,7 @@ class UnparseUrlTest extends \Shaarli\TestCase
public function testUnparseFull() public function testUnparseFull()
{ {
$ref = 'http://username:password@hostname:9090/path' $ref = 'http://username:password@hostname:9090/path'
.'?arg1=value1&arg2=value2#anchor'; . '?arg1=value1&arg2=value2#anchor';
$this->assertEquals($ref, unparse_url(parse_url($ref))); $this->assertEquals($ref, unparse_url(parse_url($ref)));
} }
} }

View file

@ -2,14 +2,14 @@
namespace Shaarli\Http; namespace Shaarli\Http;
require_once 'application/http/UrlUtils.php'; use Shaarli\TestCase;
/** /**
* Class WhitelistProtocolsTest * Class WhitelistProtocolsTest
* *
* Test whitelist_protocols() function of UrlUtils. * Test whitelist_protocols() function of UrlUtils.
*/ */
class WhitelistProtocolsTest extends \Shaarli\TestCase class WhitelistProtocolsTest extends TestCase
{ {
/** /**
* Test whitelist_protocols() on a note (relative URL). * Test whitelist_protocols() on a note (relative URL).
@ -30,7 +30,7 @@ class WhitelistProtocolsTest extends \Shaarli\TestCase
{ {
$whitelist = ['ftp', 'magnet']; $whitelist = ['ftp', 'magnet'];
$url = 'test.tld/path/?query=value#hash'; $url = 'test.tld/path/?query=value#hash';
$this->assertEquals('http://'. $url, whitelist_protocols($url, $whitelist)); $this->assertEquals('http://' . $url, whitelist_protocols($url, $whitelist));
} }
/** /**

View file

@ -1,4 +1,5 @@
<?php <?php
require_once 'tests/bootstrap.php'; require_once 'tests/bootstrap.php';
if (! empty(getenv('UT_LOCALE'))) { if (! empty(getenv('UT_LOCALE'))) {

View file

@ -1,7 +1,8 @@
<?php <?php
require_once 'tests/UtilsTest.php'; namespace Shaarli\Tests;
use DateTime;
class UtilsDeTest extends UtilsTest class UtilsDeTest extends UtilsTest
{ {

View file

@ -1,7 +1,8 @@
<?php <?php
require_once 'tests/UtilsTest.php'; namespace Shaarli\Tests;
use DateTime;
class UtilsEnTest extends UtilsTest class UtilsEnTest extends UtilsTest
{ {

View file

@ -1,9 +1,10 @@
<?php <?php
namespace Shaarli\Tests;
namespace Shaarli;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\Languages;
use Shaarli\TestCase;
/** /**
* Class LanguagesFrTest * Class LanguagesFrTest
@ -12,7 +13,7 @@ use Shaarli\Config\ConfigManager;
* *
* @package Shaarli * @package Shaarli
*/ */
class LanguagesFrTest extends \Shaarli\TestCase class LanguagesFrTest extends TestCase
{ {
/** /**
* @var string Config file path (without extension). * @var string Config file path (without extension).

View file

@ -1,7 +1,8 @@
<?php <?php
require_once 'tests/UtilsTest.php'; namespace Shaarli\Tests;
use DateTime;
class UtilsFrTest extends UtilsTest class UtilsFrTest extends UtilsTest
{ {

View file

@ -1,4 +1,5 @@
<?php <?php
namespace Shaarli\Updater; namespace Shaarli\Updater;
use Exception; use Exception;

View file

@ -1,4 +1,5 @@
<?php <?php
/** /**
* Link datastore tests * Link datastore tests
*/ */
@ -6,14 +7,10 @@
namespace Shaarli\Legacy; namespace Shaarli\Legacy;
use DateTime; use DateTime;
use ReferenceLinkDB;
use ReflectionClass; use ReflectionClass;
use Shaarli; use Shaarli;
use Shaarli\Bookmark\Bookmark; use Shaarli\Bookmark\Bookmark;
use Shaarli\Tests\Utils\ReferenceLinkDB;
require_once 'application/Utils.php';
require_once 'tests/utils/ReferenceLinkDB.php';
/** /**
* Unitary tests for LegacyLinkDBTest * Unitary tests for LegacyLinkDBTest
@ -118,7 +115,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
$this->assertFileNotExists(self::$testDatastore); $this->assertFileNotExists(self::$testDatastore);
$checkDB = self::getMethod('check'); $checkDB = self::getMethod('check');
$checkDB->invokeArgs($linkDB, array()); $checkDB->invokeArgs($linkDB, []);
$this->assertFileExists(self::$testDatastore); $this->assertFileExists(self::$testDatastore);
// ensure the correct data has been written // ensure the correct data has been written
@ -135,7 +132,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
$this->assertGreaterThan(0, $datastoreSize); $this->assertGreaterThan(0, $datastoreSize);
$checkDB = self::getMethod('check'); $checkDB = self::getMethod('check');
$checkDB->invokeArgs($linkDB, array()); $checkDB->invokeArgs($linkDB, []);
// ensure the datastore is left unmodified // ensure the datastore is left unmodified
$this->assertEquals( $this->assertEquals(
@ -185,7 +182,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
$testDB = new LegacyLinkDB(self::$testDatastore, true, false); $testDB = new LegacyLinkDB(self::$testDatastore, true, false);
$dbSize = sizeof($testDB); $dbSize = sizeof($testDB);
$link = array( $link = [
'id' => 43, 'id' => 43,
'title' => 'an additional link', 'title' => 'an additional link',
'url' => 'http://dum.my', 'url' => 'http://dum.my',
@ -193,7 +190,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
'private' => 0, 'private' => 0,
'created' => DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150518_190000'), 'created' => DateTime::createFromFormat(Bookmark::LINK_DATE_FORMAT, '20150518_190000'),
'tags' => 'unit test' 'tags' => 'unit test'
); ];
$testDB[$link['id']] = $link; $testDB[$link['id']] = $link;
$testDB->save('tests'); $testDB->save('tests');
@ -239,12 +236,12 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
public function testDays() public function testDays()
{ {
$this->assertEquals( $this->assertEquals(
array('20100309', '20100310', '20121206', '20121207', '20130614', '20150310'), ['20100309', '20100310', '20121206', '20121207', '20130614', '20150310'],
self::$publicLinkDB->days() self::$publicLinkDB->days()
); );
$this->assertEquals( $this->assertEquals(
array('20100309', '20100310', '20121206', '20121207', '20130614', '20141125', '20150310'), ['20100309', '20100310', '20121206', '20121207', '20130614', '20141125', '20150310'],
self::$privateLinkDB->days() self::$privateLinkDB->days()
); );
} }
@ -280,7 +277,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
public function testAllTags() public function testAllTags()
{ {
$this->assertEquals( $this->assertEquals(
array( [
'web' => 3, 'web' => 3,
'cartoon' => 2, 'cartoon' => 2,
'gnu' => 2, 'gnu' => 2,
@ -300,12 +297,12 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
'coding-style' => 1, 'coding-style' => 1,
'quality' => 1, 'quality' => 1,
'standards' => 1, 'standards' => 1,
), ],
self::$publicLinkDB->linksCountPerTag() self::$publicLinkDB->linksCountPerTag()
); );
$this->assertEquals( $this->assertEquals(
array( [
'web' => 4, 'web' => 4,
'cartoon' => 3, 'cartoon' => 3,
'gnu' => 2, 'gnu' => 2,
@ -332,11 +329,11 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
'coding-style' => 1, 'coding-style' => 1,
'quality' => 1, 'quality' => 1,
'standards' => 1, 'standards' => 1,
), ],
self::$privateLinkDB->linksCountPerTag() self::$privateLinkDB->linksCountPerTag()
); );
$this->assertEquals( $this->assertEquals(
array( [
'web' => 4, 'web' => 4,
'cartoon' => 2, 'cartoon' => 2,
'gnu' => 1, 'gnu' => 1,
@ -349,17 +346,17 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
'Mercurial' => 1, 'Mercurial' => 1,
'.hidden' => 1, '.hidden' => 1,
'hashtag' => 1, 'hashtag' => 1,
), ],
self::$privateLinkDB->linksCountPerTag(['web']) self::$privateLinkDB->linksCountPerTag(['web'])
); );
$this->assertEquals( $this->assertEquals(
array( [
'web' => 1, 'web' => 1,
'html' => 1, 'html' => 1,
'w3c' => 1, 'w3c' => 1,
'css' => 1, 'css' => 1,
'Mercurial' => 1, 'Mercurial' => 1,
), ],
self::$privateLinkDB->linksCountPerTag(['web'], 'private') self::$privateLinkDB->linksCountPerTag(['web'], 'private')
); );
} }
@ -370,7 +367,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
public function testFilterString() public function testFilterString()
{ {
$tags = 'dev cartoon'; $tags = 'dev cartoon';
$request = array('searchtags' => $tags); $request = ['searchtags' => $tags];
$this->assertEquals( $this->assertEquals(
2, 2,
count(self::$privateLinkDB->filterSearch($request, true, false)) count(self::$privateLinkDB->filterSearch($request, true, false))
@ -382,8 +379,8 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
*/ */
public function testFilterArray() public function testFilterArray()
{ {
$tags = array('dev', 'cartoon'); $tags = ['dev', 'cartoon'];
$request = array('searchtags' => $tags); $request = ['searchtags' => $tags];
$this->assertEquals( $this->assertEquals(
2, 2,
count(self::$privateLinkDB->filterSearch($request, true, false)) count(self::$privateLinkDB->filterSearch($request, true, false))
@ -397,7 +394,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
public function testHiddenTags() public function testHiddenTags()
{ {
$tags = '.hidden'; $tags = '.hidden';
$request = array('searchtags' => $tags); $request = ['searchtags' => $tags];
$this->assertEquals( $this->assertEquals(
1, 1,
count(self::$privateLinkDB->filterSearch($request, true, false)) count(self::$privateLinkDB->filterSearch($request, true, false))
@ -639,7 +636,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
for ($i = 0; $i < 4; ++$i) { for ($i = 0; $i < 4; ++$i) {
$linkDB[$nextId + $i] = [ $linkDB[$nextId + $i] = [
'id' => $nextId + $i, 'id' => $nextId + $i,
'url' => 'http://'. $i, 'url' => 'http://' . $i,
'created' => $creation, 'created' => $creation,
'title' => true, 'title' => true,
'description' => true, 'description' => true,
@ -657,7 +654,7 @@ class LegacyLinkDBTest extends \Shaarli\TestCase
continue; continue;
} }
$this->assertEquals($nextId + $count, $link['id']); $this->assertEquals($nextId + $count, $link['id']);
$this->assertEquals('http://'. $count, $link['url']); $this->assertEquals('http://' . $count, $link['url']);
if (--$count < 0) { if (--$count < 0) {
break; break;
} }

View file

@ -2,10 +2,9 @@
namespace Shaarli\Bookmark; namespace Shaarli\Bookmark;
use Exception;
use ReferenceLinkDB;
use Shaarli\Legacy\LegacyLinkDB; use Shaarli\Legacy\LegacyLinkDB;
use Shaarli\Legacy\LegacyLinkFilter; use Shaarli\Legacy\LegacyLinkFilter;
use Shaarli\Tests\Utils\ReferenceLinkDB;
/** /**
* Class LegacyLinkFilterTest. * Class LegacyLinkFilterTest.
@ -450,28 +449,28 @@ class LegacyLinkFilterTest extends \Shaarli\TestCase
1, 1,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT, LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT,
array($tags, $terms) [$tags, $terms]
)) ))
); );
$this->assertEquals( $this->assertEquals(
2, 2,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT, LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT,
array('', $terms) ['', $terms]
)) ))
); );
$this->assertEquals( $this->assertEquals(
1, 1,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT, LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT,
array(false, 'PSR-2') [false, 'PSR-2']
)) ))
); );
$this->assertEquals( $this->assertEquals(
1, 1,
count(self::$linkFilter->filter( count(self::$linkFilter->filter(
LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT, LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT,
array($tags, '') [$tags, '']
)) ))
); );
$this->assertEquals( $this->assertEquals(

View file

@ -1,4 +1,5 @@
<?php <?php
namespace Shaarli\Updater; namespace Shaarli\Updater;
use DateTime; use DateTime;
@ -9,18 +10,16 @@ use Shaarli\Config\ConfigManager;
use Shaarli\Config\ConfigPhp; use Shaarli\Config\ConfigPhp;
use Shaarli\Legacy\LegacyLinkDB; use Shaarli\Legacy\LegacyLinkDB;
use Shaarli\Legacy\LegacyUpdater; use Shaarli\Legacy\LegacyUpdater;
use Shaarli\TestCase;
use Shaarli\Tests\updater\DummyUpdater;
use Shaarli\Tests\Utils\ReferenceLinkDB;
use Shaarli\Thumbnailer; use Shaarli\Thumbnailer;
require_once 'application/updater/UpdaterUtils.php';
require_once 'tests/updater/DummyUpdater.php';
require_once 'tests/utils/ReferenceLinkDB.php';
require_once 'inc/rain.tpl.class.php';
/** /**
* Class UpdaterTest. * Class UpdaterTest.
* Runs unit tests against the updater class. * Runs unit tests against the updater class.
*/ */
class LegacyUpdaterTest extends \Shaarli\TestCase class LegacyUpdaterTest extends TestCase
{ {
/** /**
* @var string Path to test datastore. * @var string Path to test datastore.
@ -42,7 +41,7 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
*/ */
protected function setUp(): void protected function setUp(): void
{ {
copy('tests/utils/config/configJson.json.php', self::$configFile .'.json.php'); copy('tests/utils/config/configJson.json.php', self::$configFile . '.json.php');
$this->conf = new ConfigManager(self::$configFile); $this->conf = new ConfigManager(self::$configFile);
} }
@ -51,10 +50,10 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
*/ */
public function testReadEmptyUpdatesFile() public function testReadEmptyUpdatesFile()
{ {
$this->assertEquals(array(), UpdaterUtils::readUpdatesFile('')); $this->assertEquals([], UpdaterUtils::readUpdatesFile(''));
$updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt'; $updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt';
touch($updatesFile); touch($updatesFile);
$this->assertEquals(array(), UpdaterUtils::readUpdatesFile($updatesFile)); $this->assertEquals([], UpdaterUtils::readUpdatesFile($updatesFile));
unlink($updatesFile); unlink($updatesFile);
} }
@ -64,7 +63,7 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
public function testReadWriteUpdatesFile() public function testReadWriteUpdatesFile()
{ {
$updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt'; $updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt';
$updatesMethods = array('m1', 'm2', 'm3'); $updatesMethods = ['m1', 'm2', 'm3'];
UpdaterUtils::writeUpdatesFile($updatesFile, $updatesMethods); UpdaterUtils::writeUpdatesFile($updatesFile, $updatesMethods);
$readMethods = UpdaterUtils::readUpdatesFile($updatesFile); $readMethods = UpdaterUtils::readUpdatesFile($updatesFile);
@ -86,7 +85,7 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
$this->expectException(\Exception::class); $this->expectException(\Exception::class);
$this->expectExceptionMessageRegExp('/Updates file path is not set(.*)/'); $this->expectExceptionMessageRegExp('/Updates file path is not set(.*)/');
UpdaterUtils::writeUpdatesFile('', array('test')); UpdaterUtils::writeUpdatesFile('', ['test']);
} }
/** /**
@ -101,7 +100,7 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
touch($updatesFile); touch($updatesFile);
chmod($updatesFile, 0444); chmod($updatesFile, 0444);
try { try {
@UpdaterUtils::writeUpdatesFile($updatesFile, array('test')); @UpdaterUtils::writeUpdatesFile($updatesFile, ['test']);
} catch (Exception $e) { } catch (Exception $e) {
unlink($updatesFile); unlink($updatesFile);
throw $e; throw $e;
@ -115,17 +114,17 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
*/ */
public function testNoUpdates() public function testNoUpdates()
{ {
$updates = array( $updates = [
'updateMethodDummy1', 'updateMethodDummy1',
'updateMethodDummy2', 'updateMethodDummy2',
'updateMethodDummy3', 'updateMethodDummy3',
'updateMethodException', 'updateMethodException',
); ];
$updater = new DummyUpdater($updates, array(), $this->conf, true); $updater = new DummyUpdater($updates, [], $this->conf, true);
$this->assertEquals(array(), $updater->update()); $this->assertEquals([], $updater->update());
$updater = new DummyUpdater(array(), array(), $this->conf, false); $updater = new DummyUpdater([], [], $this->conf, false);
$this->assertEquals(array(), $updater->update()); $this->assertEquals([], $updater->update());
} }
/** /**
@ -133,13 +132,13 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
*/ */
public function testUpdatesFirstTime() public function testUpdatesFirstTime()
{ {
$updates = array('updateMethodException',); $updates = ['updateMethodException',];
$expectedUpdates = array( $expectedUpdates = [
'updateMethodDummy1', 'updateMethodDummy1',
'updateMethodDummy2', 'updateMethodDummy2',
'updateMethodDummy3', 'updateMethodDummy3',
); ];
$updater = new DummyUpdater($updates, array(), $this->conf, true); $updater = new DummyUpdater($updates, [], $this->conf, true);
$this->assertEquals($expectedUpdates, $updater->update()); $this->assertEquals($expectedUpdates, $updater->update());
} }
@ -148,14 +147,14 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
*/ */
public function testOneUpdate() public function testOneUpdate()
{ {
$updates = array( $updates = [
'updateMethodDummy1', 'updateMethodDummy1',
'updateMethodDummy3', 'updateMethodDummy3',
'updateMethodException', 'updateMethodException',
); ];
$expectedUpdate = array('updateMethodDummy2'); $expectedUpdate = ['updateMethodDummy2'];
$updater = new DummyUpdater($updates, array(), $this->conf, true); $updater = new DummyUpdater($updates, [], $this->conf, true);
$this->assertEquals($expectedUpdate, $updater->update()); $this->assertEquals($expectedUpdate, $updater->update());
} }
@ -166,13 +165,13 @@ class LegacyUpdaterTest extends \Shaarli\TestCase
{ {
$this->expectException(\Exception::class); $this->expectException(\Exception::class);
$updates = array( $updates = [
'updateMethodDummy1', 'updateMethodDummy1',
'updateMethodDummy2', 'updateMethodDummy2',
'updateMethodDummy3', 'updateMethodDummy3',
); ];
$updater = new DummyUpdater($updates, array(), $this->conf, true); $updater = new DummyUpdater($updates, [], $this->conf, true);
$updater->update(); $updater->update();
} }
@ -197,7 +196,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$this->conf->setConfigFile('tests/updater/config'); $this->conf->setConfigFile('tests/updater/config');
// merge configs // merge configs
$updater = new LegacyUpdater(array(), array(), $this->conf, true); $updater = new LegacyUpdater([], [], $this->conf, true);
// This writes a new config file in tests/updater/config.php // This writes a new config file in tests/updater/config.php
$updater->updateMethodMergeDeprecatedConfigFile(); $updater->updateMethodMergeDeprecatedConfigFile();
@ -214,7 +213,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
*/ */
public function testMergeDeprecatedConfigNoFile() public function testMergeDeprecatedConfigNoFile()
{ {
$updater = new LegacyUpdater(array(), array(), $this->conf, true); $updater = new LegacyUpdater([], [], $this->conf, true);
$updater->updateMethodMergeDeprecatedConfigFile(); $updater->updateMethodMergeDeprecatedConfigFile();
$this->assertEquals('root', $this->conf->get('credentials.login')); $this->assertEquals('root', $this->conf->get('credentials.login'));
@ -225,14 +224,14 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
*/ */
public function testRenameDashTags() public function testRenameDashTags()
{ {
$refDB = new \ReferenceLinkDB(true); $refDB = new ReferenceLinkDB(true);
$refDB->write(self::$testDatastore); $refDB->write(self::$testDatastore);
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);
$this->assertEmpty($linkDB->filterSearch(array('searchtags' => 'exclude'))); $this->assertEmpty($linkDB->filterSearch(['searchtags' => 'exclude']));
$updater = new LegacyUpdater(array(), $linkDB, $this->conf, true); $updater = new LegacyUpdater([], $linkDB, $this->conf, true);
$updater->updateMethodRenameDashTags(); $updater->updateMethodRenameDashTags();
$this->assertNotEmpty($linkDB->filterSearch(array('searchtags' => 'exclude'))); $this->assertNotEmpty($linkDB->filterSearch(['searchtags' => 'exclude']));
} }
/** /**
@ -247,7 +246,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
// The ConfigIO is initialized with ConfigPhp. // The ConfigIO is initialized with ConfigPhp.
$this->assertTrue($this->conf->getConfigIO() instanceof ConfigPhp); $this->assertTrue($this->conf->getConfigIO() instanceof ConfigPhp);
$updater = new LegacyUpdater(array(), array(), $this->conf, false); $updater = new LegacyUpdater([], [], $this->conf, false);
$done = $updater->updateMethodConfigToJson(); $done = $updater->updateMethodConfigToJson();
$this->assertTrue($done); $this->assertTrue($done);
@ -272,7 +271,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
public function testConfigToJsonNothingToDo() public function testConfigToJsonNothingToDo()
{ {
$filetime = filemtime($this->conf->getConfigFileExt()); $filetime = filemtime($this->conf->getConfigFileExt());
$updater = new LegacyUpdater(array(), array(), $this->conf, false); $updater = new LegacyUpdater([], [], $this->conf, false);
$done = $updater->updateMethodConfigToJson(); $done = $updater->updateMethodConfigToJson();
$this->assertTrue($done); $this->assertTrue($done);
$expected = filemtime($this->conf->getConfigFileExt()); $expected = filemtime($this->conf->getConfigFileExt());
@ -291,7 +290,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$headerLink = '<script>alert("header_link");</script>'; $headerLink = '<script>alert("header_link");</script>';
$this->conf->set('general.title', $title); $this->conf->set('general.title', $title);
$this->conf->set('general.header_link', $headerLink); $this->conf->set('general.header_link', $headerLink);
$updater = new LegacyUpdater(array(), array(), $this->conf, true); $updater = new LegacyUpdater([], [], $this->conf, true);
$done = $updater->updateMethodEscapeUnescapedConfig(); $done = $updater->updateMethodEscapeUnescapedConfig();
$this->assertTrue($done); $this->assertTrue($done);
$this->conf->reload(); $this->conf->reload();
@ -306,9 +305,9 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
public function testUpdateApiSettings() public function testUpdateApiSettings()
{ {
$confFile = 'sandbox/config'; $confFile = 'sandbox/config';
copy(self::$configFile .'.json.php', $confFile .'.json.php'); copy(self::$configFile . '.json.php', $confFile . '.json.php');
$conf = new ConfigManager($confFile); $conf = new ConfigManager($confFile);
$updater = new LegacyUpdater(array(), array(), $conf, true); $updater = new LegacyUpdater([], [], $conf, true);
$this->assertFalse($conf->exists('api.enabled')); $this->assertFalse($conf->exists('api.enabled'));
$this->assertFalse($conf->exists('api.secret')); $this->assertFalse($conf->exists('api.secret'));
@ -316,7 +315,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$conf->reload(); $conf->reload();
$this->assertTrue($conf->get('api.enabled')); $this->assertTrue($conf->get('api.enabled'));
$this->assertTrue($conf->exists('api.secret')); $this->assertTrue($conf->exists('api.secret'));
unlink($confFile .'.json.php'); unlink($confFile . '.json.php');
} }
/** /**
@ -325,15 +324,15 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
public function testUpdateApiSettingsNothingToDo() public function testUpdateApiSettingsNothingToDo()
{ {
$confFile = 'sandbox/config'; $confFile = 'sandbox/config';
copy(self::$configFile .'.json.php', $confFile .'.json.php'); copy(self::$configFile . '.json.php', $confFile . '.json.php');
$conf = new ConfigManager($confFile); $conf = new ConfigManager($confFile);
$conf->set('api.enabled', false); $conf->set('api.enabled', false);
$conf->set('api.secret', ''); $conf->set('api.secret', '');
$updater = new LegacyUpdater(array(), array(), $conf, true); $updater = new LegacyUpdater([], [], $conf, true);
$updater->updateMethodApiSettings(); $updater->updateMethodApiSettings();
$this->assertFalse($conf->get('api.enabled')); $this->assertFalse($conf->get('api.enabled'));
$this->assertEmpty($conf->get('api.secret')); $this->assertEmpty($conf->get('api.secret'));
unlink($confFile .'.json.php'); unlink($confFile . '.json.php');
} }
/** /**
@ -341,8 +340,8 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
*/ */
public function testDatastoreIds() public function testDatastoreIds()
{ {
$links = array( $links = [
'20121206_182539' => array( '20121206_182539' => [
'linkdate' => '20121206_182539', 'linkdate' => '20121206_182539',
'title' => 'Geek and Poke', 'title' => 'Geek and Poke',
'url' => 'http://geek-and-poke.com/', 'url' => 'http://geek-and-poke.com/',
@ -350,25 +349,25 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
'tags' => 'dev cartoon tag1 tag2 tag3 tag4 ', 'tags' => 'dev cartoon tag1 tag2 tag3 tag4 ',
'updated' => '20121206_190301', 'updated' => '20121206_190301',
'private' => false, 'private' => false,
), ],
'20121206_172539' => array( '20121206_172539' => [
'linkdate' => '20121206_172539', 'linkdate' => '20121206_172539',
'title' => 'UserFriendly - Samba', 'title' => 'UserFriendly - Samba',
'url' => 'http://ars.userfriendly.org/cartoons/?id=20010306', 'url' => 'http://ars.userfriendly.org/cartoons/?id=20010306',
'description' => '', 'description' => '',
'tags' => 'samba cartoon web', 'tags' => 'samba cartoon web',
'private' => false, 'private' => false,
), ],
'20121206_142300' => array( '20121206_142300' => [
'linkdate' => '20121206_142300', 'linkdate' => '20121206_142300',
'title' => 'UserFriendly - Web Designer', 'title' => 'UserFriendly - Web Designer',
'url' => 'http://ars.userfriendly.org/cartoons/?id=20121206', 'url' => 'http://ars.userfriendly.org/cartoons/?id=20121206',
'description' => 'Naming conventions... #private', 'description' => 'Naming conventions... #private',
'tags' => 'samba cartoon web', 'tags' => 'samba cartoon web',
'private' => true, 'private' => true,
), ],
); ];
$refDB = new \ReferenceLinkDB(true); $refDB = new ReferenceLinkDB(true);
$refDB->setLinks($links); $refDB->setLinks($links);
$refDB->write(self::$testDatastore); $refDB->write(self::$testDatastore);
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);
@ -378,12 +377,12 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$this->conf->set('resource.data_dir', 'sandbox'); $this->conf->set('resource.data_dir', 'sandbox');
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$updater = new LegacyUpdater(array(), $linkDB, $this->conf, true); $updater = new LegacyUpdater([], $linkDB, $this->conf, true);
$this->assertTrue($updater->updateMethodDatastoreIds()); $this->assertTrue($updater->updateMethodDatastoreIds());
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);
$backupFiles = glob($this->conf->get('resource.data_dir') . '/datastore.'. date('YmdH') .'*.php'); $backupFiles = glob($this->conf->get('resource.data_dir') . '/datastore.' . date('YmdH') . '*.php');
$backup = null; $backup = null;
foreach ($backupFiles as $backupFile) { foreach ($backupFiles as $backupFile) {
if (strpos($backupFile, '_1') === false) { if (strpos($backupFile, '_1') === false) {
@ -437,7 +436,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
*/ */
public function testDatastoreIdsNothingToDo() public function testDatastoreIdsNothingToDo()
{ {
$refDB = new \ReferenceLinkDB(true); $refDB = new ReferenceLinkDB(true);
$refDB->write(self::$testDatastore); $refDB->write(self::$testDatastore);
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);
@ -445,7 +444,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$checksum = hash_file('sha1', self::$testDatastore); $checksum = hash_file('sha1', self::$testDatastore);
$updater = new LegacyUpdater(array(), $linkDB, $this->conf, true); $updater = new LegacyUpdater([], $linkDB, $this->conf, true);
$this->assertTrue($updater->updateMethodDatastoreIds()); $this->assertTrue($updater->updateMethodDatastoreIds());
$this->assertEquals($checksum, hash_file('sha1', self::$testDatastore)); $this->assertEquals($checksum, hash_file('sha1', self::$testDatastore));
} }
@ -478,9 +477,9 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$sandbox = 'sandbox/config'; $sandbox = 'sandbox/config';
copy(self::$configFile . '.json.php', $sandbox . '.json.php'); copy(self::$configFile . '.json.php', $sandbox . '.json.php');
$this->conf = new ConfigManager($sandbox); $this->conf = new ConfigManager($sandbox);
mkdir('sandbox/'. $theme); mkdir('sandbox/' . $theme);
touch('sandbox/'. $theme .'/linklist.html'); touch('sandbox/' . $theme . '/linklist.html');
$this->conf->set('resource.raintpl_tpl', 'sandbox/'. $theme .'/'); $this->conf->set('resource.raintpl_tpl', 'sandbox/' . $theme . '/');
$updater = new LegacyUpdater([], [], $this->conf, true); $updater = new LegacyUpdater([], [], $this->conf, true);
$this->assertTrue($updater->updateMethodDefaultTheme()); $this->assertTrue($updater->updateMethodDefaultTheme());
@ -490,8 +489,8 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$this->assertEquals('sandbox', $this->conf->get('resource.raintpl_tpl')); $this->assertEquals('sandbox', $this->conf->get('resource.raintpl_tpl'));
$this->assertEquals($theme, $this->conf->get('resource.theme')); $this->assertEquals($theme, $this->conf->get('resource.theme'));
unlink($sandbox . '.json.php'); unlink($sandbox . '.json.php');
unlink('sandbox/'. $theme .'/linklist.html'); unlink('sandbox/' . $theme . '/linklist.html');
rmdir('sandbox/'. $theme); rmdir('sandbox/' . $theme);
} }
/** /**
@ -572,11 +571,11 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
$this->conf->set('plugins.PIWIK_URL', $url); $this->conf->set('plugins.PIWIK_URL', $url);
$updater = new LegacyUpdater([], [], $this->conf, true); $updater = new LegacyUpdater([], [], $this->conf, true);
$this->assertTrue($updater->updateMethodPiwikUrl()); $this->assertTrue($updater->updateMethodPiwikUrl());
$this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL')); $this->assertEquals('http://' . $url, $this->conf->get('plugins.PIWIK_URL'));
// reload from file // reload from file
$this->conf = new ConfigManager($sandboxConf); $this->conf = new ConfigManager($sandboxConf);
$this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL')); $this->assertEquals('http://' . $url, $this->conf->get('plugins.PIWIK_URL'));
} }
/** /**
@ -781,12 +780,12 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
1 => ['id' => 1] + $blank, 1 => ['id' => 1] + $blank,
2 => ['id' => 2] + $blank, 2 => ['id' => 2] + $blank,
]; ];
$refDB = new \ReferenceLinkDB(true); $refDB = new ReferenceLinkDB(true);
$refDB->setLinks($links); $refDB->setLinks($links);
$refDB->write(self::$testDatastore); $refDB->write(self::$testDatastore);
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);
$updater = new LegacyUpdater(array(), $linkDB, $this->conf, true); $updater = new LegacyUpdater([], $linkDB, $this->conf, true);
$this->assertTrue($updater->updateMethodSetSticky()); $this->assertTrue($updater->updateMethodSetSticky());
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);
@ -812,12 +811,12 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
1 => ['id' => 1, 'sticky' => true] + $blank, 1 => ['id' => 1, 'sticky' => true] + $blank,
2 => ['id' => 2] + $blank, 2 => ['id' => 2] + $blank,
]; ];
$refDB = new \ReferenceLinkDB(true); $refDB = new ReferenceLinkDB(true);
$refDB->setLinks($links); $refDB->setLinks($links);
$refDB->write(self::$testDatastore); $refDB->write(self::$testDatastore);
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);
$updater = new LegacyUpdater(array(), $linkDB, $this->conf, true); $updater = new LegacyUpdater([], $linkDB, $this->conf, true);
$this->assertTrue($updater->updateMethodSetSticky()); $this->assertTrue($updater->updateMethodSetSticky());
$linkDB = new LegacyLinkDB(self::$testDatastore, true, false); $linkDB = new LegacyLinkDB(self::$testDatastore, true, false);

View file

@ -10,8 +10,7 @@ use Shaarli\Formatter\FormatterFactory;
use Shaarli\History; use Shaarli\History;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\TestCase; use Shaarli\TestCase;
use Shaarli\Tests\Utils\ReferenceLinkDB;
require_once 'tests/utils/ReferenceLinkDB.php';
/** /**
* Netscape bookmark export * Netscape bookmark export
@ -29,7 +28,7 @@ class BookmarkExportTest extends TestCase
protected static $conf; protected static $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var ReferenceLinkDB instance.
*/ */
protected static $refDb = null; protected static $refDb = null;
@ -64,7 +63,7 @@ class BookmarkExportTest extends TestCase
$mutex = new NoMutex(); $mutex = new NoMutex();
static::$conf = new ConfigManager('tests/utils/config/configJson'); static::$conf = new ConfigManager('tests/utils/config/configJson');
static::$conf->set('resource.datastore', static::$testDatastore); static::$conf->set('resource.datastore', static::$testDatastore);
static::$refDb = new \ReferenceLinkDB(); static::$refDb = new ReferenceLinkDB();
static::$refDb->write(static::$testDatastore); static::$refDb->write(static::$testDatastore);
static::$history = new History('sandbox/history.php'); static::$history = new History('sandbox/history.php');
static::$pluginManager = new PluginManager(static::$conf); static::$pluginManager = new PluginManager(static::$conf);

View file

@ -135,7 +135,7 @@ class BookmarkImportTest extends TestCase
$files = file2array('empty.htm'); $files = file2array('empty.htm');
$this->assertEquals( $this->assertEquals(
'File empty.htm (0 bytes) has an unknown file format.' 'File empty.htm (0 bytes) has an unknown file format.'
.' Nothing was imported.', . ' Nothing was imported.',
$this->netscapeBookmarkUtils->import(null, $files) $this->netscapeBookmarkUtils->import(null, $files)
); );
$this->assertEquals(0, $this->bookmarkService->count()); $this->assertEquals(0, $this->bookmarkService->count());
@ -162,7 +162,7 @@ class BookmarkImportTest extends TestCase
$files = file2array('lowercase_doctype.htm'); $files = file2array('lowercase_doctype.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File lowercase_doctype.htm (386 bytes) was successfully processed in %d seconds:' 'File lowercase_doctype.htm (386 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import(null, $files) $this->netscapeBookmarkUtils->import(null, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -177,7 +177,7 @@ class BookmarkImportTest extends TestCase
$files = file2array('internet_explorer_encoding.htm'); $files = file2array('internet_explorer_encoding.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File internet_explorer_encoding.htm (356 bytes) was successfully processed in %d seconds:' 'File internet_explorer_encoding.htm (356 bytes) was successfully processed in %d seconds:'
.' 1 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 1 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import([], $files) $this->netscapeBookmarkUtils->import([], $files)
); );
$this->assertEquals(1, $this->bookmarkService->count()); $this->assertEquals(1, $this->bookmarkService->count());
@ -205,7 +205,7 @@ class BookmarkImportTest extends TestCase
$files = file2array('netscape_nested.htm'); $files = file2array('netscape_nested.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_nested.htm (1337 bytes) was successfully processed in %d seconds:' 'File netscape_nested.htm (1337 bytes) was successfully processed in %d seconds:'
.' 8 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 8 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import([], $files) $this->netscapeBookmarkUtils->import([], $files)
); );
$this->assertEquals(8, $this->bookmarkService->count()); $this->assertEquals(8, $this->bookmarkService->count());
@ -326,7 +326,7 @@ class BookmarkImportTest extends TestCase
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import([], $files) $this->netscapeBookmarkUtils->import([], $files)
); );
@ -365,11 +365,11 @@ class BookmarkImportTest extends TestCase
*/ */
public function testImportKeepPrivacy() public function testImportKeepPrivacy()
{ {
$post = array('privacy' => 'default'); $post = ['privacy' => 'default'];
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
@ -408,11 +408,11 @@ class BookmarkImportTest extends TestCase
*/ */
public function testImportAsPublic() public function testImportAsPublic()
{ {
$post = array('privacy' => 'public'); $post = ['privacy' => 'public'];
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -426,11 +426,11 @@ class BookmarkImportTest extends TestCase
*/ */
public function testImportAsPrivate() public function testImportAsPrivate()
{ {
$post = array('privacy' => 'private'); $post = ['privacy' => 'private'];
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -447,10 +447,10 @@ class BookmarkImportTest extends TestCase
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
// import bookmarks as private // import bookmarks as private
$post = array('privacy' => 'private'); $post = ['privacy' => 'private'];
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -459,13 +459,13 @@ class BookmarkImportTest extends TestCase
$this->assertTrue($this->bookmarkService->get(1)->isPrivate()); $this->assertTrue($this->bookmarkService->get(1)->isPrivate());
// re-import as public, enable overwriting // re-import as public, enable overwriting
$post = array( $post = [
'privacy' => 'public', 'privacy' => 'public',
'overwrite' => 'true' 'overwrite' => 'true'
); ];
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -482,10 +482,10 @@ class BookmarkImportTest extends TestCase
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
// import bookmarks as public // import bookmarks as public
$post = array('privacy' => 'public'); $post = ['privacy' => 'public'];
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -494,13 +494,13 @@ class BookmarkImportTest extends TestCase
$this->assertFalse($this->bookmarkService->get(1)->isPrivate()); $this->assertFalse($this->bookmarkService->get(1)->isPrivate());
// re-import as private, enable overwriting // re-import as private, enable overwriting
$post = array( $post = [
'privacy' => 'private', 'privacy' => 'private',
'overwrite' => 'true' 'overwrite' => 'true'
); ];
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -514,21 +514,21 @@ class BookmarkImportTest extends TestCase
*/ */
public function testSkipOverwrite() public function testSkipOverwrite()
{ {
$post = array('privacy' => 'public'); $post = ['privacy' => 'public'];
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
// re-import as private, DO NOT enable overwriting // re-import as private, DO NOT enable overwriting
$post = array('privacy' => 'private'); $post = ['privacy' => 'private'];
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 0 bookmarks imported, 0 bookmarks overwritten, 2 bookmarks skipped.', . ' 0 bookmarks imported, 0 bookmarks overwritten, 2 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -540,14 +540,14 @@ class BookmarkImportTest extends TestCase
*/ */
public function testSetDefaultTags() public function testSetDefaultTags()
{ {
$post = array( $post = [
'privacy' => 'public', 'privacy' => 'public',
'default_tags' => 'tag1 tag2 tag3' 'default_tags' => 'tag1 tag2 tag3'
); ];
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -561,14 +561,14 @@ class BookmarkImportTest extends TestCase
*/ */
public function testSanitizeDefaultTags() public function testSanitizeDefaultTags()
{ {
$post = array( $post = [
'privacy' => 'public', 'privacy' => 'public',
'default_tags' => 'tag1& tag2 "tag3"' 'default_tags' => 'tag1& tag2 "tag3"'
); ];
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -597,7 +597,7 @@ class BookmarkImportTest extends TestCase
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import($post, $files) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -630,8 +630,8 @@ class BookmarkImportTest extends TestCase
$files = file2array('same_date.htm'); $files = file2array('same_date.htm');
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File same_date.htm (453 bytes) was successfully processed in %d seconds:' 'File same_date.htm (453 bytes) was successfully processed in %d seconds:'
.' 3 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', . ' 3 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
$this->netscapeBookmarkUtils->import(array(), $files) $this->netscapeBookmarkUtils->import([], $files)
); );
$this->assertEquals(3, $this->bookmarkService->count()); $this->assertEquals(3, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));

Some files were not shown because too many files have changed in this diff Show more