Browse Source

test: nginx.conf customizations

Nicolas Duchon 1 year ago
parent
commit
35c1d16ff8

+ 1 - 1
Dockerfile.alpine

@@ -17,7 +17,7 @@ ENV NGINX_PROXY_VERSION=${NGINX_PROXY_VERSION} \
 RUN apk add --no-cache --virtual .run-deps bash openssl
 
 # Configure Nginx
-RUN sed -i 's/worker_connections.*;$/worker_connections   10240;/' /etc/nginx/nginx.conf \
+RUN sed -i 's/worker_connections.*;$/worker_connections  10240;/' /etc/nginx/nginx.conf \
    && sed -i -e '/^\}$/{s//\}\nworker_rlimit_nofile 20480;/;:a' -e '$!N;$!ba' -e '}' /etc/nginx/nginx.conf \
    && mkdir -p '/etc/nginx/dhparam' \
    && mkdir -p '/etc/nginx/certs'

+ 30 - 4
test/conftest.py

@@ -84,10 +84,17 @@ class requests_for_docker(object):
 
     def get_conf(self):
         """
-        Return the nginx config file
+        Return the generated nginx config file
         """
         nginx_proxy_containers = self.get_nginx_proxy_containers()
         return get_nginx_conf_from_container(nginx_proxy_containers[0])
+    
+    def get_toplevel_conf(self):
+        """
+        Return the top level nginx config file
+        """
+        nginx_proxy_containers = self.get_nginx_proxy_containers()
+        return get_nginx_toplevel_conf_from_container(nginx_proxy_containers[0])
 
     def get_ip(self) -> str:
         """
@@ -288,13 +295,32 @@ def remove_all_containers():
 
 def get_nginx_conf_from_container(container):
     """
-    return the full nginx config from a container
+    return the nginx /etc/nginx/conf.d/default.conf file content from a container
+    """
+    import tarfile
+    from io import BytesIO
+
+    strm_generator, stat = container.get_archive('/etc/nginx/conf.d/default.conf')
+    strm_fileobj = BytesIO(b"".join(strm_generator))
+
+    with tarfile.open(fileobj=strm_fileobj) as tf:
+        conffile = tf.extractfile('default.conf')
+        return conffile.read()
+   
+
+def get_nginx_toplevel_conf_from_container(container):
+    """
+    return the nginx /etc/nginx/nginx.conf file content from a container
     """
+    import tarfile
     from io import BytesIO
 
-    _, strm_generator = container.exec_run("nginx -T", stream = True)
+    strm_generator, stat = container.get_archive('/etc/nginx/nginx.conf')
     strm_fileobj = BytesIO(b"".join(strm_generator))
-    return strm_fileobj.read()
+
+    with tarfile.open(fileobj=strm_fileobj) as tf:
+        conffile = tf.extractfile('nginx.conf')
+        return conffile.read()
 
 
 def docker_compose_up(compose_file='docker-compose.yml'):

+ 8 - 0
test/test_nginx-conf/test_nginx-conf.py

@@ -0,0 +1,8 @@
+import pytest
+import re
+
+
+def test_nginx_toplevel_conf_contains_customizations(docker_compose, nginxproxy):
+    conf = nginxproxy.get_toplevel_conf().decode('ASCII')
+    assert re.search(r"^ +worker_connections  10240;$", conf)
+    assert re.search(r"^worker_rlimit_nofile 20480;$", conf)

+ 7 - 0
test/test_nginx-conf/test_nginx-conf.yml

@@ -0,0 +1,7 @@
+version: "2"
+
+services:
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro