Ctrl K
ComunidadGuías…

internal/config/github_token_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package config

import (
	"encoding/json"
	"os"
	"path/filepath"
	"strings"
	"testing"

	"gopkg.in/yaml.v3"
)

func TestGitHubTokenConfigRoundTrip(t *testing.T) {
	cfg, err := ParseConfigBytes([]byte("server:\n  github-token: test-github-secret\n"))
	if err != nil {
		t.Fatal(err)
	}
	if cfg.GitHubToken != "test-github-secret" {
		t.Fatal("server.github-token was not parsed")
	}
	path := filepath.Join(t.TempDir(), "config.yaml")
	if err = os.WriteFile(path, []byte("server:\n  github-token: old\n"), 0600); err != nil {
		t.Fatal(err)
	}
	if err = SaveConfigPreserveComments(path, cfg); err != nil {
		t.Fatal(err)
	}
	data, err := os.ReadFile(path)
	if err != nil {
		t.Fatal(err)
	}
	var tree map[string]interface{}
	if err = yaml.Unmarshal(data, &tree); err != nil {
		t.Fatal(err)
	}
	server, ok := tree["server"].(map[string]interface{})
	if !ok || server["github-token"] != "test-github-secret" {
		t.Fatal("canonical YAML path was not preserved")
	}
	reloaded, err := ParseConfigBytes(data)
	if err != nil || reloaded.GitHubToken != cfg.GitHubToken {
		t.Fatal("token did not round trip")
	}
	clone := cfg.CloneForRuntime()
	if clone.GitHubToken != cfg.GitHubToken {
		t.Fatal("clone lost token")
	}
	data, err = json.Marshal(cfg)
	if err != nil {
		t.Fatal(err)
	}
	if strings.Contains(string(data), "test-github-secret") {
		t.Fatal("token leaked in runtime JSON")
	}
}