@@ -94,3 +94,31 @@ func TestAuthSwitchOldPassword(t *testing.T) {
94
94
t .Errorf ("got unexpected data: %v" , conn .written )
95
95
}
96
96
}
97
+
98
+ func TestAuthSwitchOldPasswordEmpty (t * testing.T ) {
99
+ conn , mc := newRWMockConn (2 )
100
+ mc .cfg .AllowOldPasswords = true
101
+ mc .cfg .Passwd = ""
102
+
103
+ // auth switch request
104
+ conn .data = []byte {41 , 0 , 0 , 2 , 254 , 109 , 121 , 115 , 113 , 108 , 95 , 111 , 108 ,
105
+ 100 , 95 , 112 , 97 , 115 , 115 , 119 , 111 , 114 , 100 , 0 , 95 , 84 , 103 , 43 , 61 ,
106
+ 49 , 123 , 61 , 91 , 50 , 40 , 113 , 35 , 84 , 96 , 101 , 92 , 123 , 121 , 107 , 0 }
107
+
108
+ // auth response
109
+ conn .queuedReplies = [][]byte {{8 , 0 , 0 , 4 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 }}
110
+ conn .maxReads = 2
111
+
112
+ authData := []byte {95 , 84 , 103 , 43 , 61 , 49 , 123 , 61 , 91 , 50 , 40 , 113 , 35 ,
113
+ 84 , 96 , 101 , 92 , 123 , 121 , 107 }
114
+ plugin := "mysql_native_password"
115
+
116
+ if err := mc .handleAuthResult (authData , plugin ); err != nil {
117
+ t .Errorf ("got error: %v" , err )
118
+ }
119
+
120
+ expectedReply := []byte {0 , 0 , 0 , 3 }
121
+ if ! bytes .Equal (conn .written , expectedReply ) {
122
+ t .Errorf ("got unexpected data: %v" , conn .written )
123
+ }
124
+ }
0 commit comments