package main

import "testing"

// TestIzinProfilIzole: bir hesabin izni digerine gecmez; her hesap kendi izin verisini okur.
func TestIzinProfilIzole(t *testing.T) {
	t.Setenv("APPDATA", t.TempDir())
	profilTokenKur(t, "ahmet", "t-a")
	profilTokenKur(t, "ayse", "t-b")

	// Bellekte onceki testlerden kalan izin durumunu sifirla (izinler bellek ici onbellekte tutulur).
	if err := izinleriKaydetProfil("ayse", Izinler{}); err != nil {
		t.Fatal(err)
	}
	if err := izinleriKaydetProfil("ahmet", Izinler{EverythingAra: true}); err != nil {
		t.Fatal(err)
	}
	if izinOkuProfil("ayse").EverythingAra {
		t.Errorf("ayse'nin arama izni acik olmamaliydi")
	}
	if !izinOkuProfil("ahmet").EverythingAra {
		t.Errorf("ahmet'in arama izni acik olmaliydi")
	}
}

// TestKuruluProfilIzole: bir hesabin kurulu eklentisi digerinde gorunmez.
func TestKuruluProfilIzole(t *testing.T) {
	t.Setenv("APPDATA", t.TempDir())
	profilTokenKur(t, "ahmet", "t-a")
	profilTokenKur(t, "ayse", "t-b")

	if err := kuruluEkleProfil("ahmet", kuruluEklenti{Anahtar: "everything", Surum: "1", Etkin: true}); err != nil {
		t.Fatal(err)
	}
	if kuruluVarMiProfil("ayse", "everything") {
		t.Errorf("ayse, ahmet'in kurulu eklentisini gormemeliydi")
	}
	if !kuruluVarMiProfil("ahmet", "everything") {
		t.Errorf("ahmet'in kurulu eklentisi gorunmeliydi")
	}
}
