package service import ( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestParseAssetActionRecognizesOfficialActions(t *testing.T) { cases := map[string]AssetOperation{ "CreateAssetGroup": AssetOperationAssetGroupCreate, "CreateAsset": AssetOperationAssetCreate, "ListAssetGroups": AssetOperationAssetGroupList, "ListAssets": AssetOperationAssetList, "GetAsset": AssetOperationAssetGet, "GetAssetGroup": AssetOperationAssetGroupGet, "UpdateAsset": AssetOperationAssetUpdate, "UpdateAssetGroup": AssetOperationAssetGroupUpdate, "DeleteAsset": AssetOperationAssetDelete, "DeleteAssetGroup": AssetOperationAssetGroupDelete, } for action, operation := range cases { t.Run(action, func(t *testing.T) { spec, ok := ParseAssetAction(action) require.True(t, ok) assert.Equal(t, action, spec.Action) assert.Equal(t, operation, spec.Operation) }) } } func TestParseAssetActionRejectsUnknownAction(t *testing.T) { _, ok := ParseAssetAction("CreateRealPersonAuthSession") assert.False(t, ok) } func TestBuildAssetSuccessResponseAllowsDeleteWithoutResult(t *testing.T) { body, err := BuildAssetSuccessResponse("DeleteAsset", "2024-01-01", nil) require.NoError(t, err) assert.Contains(t, string(body), `"Action":"DeleteAsset"`) assert.Contains(t, string(body), `"ResponseMetadata"`) assert.NotContains(t, string(body), `"Result"`) }