Browse Source

test(parselog): add test for parseStatusLog

Mustafa Arici 7 years ago
parent
commit
5a547099f7
1 changed files with 82 additions and 0 deletions
  1. 82 0
      parselog_test.go

+ 82 - 0
parselog_test.go

@@ -0,0 +1,82 @@
+package ovpm
+
+import (
+	"bytes"
+	"io"
+	"reflect"
+	"testing"
+)
+
+func Test_parseStatusLog(t *testing.T) {
+	const exampleLogFile = `OpenVPN CLIENT LIST
+	Updated,Mon Mar 26 13:26:10 2018
+	Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
+	google.DNS,8.8.8.8:53246,527914279,3204562859,Sat Mar 17 16:26:38 2018
+	google1.DNS,8.8.4.4:33974,42727443,291595456,Mon Mar 26 08:24:08 2018
+	ROUTING TABLE
+	Virtual Address,Common Name,Real Address,Last Ref
+	10.20.30.6,google.DNS,8.8.8.8:33974,Mon Mar 26 13:26:04 2018
+	10.20.30.5,google1.DNS,8.8.4.4:53246,Mon Mar 26 13:25:57 2018
+	GLOBAL STATS
+	Max bcast/mcast queue length,4
+	END
+	`
+
+	// Mock the status log file.
+	f := bytes.NewBufferString(exampleLogFile)
+
+	type args struct {
+		f io.Reader
+	}
+	tests := []struct {
+		name  string
+		args  args
+		want  []clEntry
+		want1 []rtEntry
+	}{
+		{
+			"google", args{f},
+			[]clEntry{
+				clEntry{
+					CommonName:     "google.DNS",
+					RealAddress:    "8.8.8.8:53246",
+					BytesReceived:  527914279,
+					BytesSent:      3204562859,
+					ConnectedSince: stodt("Sat Mar 17 16:26:38 2018"),
+				},
+				clEntry{
+					CommonName:     "google1.DNS",
+					RealAddress:    "8.8.4.4:33974",
+					BytesReceived:  42727443,
+					BytesSent:      291595456,
+					ConnectedSince: stodt("Mon Mar 26 08:24:08 2018"),
+				},
+			},
+			[]rtEntry{
+				rtEntry{
+					VirtualAddress: "10.20.30.6",
+					CommonName:     "google.DNS",
+					RealAddress:    "8.8.8.8:33974",
+					LastRef:        stodt("Mon Mar 26 13:26:04 2018"),
+				},
+				rtEntry{
+					VirtualAddress: "10.20.30.5",
+					CommonName:     "google1.DNS",
+					RealAddress:    "8.8.4.4:53246",
+					LastRef:        stodt("Mon Mar 26 13:25:57 2018"),
+				},
+			},
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			got, got1 := parseStatusLog(tt.args.f)
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("parseStatusLog() got = %v, want %v", got, tt.want)
+			}
+			if !reflect.DeepEqual(got1, tt.want1) {
+				t.Errorf("parseStatusLog() got1 = %v, want %v", got1, tt.want1)
+			}
+		})
+	}
+}