MCPcopy
hub / github.com/fatedier/frp / TestControlSessionDialerDialV2

Function TestControlSessionDialerDialV2

client/control_session_test.go:126–233  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

124}
125
126func TestControlSessionDialerDialV2(t *testing.T) {
127 clientRaw, serverRaw := net.Pipe()
128 defer serverRaw.Close()
129
130 connector := &testConnector{conn: &trackingConn{Conn: clientRaw}}
131 serverErrCh := make(chan error, 1)
132 go func() {
133 magic := make([]byte, len(wire.MagicV2))
134 if _, err := io.ReadFull(serverRaw, magic); err != nil {
135 serverErrCh <- err
136 return
137 }
138 if string(magic) != wire.MagicV2 {
139 serverErrCh <- fmt.Errorf("unexpected magic: %q", string(magic))
140 return
141 }
142
143 wireConn := wire.NewConn(serverRaw)
144 clientHelloFrame, err := wireConn.ReadFrame()
145 if err != nil {
146 serverErrCh <- err
147 return
148 }
149 if clientHelloFrame.Type != wire.FrameTypeClientHello {
150 serverErrCh <- fmt.Errorf("unexpected frame type %d, want %d", clientHelloFrame.Type, wire.FrameTypeClientHello)
151 return
152 }
153 var hello wire.ClientHello
154 if err := wireConn.UnmarshalFrame(clientHelloFrame, &hello); err != nil {
155 serverErrCh <- err
156 return
157 }
158 if err := wire.ValidateClientHello(hello); err != nil {
159 serverErrCh <- err
160 return
161 }
162
163 rw := msg.NewV2ReadWriterWithConn(wireConn)
164 var loginMsg msg.Login
165 if err := rw.ReadMsgInto(&loginMsg); err != nil {
166 serverErrCh <- err
167 return
168 }
169 if loginMsg.User != "test-user" {
170 serverErrCh <- fmt.Errorf("unexpected user: %s", loginMsg.User)
171 return
172 }
173 serverHello, err := wire.NewServerHello(hello)
174 if err != nil {
175 serverErrCh <- err
176 return
177 }
178 serverHelloFrame, err := wire.NewJSONFrame(wire.FrameTypeServerHello, serverHello)
179 if err != nil {
180 serverErrCh <- err
181 return
182 }
183 cryptoContext := wire.NewCryptoContext(

Callers

nothing calls this directly

Calls 15

ReadFrameMethod · 0.95
UnmarshalFrameMethod · 0.95
ReadMsgIntoMethod · 0.95
WriteFrameMethod · 0.95
NewConnFunction · 0.92
ValidateClientHelloFunction · 0.92
NewV2ReadWriterWithConnFunction · 0.92
NewServerHelloFunction · 0.92
NewJSONFrameFunction · 0.92
NewCryptoContextFunction · 0.92
NewReadWriterFunction · 0.92

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…