Merge branch 'master' of github.com:Shaarli/Shaarli into upstream
This commit is contained in:
commit
6ca8ab31b2
131 changed files with 4833 additions and 2527 deletions
|
@ -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
99
.github/workflows/ci.yml
vendored
Normal 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
25
.github/workflows/docker-latest.yml
vendored
Normal 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
31
.github/workflows/docker-tags.yml
vendored
Normal 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 }}
|
68
.travis.yml
68
.travis.yml
|
@ -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
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -187,6 +187,7 @@ public static function getAvailableLanguages()
|
||||||
'fr' => t('French'),
|
'fr' => t('French'),
|
||||||
'jp' => t('Japanese'),
|
'jp' => t('Japanese'),
|
||||||
'ru' => t('Russian'),
|
'ru' => t('Russian'),
|
||||||
|
'zh_CN' => t('Chinese (Simplified)'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ public function __construct(
|
||||||
$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();
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
*/
|
*/
|
||||||
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
|
||||||
|
|
|
@ -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
518
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
{#
|
{#
|
||||||
The entry point for the ReadTheDocs Theme.
|
The entry point for the ReadTheDocs Theme.
|
||||||
|
|
||||||
Any theme customisations should override this file to redefine blocks defined in
|
Any theme customisations should override this file to redefine blocks defined in
|
||||||
the various templates. The custom theme should only need to define a main.html
|
the various templates. The custom theme should only need to define a main.html
|
||||||
which `{% extends "base.html" %}` and defines various blocks which will replace
|
which `{% extends "base.html" %}` and defines various blocks which will replace
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
<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 %}
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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/)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 "ピクチャーウォール"
|
||||||
|
|
||||||
|
|
1807
inc/languages/zh_CN/LC_MESSAGES/shaarli.po
Normal file
1807
inc/languages/zh_CN/LC_MESSAGES/shaarli.po
Normal file
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -39,7 +39,7 @@ public function setUp(): void
|
||||||
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 @@ public function testPlugin(): void
|
||||||
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 @@ public function testPlugin(): void
|
||||||
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'));
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
*/
|
*/
|
||||||
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 @@ protected function rrmdirContent($dir)
|
||||||
$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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 @@ protected function setUp(): void
|
||||||
/**
|
/**
|
||||||
* 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 @@ public function testGenerateLocation()
|
||||||
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 @@ public function testReturnBytes()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testHumanBytes()
|
||||||
*/
|
*/
|
||||||
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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 @@ protected function setUp(): void
|
||||||
$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 @@ public function testInvokeMiddlewareWithValidToken(): void
|
||||||
$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 @@ public function testInvokeMiddlewareNoSecretSetDebug()
|
||||||
$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 @@ public function testInvalidJwtAuthHeaderDebug()
|
||||||
$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 @@ public function testInvokeMiddlewareInvalidJwtDebug()
|
||||||
$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();
|
||||||
|
|
|
@ -32,10 +32,10 @@ public static function generateValidJwtToken($secret)
|
||||||
"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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
|
|
||||||
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;
|
||||||
|
|
|
@ -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\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 @@ protected function setUp(): void
|
||||||
$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 @@ public function testGetInfo()
|
||||||
$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 @@ public function testGetInfo()
|
||||||
$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 @@ public function testGetInfo()
|
||||||
$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']);
|
||||||
|
|
|
@ -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\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 @@ protected function setUp(): void
|
||||||
$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);
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
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 @@ protected function setUp(): void
|
||||||
$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');
|
||||||
|
|
||||||
|
|
|
@ -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\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 @@ protected function setUp(): void
|
||||||
$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 @@ public function testGetLinksSearchTerm()
|
||||||
// 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 @@ public function testGetLinksSearchTags()
|
||||||
$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']);
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
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 @@ protected function setUp(): void
|
||||||
$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);
|
||||||
|
|
|
@ -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\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 @@ protected function setUp(): void
|
||||||
$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);
|
||||||
|
|
|
@ -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\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 @@ protected function setUp(): void
|
||||||
$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);
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
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 @@ protected function setUp(): void
|
||||||
$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');
|
||||||
|
|
||||||
|
|
|
@ -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\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 @@ protected function setUp(): void
|
||||||
$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);
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
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 @@ protected function setUp(): void
|
||||||
$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);
|
||||||
|
|
|
@ -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 @@ public function testArrayAccessIterate()
|
||||||
$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 @@ public function testArrayAccessIterate()
|
||||||
*/
|
*/
|
||||||
public function testReorder()
|
public function testReorder()
|
||||||
{
|
{
|
||||||
$refDB = new \ReferenceLinkDB();
|
$refDB = new ReferenceLinkDB();
|
||||||
$refDB->write('sandbox/datastore.php');
|
$refDB->write('sandbox/datastore.php');
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Link datastore tests
|
* Link datastore tests
|
||||||
*/
|
*/
|
||||||
|
@ -7,7 +8,6 @@
|
||||||
|
|
||||||
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\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 @@ protected function setUp(): void
|
||||||
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 @@ public function testDatabaseMigration()
|
||||||
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 @@ public function testAddFull()
|
||||||
$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 @@ public function testCheckDBNewLoggedOut()
|
||||||
{
|
{
|
||||||
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());
|
||||||
|
|
|
@ -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 @@ public static function setUpBeforeClass(): void
|
||||||
$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 @@ public function testFilterCrossedSearch()
|
||||||
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(
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
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 @@ public function setUp(): void
|
||||||
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 @@ public function setUp(): void
|
||||||
*/
|
*/
|
||||||
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,
|
||||||
|
|
|
@ -167,7 +167,7 @@ public function testValidateNotValidNoId()
|
||||||
$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 @@ public function testValidateNotValidNoShortUrl()
|
||||||
$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 @@ public function testValidateNotValidNoCreated()
|
||||||
$exception = $e;
|
$exception = $e;
|
||||||
}
|
}
|
||||||
$this->assertNotNull($exception);
|
$this->assertNotNull($exception);
|
||||||
$this->assertContainsPolyfill('- Created: '. PHP_EOL, $exception->getMessage());
|
$this->assertContainsPolyfill('- Created: ' . PHP_EOL, $exception->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
|
|
||||||
use Shaarli\TestCase;
|
use Shaarli\TestCase;
|
||||||
|
|
||||||
require_once 'tests/utils/CurlUtils.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class LinkUtilsTest.
|
* Class LinkUtilsTest.
|
||||||
*/
|
*/
|
||||||
|
@ -142,7 +140,7 @@ public function testHtmlExtractExistentNameTag()
|
||||||
$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 @@ public function testHtmlExtractExistentNameTag()
|
||||||
$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 @@ public function testHtmlExtractExistentNameTagWithMixedQuotes(): void
|
||||||
$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 @@ public function testHtmlExtractExistentNameTagWithMixedQuotes(): void
|
||||||
$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 @@ public function testHtmlExtractNonExistentOgTag()
|
||||||
|
|
||||||
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 @@ public function testTagsFilterWithSpaceSeparator(): void
|
||||||
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 @@ public function testTagsArrayFilterWithSpaceSeparator(): void
|
||||||
['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));
|
||||||
|
|
|
@ -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 @@ function is_iterable($var)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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__);
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Shaarli\Config;
|
namespace Shaarli\Config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,13 +30,13 @@ public function testSetGet()
|
||||||
$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 @@ public function testSetWriteGet()
|
||||||
$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 @@ public function testSetWriteGet()
|
||||||
$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 @@ public function testSetArrayKey()
|
||||||
$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');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Shaarli\Config;
|
namespace Shaarli\Config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,7 +38,7 @@ public function testRead()
|
||||||
*/
|
*/
|
||||||
public function testReadNonExistent()
|
public function testReadNonExistent()
|
||||||
{
|
{
|
||||||
$this->assertEquals(array(), $this->configIO->read('nope'));
|
$this->assertEquals([], $this->configIO->read('nope'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,16 +61,16 @@ public function testReadEmpty()
|
||||||
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\';
|
||||||
|
|
|
@ -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 @@ public function testSavePluginConfigValid()
|
||||||
|
|
||||||
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 @@ public function testSavePluginConfigValid()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testSavePluginConfigInvalid()
|
||||||
*/
|
*/
|
||||||
public function testSavePluginConfigEmpty()
|
public function testSavePluginConfigEmpty()
|
||||||
{
|
{
|
||||||
$this->assertEquals(array(), save_plugin_config(array()));
|
$this->assertEquals([], save_plugin_config([]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -75,14 +79,14 @@ public function testSavePluginConfigEmpty()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testValidatePluginOrderValid()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testValidatePluginOrderInvalid()
|
||||||
*/
|
*/
|
||||||
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']);
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PageCache tests
|
* PageCache tests
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Shaarli\Feed;
|
namespace Shaarli\Feed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
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\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 @@ public static function setUpBeforeClass(): void
|
||||||
$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 @@ public static function setUpBeforeClass(): void
|
||||||
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 @@ public function testRSSBuildData()
|
||||||
// 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 @@ public function testAtomBuildData()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testBuildDataFiltered()
|
||||||
$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 @@ public function testBuildDataFiltered()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testBuildDataCount()
|
||||||
$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 @@ public function testBuildDataPermalinks()
|
||||||
// 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 @@ public function testBuildDataPermalinks()
|
||||||
// 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 @@ public function testBuildDataHideDates()
|
||||||
*/
|
*/
|
||||||
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,
|
||||||
|
|
|
@ -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 @@ public function testFormatDescription()
|
||||||
{
|
{
|
||||||
$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 @@ public function testFormatDescription()
|
||||||
|
|
||||||
$description[0] = 'This a <strong>description</strong><br />';
|
$description[0] = 'This a <strong>description</strong><br />';
|
||||||
$url = 'https://sub.domain.tld?query=here&for=real#hash';
|
$url = 'https://sub.domain.tld?query=here&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] = ' A N D KEEP '.
|
$description[3] = ' A N D KEEP ' .
|
||||||
'SPACES ! <br />';
|
'SPACES ! <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 @@ public function testFormatNoteWithIndexUrl()
|
||||||
$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']
|
||||||
);
|
);
|
||||||
|
|
|
@ -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 @@ public function testFormatExtra(): void
|
||||||
);
|
);
|
||||||
$this->assertEquals('This is a <strong>bookmark</strong>', $link['title']);
|
$this->assertEquals('This is a <strong>bookmark</strong>', $link['title']);
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
'<div class="markdown"><p>'.
|
'<div class="markdown"><p>' .
|
||||||
'<h2>Content</h2><p>`Here is some content</p>'.
|
'<h2>Content</h2><p>`Here is some content</p>' .
|
||||||
'</p></div>',
|
'</p></div>',
|
||||||
$link['description']
|
$link['description']
|
||||||
);
|
);
|
||||||
|
@ -112,21 +112,21 @@ public function testFormatExtraMinimal(): void
|
||||||
*/
|
*/
|
||||||
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 <strong>description</strong><br />'. PHP_EOL;
|
$description .= 'This a <strong>description</strong><br />' . PHP_EOL;
|
||||||
$url = 'https://sub.domain.tld?query=here&for=real#hash';
|
$url = 'https://sub.domain.tld?query=here&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 @@ public function testFormatExtraNoteWithIndexUrl(): void
|
||||||
$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);
|
||||||
|
|
|
@ -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 @@ public function testFormatFull()
|
||||||
);
|
);
|
||||||
$this->assertEquals('This is a <strong>bookmark</strong>', $link['title']);
|
$this->assertEquals('This is a <strong>bookmark</strong>', $link['title']);
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
'<div class="markdown"><p>'.
|
'<div class="markdown"><p>' .
|
||||||
'<h2>Content</h2><p>`Here is some content</p>'.
|
'<h2>Content</h2><p>`Here is some content</p>' .
|
||||||
'</p></div>',
|
'</p></div>',
|
||||||
$link['description']
|
$link['description']
|
||||||
);
|
);
|
||||||
|
@ -112,20 +112,20 @@ public function testFormatMinimal()
|
||||||
*/
|
*/
|
||||||
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 <strong>description</strong><br />'. PHP_EOL;
|
$description .= 'This a <strong>description</strong><br />' . PHP_EOL;
|
||||||
$url = 'https://sub.domain.tld?query=here&for=real#hash';
|
$url = 'https://sub.domain.tld?query=here&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 @@ public function testFormatDescription()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testFormatDescriptionWithSearchHighlight()
|
||||||
$url = 'https://sub.domain.tld?query=here&for=real#hash';
|
$url = 'https://sub.domain.tld?query=here&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&for=real#<span class="search-highlight">hash</span>';
|
$highlighted .= '?query=here&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 @@ public function testFormatNoteWithIndexUrl()
|
||||||
$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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,8 @@ public function testMiddlewareWhileLoggedOut(): void
|
||||||
$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(
|
||||||
|
|
|
@ -91,7 +91,7 @@ public function testMiddlewareExecutionWithFrontException(): void
|
||||||
$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 @@ public function testMiddlewareExecutionWithServerException(): void
|
||||||
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 {
|
||||||
|
|
|
@ -62,7 +62,7 @@ public function testIndex(): void
|
||||||
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 @@ public function testSaveNewConfig(): void
|
||||||
}
|
}
|
||||||
|
|
||||||
return $parameters[$key];
|
return $parameters[$key];
|
||||||
}
|
});
|
||||||
);
|
|
||||||
|
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
|
|
||||||
|
@ -137,8 +136,7 @@ public function testSaveNewConfig(): void
|
||||||
}
|
}
|
||||||
|
|
||||||
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());
|
||||||
|
|
|
@ -80,7 +80,10 @@ function (
|
||||||
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);
|
||||||
|
|
|
@ -74,7 +74,10 @@ public function testImportDefault(): void
|
||||||
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);
|
||||||
|
|
||||||
|
|
|
@ -52,12 +52,12 @@ public function testPostNewPasswordDefault(): void
|
||||||
{
|
{
|
||||||
$request = $this->createMock(Request::class);
|
$request = $this->createMock(Request::class);
|
||||||
$request->method('getParam')->willReturnCallback(function (string $key): string {
|
$request->method('getParam')->willReturnCallback(function (string $key): string {
|
||||||
if ('oldpassword' === $key) {
|
if ('oldpassword' === $key) {
|
||||||
return 'old';
|
return 'old';
|
||||||
}
|
}
|
||||||
if ('setpassword' === $key) {
|
if ('setpassword' === $key) {
|
||||||
return 'new';
|
return 'new';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $key;
|
return $key;
|
||||||
});
|
});
|
||||||
|
|
|
@ -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 @@ public function setUp(): void
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -365,5 +365,4 @@ public function testSaveBookmarkWrongToken(): void
|
||||||
|
|
||||||
$this->controller->save($request, $response);
|
$this->controller->save($request, $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ public function setUp(): void
|
||||||
{
|
{
|
||||||
$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
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,8 +54,7 @@ public function testIndexDefaultFirstPage(): void
|
||||||
(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')
|
||||||
|
|
|
@ -102,7 +102,7 @@ function (string $hook, array $data, array $param) use ($currentDay, $previousDa
|
||||||
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 @@ public function testValidIndexControllerInvokeNoFutureOrPast(): void
|
||||||
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 @@ public function testValidIndexControllerInvokeHeightAdjustment(): void
|
||||||
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 @@ public function testValidRssControllerInvokeDefault(): void
|
||||||
$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 @@ public function testValidRssControllerInvokeDefault(): void
|
||||||
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 @@ public function testValidRssControllerInvokeDefault(): void
|
||||||
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 @@ public function testValidRssControllerInvokeDefault(): void
|
||||||
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 @@ public function testSimpleRssWeekly(): void
|
||||||
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 @@ public function testSimpleRssWeekly(): void
|
||||||
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 @@ public function testSimpleRssMonthly(): void
|
||||||
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 @@ public function testSimpleRssMonthly(): void
|
||||||
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']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,8 @@ public function testDisplayFrontExceptionError(): void
|
||||||
$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());
|
||||||
|
|
|
@ -118,5 +118,5 @@ protected static function generateString(int $length): string
|
||||||
/**
|
/**
|
||||||
* Force to be used in PHPUnit context.
|
* Force to be used in PHPUnit context.
|
||||||
*/
|
*/
|
||||||
protected abstract function isInTestsContext(): bool;
|
abstract protected function isInTestsContext(): bool;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -32,7 +32,7 @@ public function setUp(): void
|
||||||
{
|
{
|
||||||
$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
|
||||||
{
|
{
|
||||||
|
|
|
@ -130,12 +130,12 @@ public function testValidCloudControllerInvokeWithParameters(): void
|
||||||
->method('executeHooks')
|
->method('executeHooks')
|
||||||
->withConsecutive(['render_tagcloud'])
|
->withConsecutive(['render_tagcloud'])
|
||||||
->willReturnCallback(function (string $hook, array $data, array $param): array {
|
->willReturnCallback(function (string $hook, array $data, array $param): array {
|
||||||
if ('render_tagcloud' === $hook) {
|
if ('render_tagcloud' === $hook) {
|
||||||
static::assertSame('ghi@def@', $data['search_tags']);
|
static::assertSame('ghi@def@', $data['search_tags']);
|
||||||
static::assertCount(1, $data['tags']);
|
static::assertCount(1, $data['tags']);
|
||||||
|
|
||||||
static::assertArrayHasKey('loggedin', $param);
|
static::assertArrayHasKey('loggedin', $param);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
})
|
})
|
||||||
|
|
|
@ -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 @@ public function testGetVersionCode()
|
||||||
'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 @@ public function testGetVersionCode()
|
||||||
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 @@ public function testGetVersionCode()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testCheckCurrentResourcePermissions()
|
||||||
$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 @@ public function testCheckCurrentResourcePermissionsErrors()
|
||||||
$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 @@ public function testCheckCurrentResourcePermissionsErrors()
|
||||||
'"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)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
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 @@ public function getDescriptionByTypeExceptionUnknownType(): void
|
||||||
/**
|
/**
|
||||||
* @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 @@ public function getRequestedTypes(): array
|
||||||
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 @@ public function getFormatsByType(): array
|
||||||
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 @@ public function getStartDatesByType(): array
|
||||||
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 @@ public function getCacheDatePeriodByType(): array
|
||||||
[
|
[
|
||||||
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'),
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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()
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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 @@ public function testWithoutProxy()
|
||||||
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 @@ public function testWithMultipleForwardedIp()
|
||||||
$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 @@ public function testWithTrustedIp()
|
||||||
$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]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HttpUtils' tests
|
* HttpUtils' tests
|
||||||
*/
|
*/
|
||||||
|
@ -7,8 +8,6 @@
|
||||||
|
|
||||||
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 @@ public function testRemoveIndex()
|
||||||
$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 @@ public function testOtherResource()
|
||||||
$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 @@ public function testPageUrlWithRoute()
|
||||||
$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 @@ public function testPageUrlWithRouteUnderSubfolder()
|
||||||
$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',
|
||||||
)
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,26 +25,26 @@ public function testIndexUrlWithConstantDefined()
|
||||||
$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',
|
||||||
)
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
namespace Shaarli\Http;
|
namespace Shaarli\Http;
|
||||||
|
|
||||||
require_once 'application/http/HttpUtils.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class IsHttpsTest
|
* Class IsHttpsTest
|
||||||
*
|
*
|
||||||
|
|
|
@ -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 @@ public function testRemoveIndex()
|
||||||
$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 @@ public function testOtherResource()
|
||||||
$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'
|
||||||
)
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 @@ public function testHttpsScheme()
|
||||||
$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 @@ public function testHttpsProxyForwardedHost()
|
||||||
$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 @@ public function testHttpsProxyForward()
|
||||||
$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 @@ public function testPort()
|
||||||
$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 @@ public function testPort()
|
||||||
$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 @@ public function testStandardHttpPort()
|
||||||
$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 @@ public function testStandardHttpsPort()
|
||||||
$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 @@ public function testHttpWithPort433()
|
||||||
$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'
|
||||||
)
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,12 @@ function (&$charset) use (
|
||||||
->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 @@ function (&$charset, &$title, &$description, &$tags) use (
|
||||||
->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 @@ public function testEmptyRetrieval(): void
|
||||||
->method('getCurlDownloadCallback')
|
->method('getCurlDownloadCallback')
|
||||||
->willReturnCallback(
|
->willReturnCallback(
|
||||||
function (): callable {
|
function (): callable {
|
||||||
return function (): void {};
|
return function (): void {
|
||||||
|
};
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
@ -133,7 +139,8 @@ function (): callable {
|
||||||
->method('getCurlHeaderCallback')
|
->method('getCurlHeaderCallback')
|
||||||
->willReturnCallback(
|
->willReturnCallback(
|
||||||
function (): callable {
|
function (): callable {
|
||||||
return function (): void {};
|
return function (): void {
|
||||||
|
};
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
@ -141,7 +148,7 @@ function (): callable {
|
||||||
->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();
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UrlUtils's tests
|
* UrlUtils's tests
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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 @@ public function testCleanupUrlEmpty()
|
||||||
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 @@ public function testCleanupUrlAlreadyClean()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testCleanupUrlFragment()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testCleanupUrlQuerySingle()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testCleanupUrlQueryMultiple()
|
||||||
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'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 @@ public function testUnparseEmptyArray()
|
||||||
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)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 @@ public function testWhitelistProtocolMissing()
|
||||||
{
|
{
|
||||||
$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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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'))) {
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once 'tests/UtilsTest.php';
|
namespace Shaarli\Tests;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
class UtilsDeTest extends UtilsTest
|
class UtilsDeTest extends UtilsTest
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once 'tests/UtilsTest.php';
|
namespace Shaarli\Tests;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
class UtilsEnTest extends UtilsTest
|
class UtilsEnTest extends UtilsTest
|
||||||
{
|
{
|
||||||
|
|
|
@ -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 @@
|
||||||
*
|
*
|
||||||
* @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).
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once 'tests/UtilsTest.php';
|
namespace Shaarli\Tests;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
class UtilsFrTest extends UtilsTest
|
class UtilsFrTest extends UtilsTest
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Shaarli\Updater;
|
namespace Shaarli\Updater;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
|
@ -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 @@ public function testCheckDBNew()
|
||||||
$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 @@ public function testCheckDBLoad()
|
||||||
$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 @@ public function testSave()
|
||||||
$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 @@ public function testSave()
|
||||||
'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 @@ public function testCountHiddenPublic()
|
||||||
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 @@ public function testGetUnknownLinkFromURL()
|
||||||
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 @@ public function testAllTags()
|
||||||
'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 @@ public function testAllTags()
|
||||||
'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 @@ public function testAllTags()
|
||||||
'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 @@ public function testAllTags()
|
||||||
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 @@ public function testFilterString()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testFilterArray()
|
||||||
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 @@ public function testConsistentOrder()
|
||||||
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 @@ public function testConsistentOrder()
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 @@ public function testFilterCrossedSearch()
|
||||||
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(
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Shaarli\Updater;
|
namespace Shaarli\Updater;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
@ -9,18 +10,16 @@
|
||||||
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 @@ protected function setUp(): void
|
||||||
*/
|
*/
|
||||||
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 @@ public function testReadEmptyUpdatesFile()
|
||||||
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 @@ public function testWriteEmptyUpdatesFile()
|
||||||
$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 @@ public function testWriteUpdatesFileNotWritable()
|
||||||
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 @@ public function testWriteUpdatesFileNotWritable()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testNoUpdates()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testUpdatesFirstTime()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testUpdateFailed()
|
||||||
{
|
{
|
||||||
$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 @@ public function testUpdateMergeDeprecatedConfig()
|
||||||
$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 @@ public function testUpdateMergeDeprecatedConfig()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testMergeDeprecatedConfigNoFile()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testConfigToJson()
|
||||||
// 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 @@ public function testConfigToJson()
|
||||||
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 @@ public function testEscapeConfig()
|
||||||
$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 @@ public function testEscapeConfig()
|
||||||
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 @@ public function testUpdateApiSettings()
|
||||||
$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 @@ public function testUpdateApiSettings()
|
||||||
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 @@ public function testUpdateApiSettingsNothingToDo()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testDatastoreIds()
|
||||||
'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 @@ public function testDatastoreIds()
|
||||||
$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 @@ public function testDatastoreIds()
|
||||||
*/
|
*/
|
||||||
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 @@ public function testDatastoreIdsNothingToDo()
|
||||||
$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 @@ public function testDefaultThemeWithCustomTheme()
|
||||||
$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 @@ public function testDefaultThemeWithCustomTheme()
|
||||||
$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 @@ public function testUpdatePiwikUrlValid()
|
||||||
$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 @@ public function testUpdateStickyValid()
|
||||||
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 @@ public function testUpdateStickyNothingToDo()
|
||||||
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);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue