1
16
17 package flag
18
19 import (
20 "crypto/tls"
21 "reflect"
22 "testing"
23 )
24
25 func TestStrToUInt16(t *testing.T) {
26 tests := []struct {
27 flag []string
28 expected []uint16
29 expected_error bool
30 }{
31 {
32
33 flag: []string{"TLS_RSA_WITH_RC4_128_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_ECDHE_RSA_WITH_RC4_128_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"},
34 expected: []uint16{tls.TLS_RSA_WITH_RC4_128_SHA, tls.TLS_RSA_WITH_AES_128_CBC_SHA, tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA},
35 expected_error: false,
36 },
37 {
38
39 flag: []string{"TLS_RSA_WITH_RC4_128_SHA"},
40 expected: []uint16{tls.TLS_RSA_WITH_RC4_128_SHA},
41 expected_error: false,
42 },
43 {
44
45 flag: []string{},
46 expected: nil,
47 expected_error: false,
48 },
49 {
50
51 flag: []string{"TLS_RSA_WITH_RC4_128_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_ECDHE_RSA_WITH_RC4_128_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_RC4_128_SHA"},
52 expected: []uint16{tls.TLS_RSA_WITH_RC4_128_SHA, tls.TLS_RSA_WITH_AES_128_CBC_SHA, tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, tls.TLS_RSA_WITH_RC4_128_SHA},
53 expected_error: false,
54 },
55 {
56
57 flag: []string{"foo"},
58 expected: nil,
59 expected_error: true,
60 },
61 {
62
63 flag: []string{
64 "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
65 "TLS_RSA_WITH_AES_128_CBC_SHA",
66 "TLS_RSA_WITH_AES_256_CBC_SHA",
67 "TLS_RSA_WITH_AES_128_GCM_SHA256",
68 "TLS_RSA_WITH_AES_256_GCM_SHA384",
69 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
70 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
71 "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
72 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
73 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
74 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
75 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
76 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
77 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
78 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
79 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305",
80 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
81 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
82 "TLS_AES_128_GCM_SHA256",
83 "TLS_CHACHA20_POLY1305_SHA256",
84 "TLS_AES_256_GCM_SHA384",
85
86 "TLS_RSA_WITH_RC4_128_SHA",
87 "TLS_RSA_WITH_AES_128_CBC_SHA256",
88 "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
89 "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
90 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
91 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
92 },
93 expected: []uint16{
94 tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA,
95 tls.TLS_RSA_WITH_AES_128_CBC_SHA,
96 tls.TLS_RSA_WITH_AES_256_CBC_SHA,
97 tls.TLS_RSA_WITH_AES_128_GCM_SHA256,
98 tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
99 tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
100 tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
101 tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
102 tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
103 tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
104 tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
105 tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
106 tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
107 tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
108 tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
109 tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
110 tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
111 tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
112 tls.TLS_AES_128_GCM_SHA256,
113 tls.TLS_CHACHA20_POLY1305_SHA256,
114 tls.TLS_AES_256_GCM_SHA384,
115
116 tls.TLS_RSA_WITH_RC4_128_SHA,
117 tls.TLS_RSA_WITH_AES_128_CBC_SHA256,
118 tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
119 tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA,
120 tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
121 tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
122 },
123 },
124 }
125
126 for i, test := range tests {
127 uIntFlags, err := TLSCipherSuites(test.flag)
128 if !reflect.DeepEqual(uIntFlags, test.expected) {
129 t.Errorf("%d: expected %+v, got %+v", i, test.expected, uIntFlags)
130 }
131 if test.expected_error && err == nil {
132 t.Errorf("%d: expecting error, got %+v", i, err)
133 }
134 }
135 }
136
View as plain text