Skip to content

Commit 96269cd

Browse files
committed
test: [#628] add failing test for bug. Duplicate slash in announce URL
When the tracker is running in private mode the announce URL in the torrent file includes a double slash '/'. For example: http://tracker:7070//KEY This commit adds a failing test. It needed scaffolding to run E2E tests with a tracker running in "private" mode. We have been only running E2E tests for public trackers so far. The new tests is only execute with Sqlite3. It would be easy to run it also for MySQL. It was not cinluded in order to avoid making tests to slow. It requires to start the docker E2E shared environment twice (for public and private tracker configurations).
1 parent 59fb3ab commit 96269cd

File tree

14 files changed

+197
-17
lines changed

14 files changed

+197
-17
lines changed

contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.private.e2e.container.sqlite3.toml) \
4+
TORRUST_TRACKER_CONFIG_TOML=$(cat ./share/default/config/tracker.private.e2e.container.sqlite3.toml) \
5+
docker compose down
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
3+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.private.e2e.container.sqlite3.toml) \
4+
docker compose build
5+
6+
USER_ID=${USER_ID:-1000} \
7+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.private.e2e.container.sqlite3.toml) \
8+
TORRUST_INDEX_DATABASE="e2e_testing_sqlite3" \
9+
TORRUST_INDEX_DATABASE_DRIVER="sqlite3" \
10+
TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN="MyAccessToken" \
11+
TORRUST_INDEX_CONFIG_OVERRIDE_AUTH__SECRET_KEY="MaxVerstappenWC2021" \
12+
TORRUST_TRACKER_CONFIG_TOML=$(cat ./share/default/config/tracker.private.e2e.container.sqlite3.toml) \
13+
TORRUST_TRACKER_DATABASE="e2e_testing_sqlite3" \
14+
TORRUST_TRACKER_CONFIG_OVERRIDE_DB_DRIVER="Sqlite3" \
15+
TORRUST_TRACKER_CONFIG_OVERRIDE_HTTP_API__ACCESS_TOKENS__ADMIN="MyAccessToken" \
16+
docker compose up --detach --pull always --remove-orphans
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.sqlite3.toml) \
4+
TORRUST_TRACKER_CONFIG_TOML=$(cat ./share/default/config/tracker.public.e2e.container.sqlite3.toml) \
5+
docker compose down

contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh renamed to contrib/dev-tools/container/e2e/sqlite/mode/public/e2e-env-up.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#!/bin/bash
22

3-
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.e2e.container.sqlite3.toml) \
3+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.sqlite3.toml) \
44
docker compose build
55

66
USER_ID=${USER_ID:-1000} \
7-
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.e2e.container.sqlite3.toml) \
7+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.sqlite3.toml) \
88
TORRUST_INDEX_DATABASE="e2e_testing_sqlite3" \
99
TORRUST_INDEX_DATABASE_DRIVER="sqlite3" \
1010
TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN="MyAccessToken" \
1111
TORRUST_INDEX_CONFIG_OVERRIDE_AUTH__SECRET_KEY="MaxVerstappenWC2021" \
12-
TORRUST_TRACKER_CONFIG_TOML=$(cat ./share/default/config/tracker.e2e.container.sqlite3.toml) \
12+
TORRUST_TRACKER_CONFIG_TOML=$(cat ./share/default/config/tracker.public.e2e.container.sqlite3.toml) \
1313
TORRUST_TRACKER_DATABASE="e2e_testing_sqlite3" \
1414
TORRUST_TRACKER_CONFIG_OVERRIDE_DB_DRIVER="Sqlite3" \
1515
TORRUST_TRACKER_CONFIG_OVERRIDE_HTTP_API__ACCESS_TOKENS__ADMIN="MyAccessToken" \

contrib/dev-tools/container/e2e/sqlite/run-e2e-tests.sh

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,38 @@ cp .env.local .env || exit 1
2525
# TEST USING SQLITE
2626
echo "Running E2E tests using SQLite ..."
2727

