package auth

import (
	"testing"

	. "github.com/smartystreets/goconvey/convey"
	"github.com/stretchr/testify/assert"
)

func TestFilterHttpRequest(t *testing.T) {
	assert := assert.New(t)
	assert.False(filterHttpRequest("GET", "any"))
	assert.True(filterHttpRequest("POST", "any"))
	assert.False(filterHttpRequest("POST", "/query"))
	assert.True(filterHttpRequest("POST", "/query_abc"))
	assert.True(filterHttpRequest("POST", "abc/query_abc"))
	assert.False(filterHttpRequest("POST", "abc/query"))
}

func TestParseOrgIDFromPath(t *testing.T) {
	Convey("valid paths", t, func() {
		validPaths := []string{
			"/api/v1/orgs/1/projects/123/clusters",
			"/api/v1/orgs/1/projects/123/clusters/456",
			"/api/v1/orgs/1/projects/123/clusters/456/tidb_nodes",
		}

		for _, each := range validPaths {
			orgID, err := ParseOrgIDFromPath(each)
			So(err, ShouldBeNil)
			So(orgID, ShouldEqual, 1)
		}
	})

	Convey("invalid paths", t, func() {
		invalidPaths := []string{
			"/api/v1/tenants/1/projects/123/clusters",
			"/api/v1/orgs/-1/projects/123/clusters/456",
		}

		for _, each := range invalidPaths {
			orgID, err := ParseOrgIDFromPath(each)
			So(err, ShouldNotBeNil)
			So(orgID, ShouldEqual, 0)
		}
	})
}
