package web import ( "bytes" "html/template" "gitgud.io/mike/mpv-manager/internal/webassets" "net/http" "net/http/httptest" "os" "path/filepath" "testing" "gitgud.io/mike/mpv-manager/pkg/config" ) func TestOctoberAuditEmptySettingProbe(t *testing.T) { setupSandboxedConfigHome(t) path := config.GetConfigPath() if err := os.MkdirAll(filepath.Dir(path),0700); err != nil {t.Fatal(err)} original:=[]byte("screenshot-directory=/tmp/existing-shots\nscreenshot-template=old-%n\nscreenshot-avif-opts=crf=20\n") if err:=os.WriteFile(path,original,0600);err!=nil{t.Fatal(err)} s:=&Server{} response:=httptest.NewRecorder() s.handleConfigApplyAPI(response,httptest.NewRequest(http.MethodPost,"/api/config/apply",bytes.NewBufferString(`{"screenshot_directory":"","screenshot_template":"","screenshot_avif_opts":""}`))) after,err:=os.ReadFile(path);if err!=nil{t.Fatal(err)} t.Logf("HTTP=%d body=%s persisted=%q",response.Code,response.Body.String(),after) if response.Code!=200||!bytes.Equal(original,after){t.Fatal("probe assumptions changed")} } func TestOctoberAuditCustomSelectionsProbe(t *testing.T) { setupSandboxedConfigHome(t) path := config.GetConfigPath() if err := os.MkdirAll(filepath.Dir(path),0700); err != nil {t.Fatal(err)} original:=[]byte("profile=cinema\nscale=ewa_lanczos\nvo=libmpv\nscreenshot-directory=/tmp/old-shots\n[cinema]\nbrightness=3\n") if err:=os.WriteFile(path,original,0600);err!=nil{t.Fatal(err)} s:=&Server{} settings:=s.getConfigSettings(); applyConfigPageDefaults(settings) tmpl,err:=template.New("").Funcs(templateFuncs).ParseFS(webassets.TemplatesFS,"templates/*.html") if err!=nil{t.Fatal(err)} var rendered bytes.Buffer if err:=tmpl.ExecuteTemplate(&rendered,"config-content",configPageData{DashboardData:DashboardData{Config:settings}});err!=nil{t.Fatal(err)} if err:=os.WriteFile("/tmp/mpv-manager-ui-audit-custom-config.html",rendered.Bytes(),0600);err!=nil{t.Fatal(err)} t.Logf("Existing effective values profile=%q scale=%q vo=%q",settings.Profile,settings.VideoScaleFilter,settings.VideoOutputDriver) response:=httptest.NewRecorder() s.handleConfigApplyAPI(response,httptest.NewRequest(http.MethodPost,"/api/config/apply",bytes.NewBufferString(`{"profile":"high-quality","video_scale_filter":"ewa_lanczossharp","video_output_driver":"gpu-next","screenshot_directory":"/tmp/new-shots"}`))) after,err:=os.ReadFile(path);if err!=nil{t.Fatal(err)} t.Logf("HTTP=%d body=%s persisted=%q",response.Code,response.Body.String(),after) if response.Code!=200{t.Fatal("probe assumptions changed")} }