gitlab.com/jfprevost/gitlab-runner-notlscheck@v11.11.4+incompatible/executors/ssh/executor_ssh_test.go (about)

     1  package ssh
     2  
     3  import (
     4  	"context"
     5  	"strconv"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	"gitlab.com/gitlab-org/gitlab-runner/common"
    11  	"gitlab.com/gitlab-org/gitlab-runner/executors"
    12  	sshHelpers "gitlab.com/gitlab-org/gitlab-runner/helpers/ssh"
    13  )
    14  
    15  var (
    16  	executorOptions = executors.ExecutorOptions{
    17  		SharedBuildsDir: false,
    18  		Shell: common.ShellScriptInfo{
    19  			Shell:         "bash",
    20  			Type:          common.NormalShell,
    21  			RunnerCommand: "/usr/bin/gitlab-runner-helper",
    22  		},
    23  		ShowHostname: true,
    24  	}
    25  )
    26  
    27  const SSH_SERVER_PRIVATE_KEY = "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIJCgNhsvCiKATDBXmRYHQfXIatKKOXGrmBLEVtGZtVv7oAoGCCqGSM49\nAwEHoUQDQgAE+36GvpVV34STGaV+YU4HHXCtJjburfo8IQDVTgLRwAkoLqLIl1cO\nduKDmdmeG/n66BNH1rJUkXFfEr4OYbZH5g==\n-----END EC PRIVATE KEY-----"
    28  
    29  func TestPrepare(t *testing.T) {
    30  	runnerConfig := &common.RunnerConfig{
    31  		RunnerSettings: common.RunnerSettings{
    32  			Executor: "ssh",
    33  			SSH:      &sshHelpers.Config{User: "user", Password: "pass", Host: "127.0.0.1"},
    34  		},
    35  	}
    36  	build := &common.Build{
    37  		JobResponse: common.JobResponse{
    38  			GitInfo: common.GitInfo{
    39  				Sha: "1234567890",
    40  			},
    41  		},
    42  		Runner: &common.RunnerConfig{},
    43  	}
    44  
    45  	sshConfig := runnerConfig.RunnerSettings.SSH
    46  	server, err := NewStubServer(sshConfig.User, sshConfig.Password, []byte(SSH_SERVER_PRIVATE_KEY))
    47  	assert.NoError(t, err)
    48  
    49  	port, err := server.Start()
    50  	assert.NoError(t, err)
    51  	defer server.Stop()
    52  
    53  	sshConfig.Port = strconv.Itoa(port)
    54  
    55  	e := &executor{
    56  		AbstractExecutor: executors.AbstractExecutor{
    57  			ExecutorOptions: executorOptions,
    58  		},
    59  	}
    60  
    61  	prepareOptions := common.ExecutorPrepareOptions{
    62  		Config:  runnerConfig,
    63  		Build:   build,
    64  		Context: context.TODO(),
    65  	}
    66  
    67  	err = e.Prepare(prepareOptions)
    68  	assert.NoError(t, err)
    69  }
    70  
    71  func TestSharedEnv(t *testing.T) {
    72  	provider := common.GetExecutor("ssh")
    73  	features := &common.FeaturesInfo{}
    74  
    75  	provider.GetFeatures(features)
    76  	assert.True(t, features.Shared)
    77  }