Add test for --secretfile

This commit is contained in:
Stefan Bethke 2024-09-03 16:00:50 +02:00
parent f188088306
commit 398393ce7c

View file

@ -116,3 +116,64 @@ func Test_runCreateRunnerFile(t *testing.T) {
assert.NoError(t, err)
assert.Nil(t, resp.Msg.Task)
}
func Test_runCreateRunnerFileFromSecretFile(t *testing.T) {
//
// Set the .runner file to be in a temporary directory
//
dir := t.TempDir()
configFile := dir + "/config.yml"
runnerFile := dir + "/.runner"
cfg, err := config.LoadDefault("")
cfg.Runner.File = runnerFile
yamlData, err := yaml.Marshal(cfg)
assert.NoError(t, err)
assert.NoError(t, os.WriteFile(configFile, yamlData, 0o666))
instance, has := os.LookupEnv("FORGEJO_URL")
if !has {
instance = "https://code.forgejo.org"
}
secret, has := os.LookupEnv("FORGEJO_RUNNER_SECRET")
assert.True(t, has)
name := "testrunner"
secretFile := dir + "/secretfile"
f, err := os.OpenFile(secretFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o600)
assert.NoError(t, err)
_, err := f.WriteString(secret)
assert.NoError(t, err)
err := f.Close()
assert.NoError(t, err)
//
// Run create-runner-file
//
ctx := context.Background()
cmd := createRunnerFileCmd(ctx, &configFile)
output, err := executeCommand(ctx, cmd, "--connect", "--secretfile", secretFile, "--instance", instance, "--name", name)
assert.NoError(t, err)
assert.EqualValues(t, "", output)
//
// Read back the runner file and verify its content
//
reg, err := config.LoadRegistration(runnerFile)
assert.NoError(t, err)
assert.EqualValues(t, secret, reg.Token)
assert.EqualValues(t, instance, reg.Address)
//
// Verify that fetching a task successfully returns there is
// no task for this runner
//
cli := client.New(
reg.Address,
cfg.Runner.Insecure,
reg.UUID,
reg.Token,
ver.Version(),
)
resp, err := cli.FetchTask(ctx, connect.NewRequest(&runnerv1.FetchTaskRequest{}))
assert.NoError(t, err)
assert.Nil(t, resp.Msg.Task)
}