@@ -58,6 +58,7 @@ metadata:
5858{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"all-cool-resources":{"apiVersion":"example.org/v1","kind":"CoolExtraResource","matchLabels":{}}}}`
5959 extraResourcesDuplicatedKey = `{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"cool-extra-resource":{"apiVersion":"example.org/v1","kind":"CoolExtraResource","matchName":"cool-extra-resource"}}}
6060{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"cool-extra-resource":{"apiVersion":"example.org/v1","kind":"CoolExtraResource","matchName":"another-cool-extra-resource"}}}`
61+ extraResourceNamespaced = `{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"cool-extra-resource":{"apiVersion":"v1","kind":"ConfigMap","matchName":"cool-extra-resource","namespace":"default"}}}`
6162
6263 key = "userkey/go-template"
6364 path = "testdata/templates"
@@ -1396,6 +1397,72 @@ func TestRunFunction(t *testing.T) {
13961397 },
13971398 },
13981399 },
1400+ "NamespacedExtraResource" : {
1401+ args : args {
1402+ req : & fnv1.RunFunctionRequest {
1403+ Input : resource .MustStructObject (
1404+ & v1beta1.GoTemplate {
1405+ Source : v1beta1 .InlineSource ,
1406+ Inline : & v1beta1.TemplateSourceInline {Template : extraResourceNamespaced },
1407+ }),
1408+ RequiredResources : map [string ]* fnv1.Resources {
1409+ "cool-extra-resource" : {
1410+ Items : []* fnv1.Resource {
1411+ {
1412+ Resource : resource .MustStructJSON (`{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "cool-extra-resource", "namespace": "default"}, "data": {"a": "b"}}` ),
1413+ },
1414+ },
1415+ },
1416+ },
1417+ },
1418+ },
1419+ want : want {
1420+ rsp : & fnv1.RunFunctionResponse {
1421+ Meta : & fnv1.ResponseMeta {Ttl : durationpb .New (response .DefaultTTL )},
1422+ Results : []* fnv1.Result {},
1423+ Context : resource .MustStructJSON (
1424+ `{
1425+ "apiextensions.crossplane.io/extra-resources": {
1426+ "cool-extra-resource": {
1427+ "items": [
1428+ {
1429+ "resource": {
1430+ "apiVersion": "v1",
1431+ "kind": "ConfigMap",
1432+ "metadata": {
1433+ "name": "cool-extra-resource",
1434+ "namespace": "default"
1435+ },
1436+ "data": {
1437+ "a": "b"
1438+ }
1439+ }
1440+ }
1441+ ]
1442+ }
1443+ }
1444+ }` ,
1445+ ),
1446+ Desired : & fnv1.State {
1447+ Composite : & fnv1.Resource {
1448+ Resource : resource .MustStructJSON ("{}" ),
1449+ },
1450+ },
1451+ Requirements : & fnv1.Requirements {
1452+ ExtraResources : map [string ]* fnv1.ResourceSelector {
1453+ "cool-extra-resource" : {
1454+ ApiVersion : "v1" ,
1455+ Kind : "ConfigMap" ,
1456+ Match : & fnv1.ResourceSelector_MatchName {
1457+ MatchName : "cool-extra-resource" ,
1458+ },
1459+ Namespace : ptr .To ("default" ),
1460+ },
1461+ },
1462+ },
1463+ },
1464+ },
1465+ },
13991466 }
14001467
14011468 for name , tc := range cases {
0 commit comments