package app

import (
	"net/http"
	"net/http/httptest"
	"path/filepath"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestJobEndpointRequiresAdminBearerToken(t *testing.T) {
	store, err := OpenStore(filepath.Join(t.TempDir(), "jobs.json"))
	require.NoError(t, err)
	job, _, err := store.Enqueue(Job{MessageID: "om_admin", Mode: JobModeAnalyze})
	require.NoError(t, err)
	router := NewRouter(Config{AdminToken: "secret"}, store, nil)

	request := httptest.NewRequest(http.MethodGet, "/api/v1/jobs/"+job.ID, nil)
	response := httptest.NewRecorder()
	router.ServeHTTP(response, request)
	require.Equal(t, http.StatusUnauthorized, response.Code)

	request = httptest.NewRequest(http.MethodGet, "/api/v1/jobs/"+job.ID, nil)
	request.Header.Set("Authorization", "Bearer secret")
	response = httptest.NewRecorder()
	router.ServeHTTP(response, request)
	require.Equal(t, http.StatusOK, response.Code)
	require.Contains(t, response.Body.String(), job.ID)
}
