package main

import (
	"encoding/json"
	"net/http/httptest"
	"os"
	"testing"
)

// TestHealthKullaniciDoner: /health, etkin hesaplardan birinde giris varsa o hesabin kullanici adini doner;
// giris yokken bos kullanici + giris=false.
func TestHealthKullaniciDoner(t *testing.T) {
	t.Setenv("APPDATA", t.TempDir())
	const p = "ahmet"
	if err := etkinHesapEkle(p); err != nil {
		t.Fatal(err)
	}
	defer etkinHesapCikar(p)

	if _, err := profilKlasoru(p); err != nil {
		t.Fatal(err)
	}
	k, err := oturumYoluProfil(p)
	if err != nil {
		t.Fatal(err)
	}
	icerik := `{"kullaniciAdi":"ahmet","cerezler":[{"Name":"s","Value":"x"}]}`
	if err := os.WriteFile(k, []byte(icerik), 0o600); err != nil {
		t.Fatal(err)
	}

	saglikCagir := func() map[string]any {
		w := httptest.NewRecorder()
		healthHandler(w, httptest.NewRequest("GET", "/health", nil))
		if w.Code != 200 {
			t.Fatalf("health %d dondu", w.Code)
		}
		var veri map[string]any
		if err := json.Unmarshal(w.Body.Bytes(), &veri); err != nil {
			t.Fatal(err)
		}
		return veri
	}

	veri := saglikCagir()
	if veri["giris"] != true {
		t.Errorf("giris=true beklenirdi")
	}
	if veri["kullanici"] != "ahmet" {
		t.Errorf("kullanici=ahmet beklenirdi, %v geldi", veri["kullanici"])
	}

	oturumSilProfil(p)
	veri = saglikCagir()
	if veri["giris"] != false {
		t.Errorf("giris=false beklenirdi")
	}
	if veri["kullanici"] != "" {
		t.Errorf("giris yokken kullanici bos olmali, %v geldi", veri["kullanici"])
	}
}
