Basic in memory implementation of network Manager
diff --git a/core/vpn/ip_manager_test.go b/core/vpn/ip_manager_test.go
new file mode 100644
index 0000000..3a09569
--- /dev/null
+++ b/core/vpn/ip_manager_test.go
@@ -0,0 +1,52 @@
+package vpn
+
+import (
+ "log"
+ "testing"
+
+ "github.com/giolekva/pcloud/core/vpn/types"
+ "inet.af/netaddr"
+)
+
+func TestNewGet(t *testing.T) {
+ m := NewSequentialIPManager(netaddr.MustParseIP("10.0.0.1"))
+ a := types.NewPrivateKey()
+ b := types.NewPrivateKey()
+ ipA, err := m.New(a.Public())
+ if err != nil {
+ log.Fatal(err)
+ }
+ if ipA.String() != "10.0.0.1" {
+ t.Fatalf("Expected 10.0.0.1 Got: %s", ipA.String())
+ }
+ ipA, err = m.Get(a.Public())
+ if err != nil {
+ log.Fatal(err)
+ }
+ if ipA.String() != "10.0.0.1" {
+ t.Fatalf("Expected 10.0.0.1 Got: %s", ipA.String())
+ }
+ ipB, err := m.New(b.Public())
+ if err != nil {
+ log.Fatal(err)
+ }
+ if ipB.String() != "10.0.0.2" {
+ t.Fatalf("Expected 10.0.0.2 Got: %s", ipB.String())
+ }
+ ipB, err = m.Get(b.Public())
+ if err != nil {
+ log.Fatal(err)
+ }
+ if ipB.String() != "10.0.0.2" {
+ t.Fatalf("Expected 10.0.0.2 Got: %s", ipB.String())
+ }
+
+}
+
+func TestGetNonExistentPublicKey(t *testing.T) {
+ m := NewSequentialIPManager(netaddr.MustParseIP("10.0.0.1"))
+ a := types.NewPrivateKey()
+ if _, err := m.Get(a.Public()); err == nil {
+ t.Fatal("Returned IP for non existent public key")
+ }
+}