mirror of
https://github.com/wallabag/docker
synced 2025-12-15 10:46:43 +00:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d21d9c6260 | ||
|
|
886535f767 | ||
|
|
1ad213de86 | ||
|
|
3538a3c8d7 | ||
|
|
92fcba3557 | ||
|
|
98ed4730b3 | ||
|
|
c0c280b606 | ||
|
|
5790e0d029 | ||
|
|
e61cbdb025 | ||
|
|
c12a84557a | ||
|
|
835e9ad84b | ||
|
|
d5aac3e6ed | ||
|
|
e38f9adb8b | ||
|
|
b6db602ece |
21
.github/workflows/test.yml
vendored
21
.github/workflows/test.yml
vendored
@@ -36,17 +36,16 @@ jobs:
|
||||
- name: "Build image"
|
||||
run: docker-compose -f tests/docker-compose.${{ matrix.database }}.yml build
|
||||
|
||||
- name: "Run image"
|
||||
run: docker-compose -f tests/docker-compose.${{ matrix.database }}.yml up -d
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: pip install pytest requests
|
||||
|
||||
- name: "Check running instance"
|
||||
run: docker ps
|
||||
|
||||
- name: "Wait 60s"
|
||||
run: sleep 60
|
||||
run: pip install pytest pytest-docker requests
|
||||
|
||||
- name: "Run tests"
|
||||
run: py.test tests/
|
||||
run: py.test --database=${{ matrix.database }} tests/
|
||||
|
||||
- name: "Get docker logs"
|
||||
if: ${{ always() }}
|
||||
run: docker-compose -p "wallabag_${{ matrix.database }}" -f tests/docker-compose.${{ matrix.database }}.yml logs wallabag
|
||||
|
||||
- name: "Cleanup environment"
|
||||
if: ${{ always() }}
|
||||
run: docker-compose -p "wallabag_${{ matrix.database }}" -f tests/docker-compose.${{ matrix.database }}.yml down -v
|
||||
|
||||
@@ -5,11 +5,11 @@ FROM golang:alpine as builder
|
||||
# flag -ldflags "-s -w" produces a smaller executable
|
||||
RUN go install -ldflags "-s -w" -v github.com/a8m/envsubst/cmd/envsubst@v1.3.0
|
||||
|
||||
FROM alpine:3.17
|
||||
FROM alpine:3.18
|
||||
|
||||
COPY --from=builder /go/bin/envsubst /usr/bin/envsubst
|
||||
|
||||
ARG WALLABAG_VERSION=2.6.1
|
||||
ARG WALLABAG_VERSION=2.6.2
|
||||
|
||||
RUN set -ex \
|
||||
&& apk add --no-cache \
|
||||
@@ -74,6 +74,8 @@ RUN set -ex \
|
||||
&& rm -rf /root/.composer/* /var/www/wallabag/var/cache/* /var/www/wallabag/var/logs/* /var/www/wallabag/var/sessions/* \
|
||||
&& chown -R nobody:nobody /var/www/wallabag
|
||||
|
||||
ENV PATH="${PATH}:/var/www/wallabag/bin"
|
||||
|
||||
EXPOSE 80
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["wallabag"]
|
||||
|
||||
@@ -29,7 +29,6 @@ Default login is `wallabag:wallabag`.
|
||||
- `-e SYMFONY__ENV__LOCALE=...` (default to en)
|
||||
- `-e SYMFONY__ENV__MAILER_DSN=...` (defaults to "smtp://127.0.0.1")
|
||||
- `-e SYMFONY__ENV__FROM_EMAIL=...`(defaults to "`wallabag@example.com`", the address wallabag uses for outgoing emails)
|
||||
- `-e SYMFONY__ENV__TWOFACTOR_AUTH=...` (defaults to "true", enable or disable two-factor authentication)
|
||||
- `-e SYMFONY__ENV__TWOFACTOR_SENDER=...` (defaults to "`no-reply@wallabag.org`", the address wallabag uses for two-factor emails)
|
||||
- `-e SYMFONY__ENV__FOSUSER_REGISTRATION=...`(defaults to "true", enable or disable public user registration)
|
||||
- `-e SYMFONY__ENV__FOSUSER_CONFIRMATION=...`(defaults to "true", enable or disable registration confirmation)
|
||||
|
||||
4
conftest.py
Normal file
4
conftest.py
Normal file
@@ -0,0 +1,4 @@
|
||||
import pytest
|
||||
|
||||
def pytest_addoption(parser):
|
||||
parser.addoption("--database", action="store", default="default")
|
||||
@@ -20,7 +20,6 @@ parameters:
|
||||
secret: ${SYMFONY__ENV__SECRET:-ovmpmAWXRCabNlMgzlzFXDYmCFfzGv}
|
||||
|
||||
# two factor stuff
|
||||
twofactor_auth: ${SYMFONY__ENV__TWOFACTOR_AUTH:-true}
|
||||
twofactor_sender: ${SYMFONY__ENV__TWOFACTOR_SENDER:-no-reply@wallabag.org}
|
||||
|
||||
# fosuser stuff
|
||||
|
||||
@@ -1,13 +1,53 @@
|
||||
import pytest
|
||||
import re
|
||||
import requests
|
||||
import os
|
||||
|
||||
from requests.exceptions import ConnectionError
|
||||
|
||||
URL = 'http://127.0.0.1:80'
|
||||
@pytest.fixture(scope="session")
|
||||
def database(pytestconfig):
|
||||
return pytestconfig.getoption("database")
|
||||
|
||||
def is_responsive(url):
|
||||
try:
|
||||
response = requests.get(url)
|
||||
if response.status_code == 200:
|
||||
return True
|
||||
except ConnectionError:
|
||||
return False
|
||||
|
||||
def test_accessing_login_page():
|
||||
r = requests.get(URL, allow_redirects=True)
|
||||
@pytest.fixture(scope="session")
|
||||
def docker_compose_project_name(database):
|
||||
return "wallabag_{}".format(database)
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def docker_cleanup():
|
||||
"""Disable docker cleanup at the end of tests to get logs outside of pytest"""
|
||||
return False
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def docker_compose_command() -> str:
|
||||
return "docker-compose"
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def docker_compose_file(pytestconfig, database):
|
||||
return os.path.join(str(pytestconfig.rootdir), "tests/", "docker-compose.{}.yml".format(database))
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def wallabag_service(docker_ip, docker_services):
|
||||
"""Ensure that wallabag service is up and responsive"""
|
||||
|
||||
# `port_for` takes a container port and returns the corresponding host port
|
||||
port = docker_services.port_for("wallabag", 80)
|
||||
url = "http://{}:{}".format(docker_ip, port)
|
||||
docker_services.wait_until_responsive(
|
||||
timeout=60.0, pause=0.5, check=lambda: is_responsive(url)
|
||||
)
|
||||
return url
|
||||
|
||||
def test_accessing_login_page(wallabag_service):
|
||||
r = requests.get(wallabag_service, allow_redirects=True)
|
||||
|
||||
assert r.status_code == 200
|
||||
assert 'Log in' in r.text
|
||||
@@ -16,9 +56,9 @@ def test_accessing_login_page():
|
||||
assert 'Username' in r.text
|
||||
|
||||
|
||||
def test_logging_in():
|
||||
def test_logging_in(wallabag_service):
|
||||
client = requests.session()
|
||||
r = client.get(URL, allow_redirects=True)
|
||||
r = client.get(wallabag_service, allow_redirects=True)
|
||||
jar = r.cookies
|
||||
|
||||
# get csrf token
|
||||
@@ -39,7 +79,7 @@ def test_logging_in():
|
||||
'_csrf_token': csrf
|
||||
}
|
||||
|
||||
r = client.post(URL + '/login_check', cookies=jar, data=data)
|
||||
r = client.post(wallabag_service + '/login_check', cookies=jar, data=data)
|
||||
assert r.status_code == 200
|
||||
assert '/unread/list' in r.text
|
||||
assert '/starred/list' in r.text
|
||||
|
||||
Reference in New Issue
Block a user