view docker/backend-dev-e2e/Dockerfile @ 3728:b15644cae50d

component AP gateway: JID/node ⟺ AP outbox conversion: - convert a combination of JID and optional pubsub node to AP actor handle (see `getJIDAndNode` for details) and vice versa - the gateway now provides a Pubsub service - retrieve pubsub node and convert it to AP collection, AP pagination is converted to RSM - do the opposite: convert AP collection to pubsub and handle RSM request. Due to ActivityStream collection pagination limitations, some RSM request produce inefficient requests, but caching should be used most of the time in the future and avoid the problem. - set specific name to HTTP Server - new `local_only` setting (`True` by default) to indicate if the gateway can request or not XMPP Pubsub nodes from other servers - disco info now specifies important features such as Pubsub RSM, and nodes metadata ticket 363
author Goffi <goffi@goffi.org>
date Tue, 25 Jan 2022 17:54:06 +0100
parents 09f5ac48ffe3
children 31c84a32c897
line wrap: on
line source

ARG REVISION
FROM libervia/backend:${REVISION:-dev}

LABEL maintainer="Goffi <tmp_dockerfiles@goffi.org>"

USER root

ARG DEBIAN_FRONTEND=noninteractive

RUN mkdir -m 777 /reports && \
    apt-get install -y --no-install-recommends \
    # firefox is needed to test Libervia via selenium
    firefox-esr \
    # VNC/X11 server for visual mode + window manager
    # using openbox as it allows to resize easily when doing manual debugging/tests
    # and it adapts correctly when doing driver.set_window_size
    tigervnc-standalone-server openbox \
    # useful for remote debugging
    telnet net-tools \
    # needed to make Firefox trust system certificates
    # cf. https://askubuntu.com/a/1036637
    p11-kit && \
    ln -fs /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox-esr/libnssckbi.so

# we install pre-generated certificates so we can do tests with valid TLS
COPY --chown=root:root certificates/minica.pem /usr/local/share/ca-certificates/minica.crt
COPY --chown=root:tls-cert certificates/server1.test/cert.pem /usr/share/libervia/certificates/server1.test.pem
COPY --chown=root:tls-cert certificates/server1.test/key.pem /usr/share/libervia/certificates/server1.test-key.pem
RUN update-ca-certificates

COPY --chown=root:root libervia.conf /etc/libervia.conf
COPY --chown=libervia:libervia scripts/entrypoint.sh /home/libervia/entrypoint_e2e.sh

RUN \
    # we install webdriver (needed to control Firefox from Selenium)
    # note: this is not absolutely necessary as long as we use helium because it includes
    # is own webdriver
    python -c 'from urllib.request import urlretrieve;\
    urlretrieve(\
    "https://github.com/mozilla/geckodriver/releases/download/v0.28.0"\
    "/geckodriver-v0.28.0-linux64.tar.gz", "/usr/local/bin/geckodriver.tar.gz")' && \
    cd /usr/local/bin && tar zxf geckodriver.tar.gz && rm -f geckodriver.tar.gz

WORKDIR /home/libervia
USER libervia

RUN \
    # pytest and its plugins
    pip install pytest pytest-timeout pytest-dependency pytest-twisted \
    # needed to test libervia-cli
    sh \
    # needed to test libervia
    helium \
    # needed to check sent emails
    aiosmtpd \
    # useful for debugging
    pudb

RUN ./entrypoint.sh \
    # we create the file sharing component which will autoconnect when backend is started
    li profile create file-sharing -j files.server1.test -p "" --xmpp-password test_e2e -C file-sharing -A && \
    libervia-backend stop

ENV LIBERVIA_TEST_REPORT_DIR=/reports
ENV DISPLAY=:0
USER root
RUN apt-get install -y openbox
USER libervia
EXPOSE 5900

ENTRYPOINT ["/home/libervia/entrypoint_e2e.sh"]