Files
twcloud-scaler/engine/inits/cloudinit/cloudinit_test.go
Sergey Vanyushkin 191cdd108f feat: add Timeweb Cloud provider for Woodpecker CI autoscaler
- 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
2026-05-16 13:09:07 +03:00

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)
}