From c79d1ad1a68d6096233552977dc93b1c730fe540 Mon Sep 17 00:00:00 2001 From: Chai Feng Date: Thu, 17 Oct 2019 17:01:27 +0200 Subject: [PATCH] Add test cases for ufw-docker--allow --- test/ufw-docker.test.sh | 58 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/test/ufw-docker.test.sh b/test/ufw-docker.test.sh index be4549b..03b402e 100755 --- a/test/ufw-docker.test.sh +++ b/test/ufw-docker.test.sh @@ -208,14 +208,70 @@ test-ASSERT-FAIL-ufw-docker-delete-only-supports-allowed-rules-assert() { die "\"delete\" command only support removing allowed rules" } -test-ufw-docker--allow-instance-not-found() { + +function setup-ufw-docker--allow() { @load_function "$working_dir/../ufw-docker" ufw-docker--allow + @mocktrue docker inspect instance-name + @mock docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{"\n"}}{{end}}' instance-name === @stdout 172.18.0.3 + @mock docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}}{{with $conf}}{{$p}}{{"\n"}}{{end}}{{end}}' instance-name === @stdout 5000/tcp 8080/tcp 5353/udp +} + + +test-ufw-docker--allow-instance-not-found() { + setup-ufw-docker--allow + @mockfalse docker inspect invalid-instance @mockfalse die "Docker instance \"invalid-instance\" doesn't exist." ufw-docker--allow invalid-instance 80 tcp } test-ufw-docker--allow-instance-not-found-assert() { + @do-nothing @fail } + + +test-ufw-docker--allow-instance-but-the-port-not-match() { + setup-ufw-docker--allow + + ufw-docker--allow instance-name 80 tcp +} +test-ufw-docker--allow-instance-but-the-port-not-match-assert() { + err 'Fail to add rule(s), cannot find the published port 80/tcp of instance "instance-name" or cannot update outdated rule(s).' + @fail +} + + +test-ufw-docker--allow-instance-and-match-the-port() { + setup-ufw-docker--allow + + ufw-docker--allow instance-name 5000 tcp +} +test-ufw-docker--allow-instance-and-match-the-port-assert() { + ufw-docker--add-rule instance-name 172.18.0.3 5000 tcp +} + + +test-ufw-docker--allow-instance-all-published-port() { + setup-ufw-docker--allow + + ufw-docker--allow instance-name "" "" +} +test-ufw-docker--allow-instance-all-published-port-assert() { + ufw-docker--add-rule instance-name 172.18.0.3 5000 tcp + ufw-docker--add-rule instance-name 172.18.0.3 8080 tcp + ufw-docker--add-rule instance-name 172.18.0.3 5353 udp +} + + +test-ufw-docker--allow-instance-all-published-tcp-port() { + setup-ufw-docker--allow + + ufw-docker--allow instance-name "" tcp +} +test-ufw-docker--allow-instance-all-published-tcp-port-assert() { + ufw-docker--add-rule instance-name 172.18.0.3 5000 tcp + ufw-docker--add-rule instance-name 172.18.0.3 8080 tcp + ufw-docker--add-rule instance-name 172.18.0.3 5353 udp # FIXME +}