package main

import "testing"

// Eklentinin imzali izin tanimindaki islem, o islem icin izin anahtarini bulmali.
func TestEklentiIslemIzniEslesir(t *testing.T) {
	kuruluSifirla(t)
	p := "izin-test-profil"
	if err := kuruluEkleProfil(p, kuruluEklenti{
		Anahtar: "pc-durum", Surum: "1.1.0", Etkin: true,
		Izinler: []izinTanimi{{Anahtar: "surecListesi", Baslik: "Çalışan uygulamalar", Aciklama: "x", Islemler: []string{"surecler"}}},
	}); err != nil {
		t.Fatal(err)
	}
	anahtar, gerekli := eklentiIslemIzni(p, "pc-durum", "surecler")
	if !gerekli || anahtar != "surecListesi" {
		t.Fatalf("surecler icin surecListesi bekleniyordu: %q %v", anahtar, gerekli)
	}
	if _, gerekli := eklentiIslemIzni(p, "pc-durum", "anlik"); gerekli {
		t.Fatal("anlik izin gerektirmemeli")
	}
	if _, gerekli := eklentiIslemIzni(p, "baska", "surecler"); gerekli {
		t.Fatal("baska eklenti icin izin eslesmemeli")
	}
}

// Izin tanimi anahtari, paket anahtarindan bagimsiz olarak "kurulu" sayilmali (onay akisi icin).
func TestIzinTanimiKuruluSayilir(t *testing.T) {
	kuruluSifirla(t)
	p := "izin-test-profil-2"
	if err := kuruluEkleProfil(p, kuruluEklenti{
		Anahtar: "pc-durum", Surum: "1.1.0", Etkin: true,
		Izinler: []izinTanimi{{Anahtar: "surecListesi", Baslik: "b", Aciklama: "a", Islemler: []string{"surecler"}}},
	}); err != nil {
		t.Fatal(err)
	}
	if !kuruluIzinliMiProfil(p, "surecListesi") {
		t.Fatal("izin tanimi anahtari kurulu sayilmali")
	}
	if kuruluIzinliMiProfil(p, "bilinmeyen") {
		t.Fatal("bilinmeyen anahtar kabul edilmemeli")
	}
}
