Add tests for the UI

This commit is contained in:
Théophile Diot 2023-01-10 09:22:51 +01:00
parent 65f2bf09b4
commit b1c99e4088
No known key found for this signature in database
GPG Key ID: E752C80DB72BB014
6 changed files with 1434 additions and 0 deletions

41
tests/ui/Dockerfile Normal file
View File

@ -0,0 +1,41 @@
FROM ubuntu:focal
ARG DEBIAN_FRONTEND=noninteractive
RUN echo "===> Installing system dependencies..." && \
BUILD_DEPS="curl unzip" && \
apt-get update && apt-get install --no-install-recommends -y \
python3 python3-pip wget git zip unzip \
libappindicator3-1 libasound2 libdbus-glib-1-2 libxtst6 libxt6 firefox firefox-geckodriver \
$BUILD_DEPS
RUN echo "===> Installing geckodriver for firefox..." && \
GECKODRIVER_VERSION=`curl -i https://github.com/mozilla/geckodriver/releases/latest | grep -Po 'v[0-9]+.[0-9]+.[0-9]+'` && \
wget https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz && \
tar -zxf geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz -C /usr/local/bin && \
chmod +x /usr/local/bin/geckodriver && \
rm geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz
RUN echo "===> Remove build dependencies..." && \
apt-get remove -y $BUILD_DEPS && rm -rf /var/lib/apt/lists/* /var/cache/apt/*
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV PYTHONUNBUFFERED=1
ENV APP_HOME /usr/src/app
WORKDIR /$APP_HOME
COPY requirements.txt $APP_HOME/requirements.txt
RUN pip install -r requirements.txt
COPY main.py $APP_HOME/main.py
COPY test.zip $APP_HOME/
RUN wget https://github.com/bunkerity/bunkerweb-plugins/archive/refs/heads/main.zip && \
unzip main.zip && \
mv bunkerweb-plugins-main/discord . && \
zip -r discord.zip discord && \
rm -rf bunkerweb-plugins-main main.zip
CMD ["python3", "main.py"]

117
tests/ui/docker-compose.yml Normal file
View File

@ -0,0 +1,117 @@
version: "3.5"
services:
mybunker:
# image: bunkerity/bunkerweb:1.4.3
build:
context: ../..
dockerfile: src/bw/Dockerfile
ports:
- 80:8080
- 443:8443
environment:
SERVER_NAME: "www.example.com"
MULTISITE: "yes"
API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24"
USE_BUNKERNET: "no"
USE_BLACKLIST: "no"
DISABLE_DEFAULT_SERVER: "yes"
USE_CLIENT_CACHE: "yes"
USE_GZIP: "yes"
DATASTORE_MEMORY_SIZE: "384m"
www.example.com_USE_UI: "yes"
www.example.com_SERVE_FILES: "no"
www.example.com_USE_REVERSE_PROXY: "yes"
www.example.com_REVERSE_PROXY_URL: "/admin/"
www.example.com_REVERSE_PROXY_HOST: "http://bw-ui:7000"
www.example.com_REVERSE_PROXY_HEADERS: "X-Script-Name /admin"
www.example.com_REVERSE_PROXY_INTERCEPT_ERRORS: "no"
www.example.com_CUSTOM_CONF_MODSEC_CRS_config: 'SecRule REQUEST_FILENAME "@rx /global_config$$" "id:999,ctl:ruleRemoveByTag=platform-pgsql,nolog"'
CUSTOM_CONF_SERVER_HTTP_port-redirect: "port_in_redirect on;"
labels:
- "bunkerweb.INSTANCE"
networks:
bw-universe:
bw-services:
ipv4_address: 192.168.0.2
bw-scheduler:
build:
context: ../..
dockerfile: src/scheduler/Dockerfile
depends_on:
- mybunker
environment:
DOCKER_HOST: "tcp://docker-proxy:2375"
volumes:
- bw-data:/data
networks:
- bw-universe
- net-docker
bw-ui:
# image: bunkerity/bunkerweb-ui:1.4.3
build:
context: ../..
dockerfile: src/ui/Dockerfile
depends_on:
- mybunker
- docker-proxy
environment:
ABSOLUTE_URI: "http://www.example.com:8080/admin/"
ADMIN_USERNAME: "admin"
ADMIN_PASSWORD: "admin"
DOCKER_HOST: "tcp://docker-proxy:2375"
volumes:
- bw-data:/data
networks:
- net-docker
- bw-universe
docker-proxy:
image: tecnativa/docker-socket-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- CONTAINERS=1
networks:
- net-docker
app1:
image: tutum/hello-world
networks:
bw-services:
ipv4_address: 192.168.0.4
ui-tests:
build:
context: .
dockerfile: Dockerfile
environment:
- PYTHONUNBUFFERED=1
extra_hosts:
- "www.example.com:192.168.0.2"
- "app1.example.com:192.168.0.2"
networks:
bw-services:
ipv4_address: 192.168.0.3
volumes:
bw-data:
mariadb:
networks:
bw-universe:
name: bw-universe
ipam:
driver: default
config:
- subnet: 10.20.30.0/24
bw-services:
name: bw-services
ipam:
driver: default
config:
- subnet: 192.168.0.0/24
net-docker:

BIN
tests/ui/geckodriver Executable file

Binary file not shown.

1274
tests/ui/main.py Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
selenium==4.7.2
requests==2.28.1

BIN
tests/ui/test.zip Normal file

Binary file not shown.