package allowed

import (
	"fmt"
	"testing"

	"github.com/stretchr/testify/assert"
	"go.skia.org/infra/go/mockhttpclient"
	"go.skia.org/infra/go/testutils/unittest"
)

func TestInfraConvert(t *testing.T) {
	unittest.SmallTest(t)
	infra := []string{
		"user:*@google.com",
		"user:test@example.com",
		"anonymous:anonymous",
		"bot:foo",
		"service:bar",
		"user:",
		"user:last@example.org",
	}

	expected := []string{
		"google.com",
		"test@example.com",
		"last@example.org",
	}

	assert.Equal(t, expected, infraAuthToAllowFromList(infra))
	assert.Equal(t, []string{}, infraAuthToAllowFromList([]string{}))
}

const JSON = `{
  "group": {
    "members": [
      "user:test@example.org",
      "user:*@chromium.org"
    ]
  }
}`

func TestWithClientMock(t *testing.T) {
	unittest.SmallTest(t)
	m := mockhttpclient.NewURLMock()
	m.Mock(fmt.Sprintf(GROUP_URL_TEMPLATE, "test"), mockhttpclient.MockGetDialogue([]byte(JSON)))
	i, err := NewAllowedFromChromeInfraAuth(m.Client(), "test")
	assert.NoError(t, err)
	assert.True(t, i.Member("foo@chromium.org"))
	assert.True(t, i.Member("test@example.org"))
	assert.False(t, i.Member("example.org"))
	assert.False(t, i.Member("bar@example.org"))
}
