#!/bin/sh . ./testlib.sh echo [STEP] Initialize one node tinc foo init foo test "$(tinc foo get Name)" = "foo" echo [STEP] Test case sensitivity tinc foo set Mode switch test "$(tinc foo get Mode)" = "switch" test "$(tinc foo get mode)" = "switch" tinc foo set mode router test "$(tinc foo get Mode)" = "router" test "$(tinc foo get mode)" = "router" tinc foo set Mode Switch test "$(tinc foo get Mode)" = "Switch" echo [STEP] Test deletion expect_code "$EXIT_FAILURE" tinc foo del Mode hub tinc foo del Mode switch test -z "$(tinc foo get Mode)" echo [STEP] There can only be one Mode variable tinc foo add Mode switch tinc foo add Mode hub test "$(tinc foo get Mode)" = "hub" echo [STEP] Test addition/deletion of multivalued variables tinc foo add Subnet 1.1.1.1 tinc foo add Subnet 2.2.2.2 tinc foo add Subnet 2.2.2.2 tinc foo add Subnet 3.3.3.3 test "$(tinc foo get Subnet | rm_cr)" = "1.1.1.1 2.2.2.2 3.3.3.3" tinc foo del Subnet 2.2.2.2 test "$(tinc foo get Subnet | rm_cr)" = "1.1.1.1 3.3.3.3" tinc foo del Subnet test -z "$(tinc foo get Subnet)" echo [STEP] We should not be able to get/set server variables using node.variable syntax test -z "$(tinc foo get foo.Name)" expect_code "$EXIT_FAILURE" tinc foo set foo.Name bar echo [STEP] Test getting/setting host variables for other nodes touch "$DIR_FOO/hosts/bar" tinc foo add bar.PMTU 1 tinc foo add bar.PMTU 2 test "$(tinc foo get bar.PMTU)" = "2" tinc foo add bar.Subnet 1.1.1.1 tinc foo add bar.Subnet 2.2.2.2 tinc foo add bar.Subnet 2.2.2.2 tinc foo add bar.Subnet 3.3.3.3 test "$(tinc foo get bar.Subnet | rm_cr)" = "1.1.1.1 2.2.2.2 3.3.3.3" tinc foo del bar.Subnet 2.2.2.2 test "$(tinc foo get bar.Subnet | rm_cr)" = "1.1.1.1 3.3.3.3" tinc foo del bar.Subnet test -z "$(tinc foo get bar.Subnet)" echo [STEP] We should not be able to get/set for nodes with invalid names touch "$DIR_FOO/hosts/qu-ux" expect_code "$EXIT_FAILURE" tinc foo set qu-ux.Subnet 1.1.1.1 echo [STEP] We should not be able to set obsolete variables unless forced expect_code "$EXIT_FAILURE" tinc foo set PrivateKey 12345 tinc foo --force set PrivateKey 12345 test "$(tinc foo get PrivateKey)" = "12345" tinc foo del PrivateKey test -z "$(tinc foo get PrivateKey)" echo [STEP] We should not be able to set/add malformed Subnets expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5: expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:::6 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:6:7:8:9 expect_code "$EXIT_FAILURE" tinc foo add Subnet 256.256.256.256 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:6:7:8.123 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:6:7:1.2.3.4 expect_code "$EXIT_FAILURE" tinc foo add Subnet a:b:c:d:e:f:g:h expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1.1/0 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1.1/-1 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1.1/33 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1::/0 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1::/-1 expect_code "$EXIT_FAILURE" tinc foo add Subnet 1::/129 expect_code "$EXIT_FAILURE" tinc foo add Subnet :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: test -z "$(tinc foo get Subnet)"