ID "import" (1, 1)
PATH "./make-test-python.nix" (1, 8)
PATH_END " " (1, 30)
( "(" (1, 31)
{ "{" (1, 32)
ID "pkgs" (1, 34)
, "," (1, 38)
ELLIPSIS "..." (1, 40)
} "}" (1, 44)
: ":" (1, 45)
{ "{" (1, 47)
ID "name" (2, 3)
= "=" (2, 8)
" "\"" (2, 10)
STR "nginx-sandbox" (2, 11)
" "\"" (2, 24)
; ";" (2, 25)
ID "meta" (3, 3)
= "=" (3, 8)
WITH "with" (3, 10)
ID "pkgs" (3, 15)
. "." (3, 19)
ID "lib" (3, 20)
. "." (3, 23)
ID "maintainers" (3, 24)
; ";" (3, 35)
{ "{" (3, 37)
ID "maintainers" (4, 5)
= "=" (4, 17)
[ "[" (4, 19)
ID "izorkin" (4, 21)
] "]" (4, 29)
; ";" (4, 30)
} "}" (5, 3)
; ";" (5, 4)
ID "nodes" (9, 3)
. "." (9, 8)
ID "machine" (9, 9)
= "=" (9, 17)
{ "{" (9, 19)
ID "pkgs" (9, 21)
, "," (9, 25)
ELLIPSIS "..." (9, 27)
} "}" (9, 31)
: ":" (9, 32)
{ "{" (9, 34)
ID "nixpkgs" (10, 5)
. "." (10, 12)
ID "overlays" (10, 13)
= "=" (10, 22)
[ "[" (10, 24)
( "(" (11, 7)
ID "self" (11, 8)
: ":" (11, 12)
ID "super" (11, 14)
: ":" (11, 19)
{ "{" (11, 21)
ID "nginx-lua" (12, 9)
= "=" (12, 19)
ID "super" (12, 21)
. "." (12, 26)
ID "nginx" (12, 27)
. "." (12, 32)
ID "override" (12, 33)
{ "{" (12, 42)
ID "modules" (13, 11)
= "=" (13, 19)
[ "[" (13, 21)
ID "pkgs" (14, 13)
. "." (14, 17)
ID "nginxModules" (14, 18)
. "." (14, 30)
ID "lua" (14, 31)
] "]" (15, 11)
; ";" (15, 12)
} "}" (16, 9)
; ";" (16, 10)
} "}" (17, 7)
) ")" (17, 8)
] "]" (18, 5)
; ";" (18, 6)
ID "services" (19, 5)
. "." (19, 13)
ID "nginx" (19, 14)
. "." (19, 19)
ID "enable" (19, 20)
= "=" (19, 27)
ID "true" (19, 29)
; ";" (19, 33)
ID "services" (20, 5)
. "." (20, 13)
ID "nginx" (20, 14)
. "." (20, 19)
ID "package" (20, 20)
= "=" (20, 28)
ID "pkgs" (20, 30)
. "." (20, 34)
ID "nginx-lua" (20, 35)
; ";" (20, 44)
ID "services" (21, 5)
. "." (21, 13)
ID "nginx" (21, 14)
. "." (21, 19)
ID "virtualHosts" (21, 20)
. "." (21, 32)
ID "localhost" (21, 33)
= "=" (21, 43)
{ "{" (21, 45)
ID "extraConfig" (22, 7)
= "=" (22, 19)
IND_STRING_OPEN "''\n" (22, 21)
IND_STR "        location /test1-write {\n          content_by_lua_block {\n            local create = os.execute(" (23, 1)
IND_STR "'" (25, 39)
DOLLAR_CURLY "${" (25, 40)
ID "pkgs" (25, 42)
. "." (25, 46)
ID "coreutils" (25, 47)
} "}" (25, 56)
IND_STR "/bin/mkdir /tmp/test1-read')\n            local create = os.execute(" (25, 57)
IND_STR "'" (26, 39)
DOLLAR_CURLY "${" (26, 40)
ID "pkgs" (26, 42)
. "." (26, 46)
ID "coreutils" (26, 47)
} "}" (26, 56)
IND_STR "/bin/touch /tmp/test1-read/foo.txt')\n            local echo = os.execute(" (26, 57)
IND_STR "'" (27, 37)
DOLLAR_CURLY "${" (27, 38)
ID "pkgs" (27, 40)
. "." (27, 44)
ID "coreutils" (27, 45)
} "}" (27, 54)
IND_STR "/bin/echo worked > /tmp/test1-read/foo.txt')\n          }\n        }\n        location /test1-read {\n          root /tmp;\n        }\n        location /test2-write {\n          content_by_lua_block {\n            local create = os.execute(" (27, 55)
IND_STR "'" (35, 39)
DOLLAR_CURLY "${" (35, 40)
ID "pkgs" (35, 42)
. "." (35, 46)
ID "coreutils" (35, 47)
} "}" (35, 56)
IND_STR "/bin/mkdir /var/web/test2-read')\n            local create = os.execute(" (35, 57)
IND_STR "'" (36, 39)
DOLLAR_CURLY "${" (36, 40)
ID "pkgs" (36, 42)
. "." (36, 46)
ID "coreutils" (36, 47)
} "}" (36, 56)
IND_STR "/bin/touch /var/web/test2-read/bar.txt')\n            local echo = os.execute(" (36, 57)
IND_STR "'" (37, 37)
DOLLAR_CURLY "${" (37, 38)
ID "pkgs" (37, 40)
. "." (37, 44)
ID "coreutils" (37, 45)
} "}" (37, 54)
IND_STR "/bin/echo error-worked > /var/web/test2-read/bar.txt')\n          }\n        }\n        location /test2-read {\n          root /var/web;\n        }\n      " (37, 55)
IND_STRING_CLOSE "''" (43, 7)
; ";" (43, 9)
} "}" (44, 5)
; ";" (44, 6)
ID "users" (45, 5)
. "." (45, 10)
ID "users" (45, 11)
. "." (45, 16)
ID "foo" (45, 17)
. "." (45, 20)
ID "isNormalUser" (45, 21)
= "=" (45, 34)
ID "true" (45, 36)
; ";" (45, 40)
} "}" (46, 3)
; ";" (46, 4)
ID "testScript" (48, 3)
= "=" (48, 14)
IND_STRING_OPEN "''\n" (48, 16)
IND_STR "    machine.wait_for_unit(\"nginx\")\n    machine.wait_for_open_port(80)\n\n    # Checking write in temporary folder\n    machine.succeed(\"$(curl -vvv http://localhost/test1-write)\")\n    machine.succeed('test \"$(curl -fvvv http://localhost/test1-read/foo.txt)\" = worked')\n\n    # Checking write in protected folder. In sandbox mode for the nginx service, the folder /var/web is mounted\n    # in read-only mode.\n    machine.succeed(\"mkdir -p /var/web\")\n    machine.succeed(\"chown nginx:nginx /var/web\")\n    machine.succeed(\"$(curl -vvv http://localhost/test2-write)\")\n    assert \"404 Not Found\" in machine.succeed(\n        \"curl -vvv -s http://localhost/test2-read/bar.txt\"\n    )\n  " (49, 1)
IND_STRING_CLOSE "''" (64, 3)
; ";" (64, 5)
} "}" (65, 1)
) ")" (65, 2)