use mtt
for integration tests
This commit is contained in:
parent
4b496a1e61
commit
5642f139df
15
.github/workflows/integration-test.yml
vendored
15
.github/workflows/integration-test.yml
vendored
@ -1,15 +0,0 @@
|
|||||||
name: integration-test
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 10
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@master
|
|
||||||
|
|
||||||
- name: integration-test
|
|
||||||
run: ./test/integration-test.sh
|
|
17
.github/workflows/test.yml
vendored
Normal file
17
.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
name: test
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
ENGINE_VERSION: [5.3.0, 5.4.0, 5.5.0, latest]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: test
|
||||||
|
run: docker-compose up --exit-code-from sut
|
@ -18,5 +18,5 @@ read_globals = {
|
|||||||
"unified_inventory", "default",
|
"unified_inventory", "default",
|
||||||
|
|
||||||
-- optional mods
|
-- optional mods
|
||||||
"xban", "QoS"
|
"xban", "QoS", "mtt"
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Mail mod for Minetest (ingame mod)
|
Mail mod for Minetest (ingame mod)
|
||||||
======
|
======
|
||||||
|
|
||||||
![](https://github.com/minetest-mail/mail_mod/workflows/integration-test/badge.svg)
|
![](https://github.com/minetest-mail/mail_mod/workflows/test/badge.svg)
|
||||||
![](https://github.com/minetest-mail/mail_mod/workflows/luacheck/badge.svg)
|
![](https://github.com/minetest-mail/mail_mod/workflows/luacheck/badge.svg)
|
||||||
|
|
||||||
|
|
||||||
|
19
docker-compose.yml
Normal file
19
docker-compose.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
version: "3.6"
|
||||||
|
|
||||||
|
services:
|
||||||
|
sut:
|
||||||
|
build:
|
||||||
|
context: ./test
|
||||||
|
args:
|
||||||
|
ENGINE_VERSION: ${ENGINE_VERSION:-5.5.0}
|
||||||
|
user: root
|
||||||
|
volumes:
|
||||||
|
- "./:/root/.minetest/worlds/world/worldmods/mail/"
|
||||||
|
- "world_data:/root/.minetest/worlds/world"
|
||||||
|
- "./test/world.mt:/root/.minetest/worlds/world/world.mt"
|
||||||
|
- "./test/minetest.conf:/minetest.conf"
|
||||||
|
ports:
|
||||||
|
- "30000:30000/udp"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
world_data: {}
|
4
init.lua
4
init.lua
@ -64,3 +64,7 @@ end
|
|||||||
|
|
||||||
-- migrate storage
|
-- migrate storage
|
||||||
mail.migrate()
|
mail.migrate()
|
||||||
|
|
||||||
|
if minetest.get_modpath("mtt") then
|
||||||
|
dofile(MP .. "/mtt.lua")
|
||||||
|
end
|
4
mod.conf
4
mod.conf
@ -1,3 +1,3 @@
|
|||||||
name = mail
|
name = mail
|
||||||
description = mail mod
|
description = ingame mail-system
|
||||||
optional_depends = unified_inventory,default,xban2,qos
|
optional_depends = unified_inventory,default,xban2,qos,mtt
|
||||||
|
10
mtt.lua
Normal file
10
mtt.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
mtt.register("send mail", function(callback)
|
||||||
|
-- send a mail
|
||||||
|
mail.send("player1", "player2", "something", "blah")
|
||||||
|
|
||||||
|
-- check the receivers inbox
|
||||||
|
local list2 = mail.getMessages("player2")
|
||||||
|
assert(list2 ~= nil and #list2 > 0)
|
||||||
|
callback()
|
||||||
|
end)
|
10
test/Dockerfile
Normal file
10
test/Dockerfile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
ARG ENGINE_VERSION=5.5.0
|
||||||
|
FROM registry.gitlab.com/minetest/minetest/server:${ENGINE_VERSION}
|
||||||
|
|
||||||
|
USER root
|
||||||
|
RUN apk add git &&\
|
||||||
|
mkdir -p /root/.minetest/worlds/world/worldmods/ &&\
|
||||||
|
git clone https://github.com/BuckarooBanzay/mtt /root/.minetest/worlds/world/worldmods/mtt
|
||||||
|
|
||||||
|
|
||||||
|
ENTRYPOINT minetestserver --config /minetest.conf
|
BIN
test/auth.sqlite
BIN
test/auth.sqlite
Binary file not shown.
@ -1,4 +0,0 @@
|
|||||||
User,Password
|
|
||||||
-----------------
|
|
||||||
test,enter
|
|
||||||
test2,enter
|
|
@ -1,79 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
MINETEST_VERSION=5.2.0
|
|
||||||
|
|
||||||
# prerequisites
|
|
||||||
jq --version || exit 1
|
|
||||||
curl --version || exit 1
|
|
||||||
|
|
||||||
# ensure proper current directory
|
|
||||||
CWD=$(dirname $0)
|
|
||||||
cd ${CWD}
|
|
||||||
|
|
||||||
# setup
|
|
||||||
unset use_proxy
|
|
||||||
unset http_proxy
|
|
||||||
unset https_proxy
|
|
||||||
unset HTTP_PROXY
|
|
||||||
unset HTTPS_PROXY
|
|
||||||
|
|
||||||
# run mail-server
|
|
||||||
docker pull minetestmail/mail
|
|
||||||
docker run --name mail --rm \
|
|
||||||
-e WEBMAILKEY=myserverkey \
|
|
||||||
-e WEBMAIL_DEBUG=true \
|
|
||||||
--network host \
|
|
||||||
minetestmail/mail &
|
|
||||||
|
|
||||||
# wait for startup
|
|
||||||
bash -c 'while !</dev/tcp/localhost/8080; do sleep 1; done;'
|
|
||||||
|
|
||||||
# start minetest with mail mod
|
|
||||||
docker pull registry.gitlab.com/minetest/minetest/server:${MINETEST_VERSION}
|
|
||||||
docker run --rm --name minetest \
|
|
||||||
-u root:root \
|
|
||||||
-v $(pwd)/minetest.conf:/etc/minetest/minetest.conf:ro \
|
|
||||||
-v $(pwd)/world.mt:/root/.minetest/worlds/world/world.mt \
|
|
||||||
-v $(pwd)/auth.sqlite:/root/.minetest/worlds/world/auth.sqlite \
|
|
||||||
-v $(pwd)/../:/root/.minetest/worlds/world/worldmods/mail \
|
|
||||||
-v $(pwd)/test_mod:/root/.minetest/worlds/world/worldmods/mail_test \
|
|
||||||
-e use_proxy=false \
|
|
||||||
-e http_proxy= \
|
|
||||||
-e HTTP_PROXY= \
|
|
||||||
--network host \
|
|
||||||
registry.gitlab.com/minetest/minetest/server:${MINETEST_VERSION} &
|
|
||||||
|
|
||||||
# prepare cleanup
|
|
||||||
function cleanup {
|
|
||||||
# cleanup
|
|
||||||
docker stop mail
|
|
||||||
docker stop minetest
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup EXIT
|
|
||||||
|
|
||||||
# wait for startup
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
# Execute calls against mail-server
|
|
||||||
|
|
||||||
# login
|
|
||||||
LOGIN_DATA='{"username":"test","password":"enter"}'
|
|
||||||
RES=$(curl --data "${LOGIN_DATA}" -H "Content-Type: application/json" "http://127.0.0.1:8080/api/login")
|
|
||||||
echo Login response: $RES
|
|
||||||
SUCCESS=$(echo $RES | jq -r .success)
|
|
||||||
TOKEN=$(echo $RES | jq -r .token)
|
|
||||||
|
|
||||||
# login succeeded
|
|
||||||
test "$SUCCESS" == "true" || exit 1
|
|
||||||
# token extracted
|
|
||||||
test -n "$TOKEN" || exit 1
|
|
||||||
|
|
||||||
# fetch mails
|
|
||||||
RES=$(curl -H "Authorization: ${TOKEN}" "http://127.0.0.1:8080/api/inbox")
|
|
||||||
echo Mailbox: ${RES}
|
|
||||||
|
|
||||||
# inbox count is 1
|
|
||||||
test "$(echo $RES | jq '. | length')" == "1" || exit 1
|
|
||||||
|
|
||||||
echo "Test complete!"
|
|
@ -1,4 +1,3 @@
|
|||||||
secure.http_mods = mail
|
default_game = minetest_game
|
||||||
webmail.url = http://localhost:8080
|
mg_name = v7
|
||||||
webmail.key = myserverkey
|
mtt_enable = true
|
||||||
webmail.disallow_banned_players = true
|
|
@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
docker run --rm -it \
|
|
||||||
-u root:root \
|
|
||||||
-v $(pwd)/minetest.conf:/etc/minetest/minetest.conf \
|
|
||||||
-v $(pwd)/auth.sqlite:/root/.minetest/worlds/world/auth.sqlite \
|
|
||||||
-v $(pwd)/../:/root/.minetest/worlds/world/worldmods/mail_mod \
|
|
||||||
-v mail_world:/root/.minetest/worlds/world/ \
|
|
||||||
--network host \
|
|
||||||
registry.gitlab.com/minetest/minetest/server:5.2.0
|
|
@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
minetest.log("warning", "[TEST] integration-test enabled!")
|
|
||||||
|
|
||||||
minetest.register_on_mods_loaded(function()
|
|
||||||
minetest.log("warning", "[TEST] starting tests")
|
|
||||||
mail.send("spammer", "test", "subject", "body");
|
|
||||||
end)
|
|
@ -1,2 +0,0 @@
|
|||||||
name = mail_test
|
|
||||||
depends = mail
|
|
@ -1,6 +1,9 @@
|
|||||||
enable_damage = true
|
enable_damage = false
|
||||||
creative_mode = false
|
creative_mode = true
|
||||||
gameid = minetest
|
mod_storage_backend = sqlite3
|
||||||
auth_backend = sqlite3
|
auth_backend = sqlite3
|
||||||
backend = sqlite3
|
player_backend = dummy
|
||||||
player_backend = sqlite3
|
backend = dummy
|
||||||
|
gameid = minetest
|
||||||
|
world_name = mapblock_lib
|
||||||
|
server_announce = false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user