package inner

import (
	"encoding/json"
	"strings"
	"testing"

	apikeysvc "github.com/tidbcloud/account/internel/svc/apikey"
)

func TestAuthnResponseReturnsResourceInfosWithoutOrganizationID(t *testing.T) {
	ret := AuthApikeyRet{
		PublicKey: "public",
		AuthRet:   true,
		Message:   "authenticate success",
		ResourceInfos: []apikeysvc.AuthnApiKeyResourceInfo{{
			ScopeType:  "ORG",
			ResourceID: 60205,
			Role:       "org:member",
			RoleID:     30,
		}},
	}

	raw, err := json.Marshal(ret)
	if err != nil {
		t.Fatalf("json.Marshal() error = %v", err)
	}
	encoded := string(raw)
	for _, field := range []string{`"public_key":"public"`, `"auth_ret":true`, `"resource_infos"`, `"scope_type":"ORG"`, `"resource_id":60205`, `"role":"org:member"`, `"role_id":30`} {
		if !strings.Contains(encoded, field) {
			t.Fatalf("response %s does not contain %s", encoded, field)
		}
	}
	if strings.Contains(encoded, `"org_id"`) {
		t.Fatalf("response %s contains removed org_id field", encoded)
	}
}
