package main

import (
	"context"
	"net/http"
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/pomerium/pomerium/integration/flows"
)

func BenchmarkLoggedInUserAccess(b *testing.B) {
	ctx := context.Background()
	client := getClient(b)
	res, err := flows.Authenticate(ctx, client, mustParseURL("https://httpdetails.localhost.pomerium.io/by-domain"),
		flows.WithEmail("user1@dogs.test"))
	require.NoError(b, err)
	_ = res.Body.Close()

	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/by-domain", nil)
		require.NoError(b, err)
		res, err := client.Do(req)
		require.NoError(b, err)
		res.Body.Close()
	}
}

func BenchmarkLoggedOutUserAccess(b *testing.B) {
	ctx := context.Background()
	client := getClient(b)

	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/by-domain", nil)
		require.NoError(b, err)
		res, err := client.Do(req)
		require.NoError(b, err)
		res.Body.Close()
	}
}