user_act_log_test.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package dbdata
  2. import "testing"
  3. func TestParseUserAgent(t *testing.T) {
  4. type args struct {
  5. userAgent string
  6. }
  7. type res struct {
  8. os_idx uint8
  9. client_idx uint8
  10. ver string
  11. }
  12. tests := []struct {
  13. name string
  14. args args
  15. want res
  16. }{
  17. {
  18. name: "mac os 1",
  19. args: args{userAgent: "cisco anyconnect vpn agent for mac os x 4.10.05085"},
  20. want: res{os_idx: 2, client_idx: 1, ver: "4.10.05085"},
  21. },
  22. {
  23. name: "mac os 2",
  24. args: args{userAgent: "anyconnect darwin_i386 4.10.05085"},
  25. want: res{os_idx: 2, client_idx: 1, ver: "4.10.05085"},
  26. },
  27. {
  28. name: "windows",
  29. args: args{userAgent: "cisco anyconnect vpn agent for windows 4.8.02042"},
  30. want: res{os_idx: 1, client_idx: 1, ver: "4.8.02042"},
  31. },
  32. {
  33. name: "iPad",
  34. args: args{userAgent: "anyconnect applesslvpn_darwin_arm (ipad) 4.10.04060"},
  35. want: res{os_idx: 5, client_idx: 1, ver: "4.10.04060"},
  36. },
  37. {
  38. name: "iPhone",
  39. args: args{userAgent: "cisco anyconnect vpn agent for apple iphone 4.10.04060"},
  40. want: res{os_idx: 5, client_idx: 1, ver: "4.10.04060"},
  41. },
  42. {
  43. name: "android",
  44. args: args{userAgent: "anyconnect android 4.10.05096"},
  45. want: res{os_idx: 4, client_idx: 1, ver: "4.10.05096"},
  46. },
  47. {
  48. name: "linux",
  49. args: args{userAgent: "cisco anyconnect vpn agent for linux v7.08"},
  50. want: res{os_idx: 3, client_idx: 1, ver: "7.08"},
  51. },
  52. {
  53. name: "openconnect",
  54. args: args{userAgent: "openconnect-gui 1.5.3 v7.08"},
  55. want: res{os_idx: 0, client_idx: 2, ver: "7.08"},
  56. },
  57. {
  58. name: "unknown",
  59. args: args{userAgent: "unknown 1.4.3 aabcd"},
  60. want: res{os_idx: 0, client_idx: 0, ver: ""},
  61. },
  62. {
  63. name: "unknown 2",
  64. args: args{userAgent: ""},
  65. want: res{os_idx: 0, client_idx: 0, ver: ""},
  66. },
  67. {
  68. name: "anylink",
  69. args: args{userAgent: "anylink vpn agent for linux v1.0"},
  70. want: res{os_idx: 3, client_idx: 3, ver: "1.0"},
  71. },
  72. }
  73. for _, tt := range tests {
  74. t.Run(tt.name, func(t *testing.T) {
  75. if os_idx, client_idx, ver := UserActLogIns.ParseUserAgent(tt.args.userAgent); os_idx != tt.want.os_idx || client_idx != tt.want.client_idx || ver != tt.want.ver {
  76. t.Errorf("ParseUserAgent() = %v, %v, %v, want %v, %v, %v", os_idx, client_idx, ver, tt.want.os_idx, tt.want.client_idx, tt.want.ver)
  77. }
  78. })
  79. }
  80. }