Explorar el Código

test(user): write test cases for ip allocator

Mustafa Arici hace 8 años
padre
commit
d9b2c0ea1b
Se han modificado 2 ficheros con 53 adiciones y 14 borrados
  1. 49 10
      user_test.go
  2. 4 4
      vpn_test.go

+ 49 - 10
user_test.go

@@ -2,6 +2,7 @@ package ovpm_test
 
 import (
 	"fmt"
+	"net"
 	"testing"
 
 	"github.com/Sirupsen/logrus"
@@ -22,7 +23,7 @@ func TestCreateNewUser(t *testing.T) {
 	noGW := false
 
 	// Test:
-	user, err := ovpm.CreateNewUser(username, password, noGW)
+	user, err := ovpm.CreateNewUser(username, password, noGW, 0)
 	if err != nil {
 		t.Fatalf("user can not be created: %v", err)
 	}
@@ -68,7 +69,7 @@ func TestCreateNewUser(t *testing.T) {
 
 	// Is NoGW attr working properly?
 	noGW = true
-	user, err = ovpm.CreateNewUser(username, password, noGW)
+	user, err = ovpm.CreateNewUser(username, password, noGW, 0)
 	if err != nil {
 		t.Fatalf("user can not be created: %v", err)
 	}
@@ -90,7 +91,7 @@ func TestUserUpdate(t *testing.T) {
 	noGW := false
 
 	// Test:
-	user, err := ovpm.CreateNewUser(username, password, noGW)
+	user, err := ovpm.CreateNewUser(username, password, noGW, 0)
 	if err != nil {
 		t.Fatalf("user can not be created: %v", err)
 	}
@@ -107,7 +108,7 @@ func TestUserUpdate(t *testing.T) {
 	}
 
 	for _, tt := range updatetests {
-		err := user.Update(tt.password, tt.noGW)
+		err := user.Update(tt.password, tt.noGW, 0)
 		if (err == nil) != tt.ok {
 			t.Errorf("user is expected to be able to update but it gave us this error instead: %v", err)
 		}
@@ -123,7 +124,7 @@ func TestUserPasswordCorrect(t *testing.T) {
 
 	// Prepare:
 	initialPassword := "g00dp@ssW0rd9"
-	user, _ := ovpm.CreateNewUser("testUser", initialPassword, false)
+	user, _ := ovpm.CreateNewUser("testUser", initialPassword, false, 0)
 
 	// Test:
 	// Is user created with the correct password?
@@ -141,7 +142,7 @@ func TestUserPasswordReset(t *testing.T) {
 
 	// Prepare:
 	initialPassword := "g00dp@ssW0rd9"
-	user, _ := ovpm.CreateNewUser("testUser", initialPassword, false)
+	user, _ := ovpm.CreateNewUser("testUser", initialPassword, false, 0)
 
 	// Test:
 
@@ -169,7 +170,7 @@ func TestUserDelete(t *testing.T) {
 
 	// Prepare:
 	username := "testUser"
-	user, _ := ovpm.CreateNewUser(username, "1234", false)
+	user, _ := ovpm.CreateNewUser(username, "1234", false, 0)
 
 	// Test:
 
@@ -208,7 +209,7 @@ func TestUserGet(t *testing.T) {
 
 	// Prepare:
 	username := "testUser"
-	user, _ := ovpm.CreateNewUser(username, "1234", false)
+	user, _ := ovpm.CreateNewUser(username, "1234", false, 0)
 
 	// Test:
 	// Is user fetchable?
@@ -237,7 +238,7 @@ func TestUserGetAll(t *testing.T) {
 	for i := 0; i < count; i++ {
 		username := fmt.Sprintf("user%d", i)
 		password := fmt.Sprintf("password%d", i)
-		user, _ := ovpm.CreateNewUser(username, password, false)
+		user, _ := ovpm.CreateNewUser(username, password, false, 0)
 		users = append(users, user)
 	}
 
@@ -271,7 +272,7 @@ func TestUserRenew(t *testing.T) {
 	ovpm.Init("localhost", "")
 
 	// Prepare:
-	user, _ := ovpm.CreateNewUser("user", "1234", false)
+	user, _ := ovpm.CreateNewUser("user", "1234", false, 0)
 
 	// Test:
 	// Re initialize the server.
@@ -286,6 +287,44 @@ func TestUserRenew(t *testing.T) {
 	}
 }
 
+func TestUserIPAllocator(t *testing.T) {
+	// Initialize:
+	ovpm.Testing = true
+	ovpm.SetupDB("sqlite3", ":memory:")
+	defer ovpm.CeaseDB()
+	ovpm.Init("localhost", "")
+
+	// Prepare:
+
+	// Test:
+	var iptests = []struct {
+		username   string
+		gw         bool
+		hostid     uint32
+		expectedIP string
+		pass       bool
+	}{
+		{"user1", false, 0, "10.9.0.2/24", true},
+		{"user2", false, 0, "10.9.0.3/24", true},
+		{"user3", true, 0, "10.9.0.4/24", true},
+		{"user4", true, ovpm.IP2HostID(net.ParseIP("10.9.0.5").To4()), "10.9.0.5/24", true},
+		{"user5", true, ovpm.IP2HostID(net.ParseIP("192.168.1.1").To4()), "10.9.0.6/24", false},
+		{"user6", true, ovpm.IP2HostID(net.ParseIP("10.9.0.7").To4()), "10.9.0.7/24", true},
+		{"user7", true, 0, "10.9.0.8/24", true},
+	}
+	for _, tt := range iptests {
+		user, err := ovpm.CreateNewUser(tt.username, "pass", tt.gw, tt.hostid)
+		if (err == nil) == !tt.pass {
+			t.Fatalf("expected pass %t %s", tt.pass, err)
+		}
+		if user != nil {
+			if user.GetIPNet() != tt.expectedIP {
+				t.Fatalf("%s is expected to be %s", user.GetIPNet(), tt.expectedIP)
+			}
+		}
+	}
+}
+
 // areUsersEqual compares given users and returns true if they are the same.
 func areUsersEqual(user1, user2 *ovpm.DBUser) bool {
 	if user1.Cert != user2.Cert {

+ 4 - 4
vpn_test.go

@@ -62,7 +62,7 @@ func TestVPNDeinit(t *testing.T) {
 	// Prepare:
 	// Initialize the server.
 	Init("localhost", "")
-	u, err := CreateNewUser("user", "p", false)
+	u, err := CreateNewUser("user", "p", false, 0)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -175,7 +175,7 @@ func TestVPNDumpsClientConfig(t *testing.T) {
 	Init("localhost", "")
 
 	// Prepare:
-	user, _ := CreateNewUser("user", "password", false)
+	user, _ := CreateNewUser("user", "password", false, 0)
 
 	// Test:
 	clientConfigBlob, err := DumpsClientConfig(user.GetUsername())
@@ -198,7 +198,7 @@ func TestVPNDumpClientConfig(t *testing.T) {
 
 	// Prepare:
 	noGW := false
-	user, err := CreateNewUser("user", "password", noGW)
+	user, err := CreateNewUser("user", "password", noGW, 0)
 	if err != nil {
 		t.Fatalf("can not create user: %v", err)
 	}
@@ -226,7 +226,7 @@ func TestVPNDumpClientConfig(t *testing.T) {
 	user.Delete()
 
 	noGW = true
-	user, err = CreateNewUser("user", "password", noGW)
+	user, err = CreateNewUser("user", "password", noGW, 0)
 	if err != nil {
 		t.Fatalf("can not create user: %v", err)
 	}