diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2024-08-12 11:33:52 +0200 |
|---|---|---|
| committer | Jeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com> | 2024-08-12 11:50:48 +0200 |
| commit | 05c180e7b28c4659b55e5bf1ebc4847e5b62230e (patch) | |
| tree | a3e33763a46076bcd6542899bcfce075d381be23 /util/util_test.go | |
| parent | f3c04d56ca67c2ff0b08bf75cc51ea8be14c84b9 (diff) | |
Util: Add a function to calculate the gateway
Diffstat (limited to 'util/util_test.go')
| -rw-r--r-- | util/util_test.go | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/util/util_test.go b/util/util_test.go new file mode 100644 index 0000000..0f4888d --- /dev/null +++ b/util/util_test.go @@ -0,0 +1,82 @@ +package util + +import ( + "testing" + + "github.com/eduvpn/eduvpn-common/internal/test" +) + +func TestCalculateGateway(t *testing.T) { + cases := []struct { + in string + want string + err string + }{ + // normal cases + { + in: "10.10.10.5/24", + want: "10.10.10.1", + err: "", + }, + { + in: "10.10.10.130/25", + want: "10.10.10.129", + err: "", + }, + { + in: "fd42::5/112", + want: "fd42::1", + err: "", + }, + { + in: "5502:df9::/64", + want: "5502:df9::1", + err: "", + }, + // unrealistic scenario but we have to handle these! + { + in: "5502:df9::0/128", + want: "", + err: "IP network does not contain incremented IP: 5502:df9::1", + }, + { + in: "5502:df9::ffff/128", + want: "", + err: "IP network does not contain incremented IP: 5502:df9::1:0", + }, + { + in: "10.0.0.0/32", + want: "", + err: "IP network does not contain incremented IP: 10.0.0.1", + }, + { + in: "10.0.0.255/32", + want: "", + err: "IP network does not contain incremented IP: 10.0.1.0", + }, + // parsing errors + { + in: "10.0.0.1", + want: "", + err: "An internal error occurred. The cause of the error is: invalid CIDR address: 10.0.0.1.", + }, + { + in: "bla", + want: "", + err: "An internal error occurred. The cause of the error is: invalid CIDR address: bla.", + }, + { + in: "5502:df9::ffff", + want: "", + err: "An internal error occurred. The cause of the error is: invalid CIDR address: 5502:df9::ffff.", + }, + } + + for _, c := range cases { + got, err := CalculateGateway(c.in) + test.AssertError(t, err, c.err) + if got != c.want { + t.Fatalf("got: %v not equal to want: %v", got, c.want) + } + } +} |