28+
# TEST USING A PUBLIC TRACKER
29+
echo "Running E2E tests with a public tracker ..."
30+
31+
# Start E2E testing environment
32+
./contrib/dev-tools/container/e2e/sqlite/mode/public/e2e-env-up.sh || exit 1
33+
34+
# Wait for conatiners to be healthy
35+
./contrib/dev-tools/container/functions/wait_for_container_to_be_healthy.sh torrust-mysql-1 10 3 || exit 1
36+
./contrib/dev-tools/container/functions/wait_for_container_to_be_healthy.sh torrust-tracker-1 10 3 || exit 1
37+
./contrib/dev-tools/container/functions/wait_for_container_to_be_healthy.sh torrust-index-1 10 3 || exit 1
38+
39+
# Just to make sure that everything is up and running
40+
docker ps
41+
42+
# Run E2E tests with shared app instance
43+
TORRUST_INDEX_E2E_SHARED=true \
44+
TORRUST_INDEX_CONFIG_TOML_PATH="./share/default/config/index.public.e2e.container.sqlite3.toml" \
45+
TORRUST_INDEX_E2E_DB_CONNECT_URL="sqlite://./storage/index/lib/database/e2e_testing_sqlite3.db?mode=rwc" \
46+
cargo test ||
47+
{
48+
./contrib/dev-tools/container/e2e/sqlite/mode/public/e2e-env-down.sh
49+
exit 1
50+
}
51+
52+
# Stop E2E testing environment
53+
./contrib/dev-tools/container/e2e/sqlite/mode/public/e2e-env-down.sh || exit 1
54+
55+
# TEST USING A PUBLIC TRACKER
56+
echo "Running E2E tests with a private tracker ..."
57+
2858
# Start E2E testing environment
29-
./contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh || exit 1
59+
./contrib/dev-tools/container/e2e/sqlite/mode/private/e2e-env-up.sh || exit 1
3060

3161
# Wait for conatiners to be healthy
3262
./contrib/dev-tools/container/functions/wait_for_container_to_be_healthy.sh torrust-mysql-1 10 3 || exit 1
@@ -38,13 +68,13 @@ docker ps
3868

3969
# Run E2E tests with shared app instance
4070
TORRUST_INDEX_E2E_SHARED=true \
41-
TORRUST_INDEX_CONFIG_TOML_PATH="./share/default/config/index.e2e.container.sqlite3.toml" \
71+
TORRUST_INDEX_CONFIG_TOML_PATH="./share/default/config/index.private.e2e.container.sqlite3.toml" \
4272
TORRUST_INDEX_E2E_DB_CONNECT_URL="sqlite://./storage/index/lib/database/e2e_testing_sqlite3.db?mode=rwc" \
4373
cargo test ||
4474
{
45-
./contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh
75+
./contrib/dev-tools/container/e2e/sqlite/mode/private/e2e-env-down.sh
4676
exit 1
4777
}
4878

4979
# Stop E2E testing environment
50-
./contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh || exit 1
80+
./contrib/dev-tools/container/e2e/sqlite/mode/private/e2e-env-down.sh || exit 1
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Please override the following settings with environmental variable!
2+
# tracker::token -> `TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN`
3+
# auth::secret_key -> `TORRUST_INDEX_CONFIG_OVERRIDE_AUTH__SECRET_KEY`
4+
5+
log_level = "info"
6+
7+
[tracker]
8+
api_url = "http://tracker:1212"
9+
mode = "Private"
10+
url = "http://tracker:7070"
11+
12+
[database]
13+
connect_url = "sqlite:///var/lib/torrust/index/database/e2e_testing_sqlite3.db?mode=rwc"
14+
15+
[mail]
16+
port = 1025
17+
server = "mailcatcher"

share/default/config/index.e2e.container.mysql.toml renamed to share/default/config/index.public.e2e.container.mysql.toml

File renamed without changes.

share/default/config/index.e2e.container.sqlite3.toml renamed to share/default/config/index.public.e2e.container.sqlite3.toml

File renamed without changes.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
announce_interval = 120
2+
db_driver = "Sqlite3"
3+
db_path = "/var/lib/torrust/tracker/database/e2e_testing_sqlite3.db"
4+
external_ip = "0.0.0.0"
5+
inactive_peer_cleanup_interval = 600
6+
log_level = "info"
7+
max_peer_timeout = 900
8+
min_announce_interval = 120
9+
mode = "private"
10+
on_reverse_proxy = false
11+
persistent_torrent_completed_stat = false
12+
remove_peerless_torrents = true
13+
tracker_usage_statistics = true
14+
15+
[[udp_trackers]]
16+
bind_address = "0.0.0.0:6969"
17+
enabled = false
18+
19+
[[http_trackers]]
20+
bind_address = "0.0.0.0:7070"
21+
enabled = false
22+
ssl_cert_path = "/var/lib/torrust/tracker/tls/localhost.crt"
23+
ssl_enabled = false
24+
ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key"
25+
26+
[http_api]
27+
bind_address = "0.0.0.0:1212"
28+
enabled = true
29+
ssl_cert_path = "/var/lib/torrust/tracker/tls/localhost.crt"
30+
ssl_enabled = false
31+
ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key"
32+
33+
[http_api.access_tokens]
34+
admin = "MyAccessToken"
35+
36+
[health_check_api]
37+
bind_address = "127.0.0.1:1313"

0 commit comments

Comments
 (0)