(opts ...relayServerOption)
| 238 | type channelHandler func(context.Context, ssh.NewChannel) error |
| 239 | |
| 240 | func newMockrelayServer(opts ...relayServerOption) (*relayServer, error) { |
| 241 | server := &relayServer{ |
| 242 | errc: make(chan error), |
| 243 | sshConfig: &ssh.ServerConfig{ |
| 244 | NoClientAuth: true, |
| 245 | }, |
| 246 | } |
| 247 | |
| 248 | // Create a private key with the crypto package |
| 249 | key, err := rsa.GenerateKey(rand.Reader, 2048) |
| 250 | if err != nil { |
| 251 | return nil, fmt.Errorf("failed to generate key: %w", err) |
| 252 | } |
| 253 | |
| 254 | privateKeyPEM := pem.EncodeToMemory( |
| 255 | &pem.Block{ |
| 256 | Type: "RSA PRIVATE KEY", |
| 257 | Bytes: x509.MarshalPKCS1PrivateKey(key), |
| 258 | }, |
| 259 | ) |
| 260 | |
| 261 | // Parse the private key |
| 262 | sshPrivateKey, err := ssh.ParsePrivateKey(privateKeyPEM) |
| 263 | if err != nil { |
| 264 | return nil, fmt.Errorf("failed to parse private key: %w", err) |
| 265 | } |
| 266 | |
| 267 | server.sshConfig.AddHostKey(ssh.Signer(sshPrivateKey)) |
| 268 | |
| 269 | server.httpServer = httptest.NewServer(http.HandlerFunc(makeConnection(server))) |
| 270 | |
| 271 | for _, opt := range opts { |
| 272 | opt(server) |
| 273 | } |
| 274 | |
| 275 | return server, nil |
| 276 | } |
| 277 | |
| 278 | func withAccessToken(accessToken string) func(*relayServer) { |
| 279 | return func(server *relayServer) { |
no test coverage detected