MCPcopy Create free account
hub / github.com/coder/envbuilder / TestGitSSHAuth

Function TestGitSSHAuth

integration/integration_test.go:421–473  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

419}
420
421func TestGitSSHAuth(t *testing.T) {
422 t.Parallel()
423
424 base64Key := base64.StdEncoding.EncodeToString([]byte(testSSHKey))
425
426 t.Run("Base64/Success", func(t *testing.T) {
427 t.Parallel()
428
429 signer, err := gossh.ParsePrivateKey([]byte(testSSHKey))
430 require.NoError(t, err)
431 require.NotNil(t, signer)
432
433 tmpDir := t.TempDir()
434 srvFS := osfs.New(tmpDir, osfs.WithChrootOS())
435
436 _ = gittest.NewRepo(t, srvFS, gittest.Commit(t, "Dockerfile", "FROM "+testImageAlpine, "Initial commit"))
437 tr := gittest.NewServerSSH(t, srvFS, signer.PublicKey())
438
439 ctr, err := runEnvbuilder(t, runOpts{env: []string{
440 envbuilderEnv("DOCKERFILE_PATH", "Dockerfile"),
441 envbuilderEnv("GIT_URL", tr.String()),
442 envbuilderEnv("GIT_SSH_PRIVATE_KEY_BASE64", base64Key),
443 }})
444 require.NoError(t, err)
445 dockerFilePath := execContainer(t, ctr, "find /workspaces -name Dockerfile")
446 require.NotEmpty(t, dockerFilePath)
447 dockerFile := execContainer(t, ctr, "cat "+dockerFilePath)
448 require.Contains(t, dockerFile, testImageAlpine)
449 })
450
451 t.Run("Base64/Failure", func(t *testing.T) {
452 t.Parallel()
453
454 _, randomKey, err := ed25519.GenerateKey(nil)
455 require.NoError(t, err)
456 signer, err := gossh.NewSignerFromKey(randomKey)
457 require.NoError(t, err)
458 require.NotNil(t, signer)
459
460 tmpDir := t.TempDir()
461 srvFS := osfs.New(tmpDir, osfs.WithChrootOS())
462
463 _ = gittest.NewRepo(t, srvFS, gittest.Commit(t, "Dockerfile", "FROM "+testImageAlpine, "Initial commit"))
464 tr := gittest.NewServerSSH(t, srvFS, signer.PublicKey())
465
466 _, err = runEnvbuilder(t, runOpts{env: []string{
467 envbuilderEnv("DOCKERFILE_PATH", "Dockerfile"),
468 envbuilderEnv("GIT_URL", tr.String()+"."),
469 envbuilderEnv("GIT_SSH_PRIVATE_KEY_BASE64", base64Key),
470 }})
471 require.ErrorContains(t, err, "handshake failed")
472 })
473}
474
475func TestSucceedsGitAuthInURL(t *testing.T) {
476 t.Parallel()

Callers

nothing calls this directly

Calls 6

NewRepoFunction · 0.92
CommitFunction · 0.92
NewServerSSHFunction · 0.92
runEnvbuilderFunction · 0.85
envbuilderEnvFunction · 0.85
execContainerFunction · 0.85

Tested by

no test coverage detected