- Implement timewebcloud provider with DeployAgent, RemoveAgent, ListDeployedAgentNames - Add minimal HTTP API client for Timeweb Cloud (create/list/delete servers) - Register provider in main.go with CLI flags - Add timeweb-list and timeweb-tester utilities - Include Dockerfile and docker-compose.yml for deployment - Update DEPLOY.md with verified OS/preset IDs
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package cloudinit_test
|
|
|
|
import (
|
|
"testing"
|
|
"text/template"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"go.woodpecker-ci.org/autoscaler/config"
|
|
"go.woodpecker-ci.org/autoscaler/engine/inits/cloudinit"
|
|
"go.woodpecker-ci.org/woodpecker/v3/woodpecker-go/woodpecker"
|
|
)
|
|
|
|
var testUserDataStr = `
|
|
image: {{ .Image }}
|
|
environment:
|
|
{{- range $key, $value := .Environment }}
|
|
- {{ $key }}={{ $value }}
|
|
{{- end }}
|
|
`
|
|
|
|
var testUserDataTmpl = template.Must(template.New("test").Parse(testUserDataStr))
|
|
|
|
func TestRenderUserDataTemplate(t *testing.T) {
|
|
config := &config.Config{
|
|
Image: "test-image",
|
|
GRPCAddress: "test-address",
|
|
GRPCSecure: false,
|
|
Environment: map[string]string{
|
|
"FOO": "bar",
|
|
},
|
|
}
|
|
agent := &woodpecker.Agent{
|
|
Token: "test-token",
|
|
}
|
|
|
|
userData, err := cloudinit.RenderUserDataTemplate(config, agent, testUserDataTmpl)
|
|
|
|
assert.NoError(t, err)
|
|
assert.Contains(t, userData, "test-image")
|
|
assert.Contains(t, userData, "bar")
|
|
assert.Contains(t, userData, "WOODPECKER_SERVER=test-address")
|
|
assert.Contains(t, userData, "WOODPECKER_AGENT_SECRET=test-token")
|
|
}
|
|
|
|
func TestRenderUserDataTemplate_Secure(t *testing.T) {
|
|
config := &config.Config{
|
|
GRPCSecure: true,
|
|
}
|
|
agent := &woodpecker.Agent{}
|
|
|
|
userData, err := cloudinit.RenderUserDataTemplate(config, agent, testUserDataTmpl)
|
|
|
|
assert.NoError(t, err)
|
|
assert.Contains(t, userData, "WOODPECKER_GRPC_SECURE=true")
|
|
}
|
|
|
|
func TestRenderUserDataTemplate_Error(t *testing.T) {
|
|
config := &config.Config{}
|
|
agent := &woodpecker.Agent{}
|
|
tmpl := template.Must(template.New("test").Parse("{{.Missing}}"))
|
|
|
|
_, err := cloudinit.RenderUserDataTemplate(config, agent, tmpl)
|
|
assert.Error(t, err)
|
|
}
|