Ctrl K
ComunidadGuías…

internal/config/request_retry_test.go

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

Archivo original ↗Preguntar a KiBot
package config

import "testing"

func TestParseConfigBytesRequestRetry(t *testing.T) {
	cfg, errParse := ParseConfigBytes([]byte(`
gemini-api-key:
  - api-key: "gemini-zero"
    request-retry: 0
  - api-key: "gemini-unset"
interactions-api-key:
  - api-key: "interactions-two"
    request-retry: 2
codex-api-key:
  - api-key: "codex-neg"
    base-url: "https://codex.example.com"
    request-retry: -1
xai-api-key:
  - api-key: "xai-zero"
    base-url: "https://api.x.ai/v1"
    request-retry: 0
claude-api-key:
  - api-key: "claude-three"
    request-retry: 3
openai-compatibility:
  - name: "compat"
    base-url: "https://compat.example.com/v1"
    request-retry: 0
    api-key-entries:
      - api-key: "compat-key"
vertex-api-key:
  - api-key: "vertex-four"
    request-retry: 4
`))
	if errParse != nil {
		t.Fatalf("ParseConfigBytes() error = %v", errParse)
	}

	if len(cfg.GeminiKey) != 2 {
		t.Fatalf("gemini-api-key count = %d, want 2", len(cfg.GeminiKey))
	}
	if cfg.GeminiKey[0].RequestRetry == nil || *cfg.GeminiKey[0].RequestRetry != 0 {
		t.Fatalf("gemini[0].request-retry = %v, want 0", cfg.GeminiKey[0].RequestRetry)
	}
	if cfg.GeminiKey[1].RequestRetry != nil {
		t.Fatalf("gemini[1].request-retry = %v, want unset", cfg.GeminiKey[1].RequestRetry)
	}
	if len(cfg.InteractionsKey) != 1 || cfg.InteractionsKey[0].RequestRetry == nil || *cfg.InteractionsKey[0].RequestRetry != 2 {
		t.Fatalf("interactions[0].request-retry = %v, want 2", valueOrNil(cfg.InteractionsKey))
	}
	if len(cfg.CodexKey) != 1 || cfg.CodexKey[0].RequestRetry == nil || *cfg.CodexKey[0].RequestRetry != -1 {
		t.Fatalf("codex[0].request-retry = %v, want -1", valueOrNil(cfg.CodexKey))
	}
	if len(cfg.XAIKey) != 1 || cfg.XAIKey[0].RequestRetry == nil || *cfg.XAIKey[0].RequestRetry != 0 {
		t.Fatalf("xai[0].request-retry = %v, want 0", valueOrNil(cfg.XAIKey))
	}
	if len(cfg.ClaudeKey) != 1 || cfg.ClaudeKey[0].RequestRetry == nil || *cfg.ClaudeKey[0].RequestRetry != 3 {
		t.Fatalf("claude[0].request-retry = %v, want 3", valueOrNil(cfg.ClaudeKey))
	}
	if len(cfg.OpenAICompatibility) != 1 || cfg.OpenAICompatibility[0].RequestRetry == nil || *cfg.OpenAICompatibility[0].RequestRetry != 0 {
		t.Fatalf("openai-compatibility[0].request-retry = %v, want 0", cfg.OpenAICompatibility[0].RequestRetry)
	}
	if len(cfg.VertexCompatAPIKey) != 1 || cfg.VertexCompatAPIKey[0].RequestRetry == nil || *cfg.VertexCompatAPIKey[0].RequestRetry != 4 {
		t.Fatalf("vertex[0].request-retry = %v, want 4", cfg.VertexCompatAPIKey[0].RequestRetry)
	}
}

func valueOrNil[T any](items []T) any {
	if len(items) == 0 {
		return nil
	}
	return items[0]
}