Ver Fonte

feat(user): impl. ExpiresAtExpiresAt returns date time for which the user certificate gets expired.

Mustafa Arici há 7 anos atrás
pai
commit
645c27dba1
2 ficheiros alterados com 35 adições e 2 exclusões
  1. 9 1
      user.go
  2. 26 1
      user_test.go

+ 9 - 1
user.go

@@ -121,7 +121,6 @@ func GetAllUsers() ([]*User, error) {
 		users = append(users, &User{dbUserModel: *u})
 	}
 	return users, nil
-
 }
 
 // CreateNewUser creates a new user with the given username and password in the database.
@@ -330,6 +329,15 @@ func (u *User) GetCert() string {
 	return u.Cert
 }
 
+// ExpiresAt returns user's certificate expiration date time.
+func (u *User) ExpiresAt() time.Time {
+	crt, err := pki.ReadCertFromPEM(u.Cert)
+	if err != nil {
+		logrus.Fatalf("can't parse cert: %v", err)
+	}
+	return crt.NotAfter
+}
+
 // GetServerSerialNumber returns user's server serial number.
 func (u *User) GetServerSerialNumber() string {
 	return u.ServerSerialNumber

+ 26 - 1
user_test.go

@@ -3,8 +3,11 @@ package ovpm_test
 import (
 	"fmt"
 	"net"
+	"reflect"
 	"testing"
 
+	"github.com/cad/ovpm/pki"
+
 	"github.com/Sirupsen/logrus"
 	"github.com/cad/ovpm"
 )
@@ -16,7 +19,7 @@ func TestCreateNewUser(t *testing.T) {
 	svr := ovpm.TheServer()
 	svr.Init("localhost", "", ovpm.UDPProto, "", "")
 
-	// Prepare:
+	// Preare:
 	username := "test.User"
 	password := "testPasswd1234"
 	noGW := false
@@ -343,6 +346,28 @@ func TestUserIPAllocator(t *testing.T) {
 		}
 	}
 }
+func TestUser_ExpiresAt(t *testing.T) {
+	// Initialize:
+	db := ovpm.CreateDB("sqlite3", ":memory:")
+	defer db.Cease()
+	svr := ovpm.TheServer()
+	svr.Init("localhost", "", ovpm.UDPProto, "", "")
+
+	// Test:
+	u1, err := ovpm.CreateNewUser("test", "1234", true, 0, false)
+	if err != nil {
+		t.Fatalf("test preperation failed: %v", err)
+	}
+
+	cert, err := pki.ReadCertFromPEM(u1.Cert)
+	if err != nil {
+		t.Fatalf("test preperation failed: %v", err)
+	}
+
+	if !reflect.DeepEqual(u1.ExpiresAt(), cert.NotAfter) {
+		t.Errorf("got (%s), want (%s)", u1.ExpiresAt(), cert.NotAfter)
+	}
+}
 
 // areUsersEqual compares given users and returns true if they are the same.
 func areUsersEqual(user1, user2 *ovpm.User) bool {