package main

import (
	"os"
	"path/filepath"
	"testing"
)

func TestProfilKlasorTasiYeniKlasorYoksa(t *testing.T) {
	kok := t.TempDir()
	eski := filepath.Join(kok, "profiller", "ahmet")
	if err := os.MkdirAll(eski, 0o700); err != nil {
		t.Fatal(err)
	}
	if err := os.WriteFile(filepath.Join(eski, "oturum.json"), []byte("x"), 0o600); err != nil {
		t.Fatal(err)
	}
	if err := profilKlasorTasi(kok, "ahmet", "abc123"); err != nil {
		t.Fatal(err)
	}
	if _, err := os.Stat(filepath.Join(kok, "profiller", "abc123", "oturum.json")); err != nil {
		t.Fatalf("tasinmadi: %v", err)
	}
	if _, err := os.Stat(eski); !os.IsNotExist(err) {
		t.Fatal("eski klasor kalmis")
	}
}

func TestProfilKlasorTasiBirlestirir(t *testing.T) {
	kok := t.TempDir()
	eski := filepath.Join(kok, "profiller", "ahmet")
	yeni := filepath.Join(kok, "profiller", "abc123")
	os.MkdirAll(eski, 0o700)
	os.MkdirAll(yeni, 0o700)
	os.WriteFile(filepath.Join(eski, "oturum.json"), []byte("eski"), 0o600)
	os.WriteFile(filepath.Join(eski, "eslesmeler.json"), []byte("e"), 0o600)
	os.WriteFile(filepath.Join(yeni, "oturum.json"), []byte("yeni"), 0o600)
	if err := profilKlasorTasi(kok, "ahmet", "abc123"); err != nil {
		t.Fatal(err)
	}
	veri, _ := os.ReadFile(filepath.Join(yeni, "oturum.json"))
	if string(veri) != "yeni" {
		t.Fatalf("yeni oturum ezilmemeli: %q", veri)
	}
	if _, err := os.Stat(filepath.Join(yeni, "eslesmeler.json")); err != nil {
		t.Fatal("eslesmeler tasinmadi")
	}
}

func TestProfilKlasorTasiAyniAnahtar(t *testing.T) {
	if err := profilKlasorTasi(t.TempDir(), "ahmet", "ahmet"); err != nil {
		t.Fatal(err)
	}
}
