pulumi/sdk/nodejs/tests
Justin Van Patten 0650e8bbbb
[sdk/nodejs] Fix provider for resource methods (#13796)
The `Resource` class in the Node.js SDK has the following internal
property:

```typescript
/** @internal */
readonly __prov?: ProviderResource;
```

When a resource is created, the provider specified for the resource is
stored in this property. If it is set, it is passed along in the `Call`
request when a method is called on the resource.

Prior to #13282, the property was only set for custom resources in
`Resource`'s constructor:

```typescript
this.__prov = custom ? opts.provider : undefined;
```

With #13282, it was changed to also store the value for remote
components:

```diff
- this.__prov = custom ? opts.provider : undefined;
+ this.__prov = custom || remote ? opts.provider : undefined;
```

This regressed the behavior when calling a method on a remote component
that had an explicit provider that wasn't the component provider, but
some other provider (e.g. AWS provider) specified as:

```typescript
const component = new MyRemoteComponent("comp", {
}, { provider: awsProvider });
```

The `awsProvider` was being stored in `Resource.__prov`, and when making
the method call on the resource, it would try to invoke `Call` on the
AWS provider, rather than calling the remote component provider's
`Call`, which resulted in an error.

Note that specifying the AWS provider using the more verbose `providers:
[awsProvider]` works around the issue.

The fix is to only set `__prov` if the provider's package is the same as
the resource's package. Otherwise, don't set it, because the user is
specifying a provider with the `provider: awsProvider` syntax as
shorthand for `providers: [awsProvider]`.

Fixes #13777
2023-08-30 14:49:53 +00:00
..
automation deps: Upgrade google.golang.org/{genproto, grpc} 2023-07-27 16:24:33 -07:00
mockpackage Apply autoformat 2023-04-28 18:27:10 -04:00
runtime Fix a working directory issue in language-nodejs 2023-08-03 12:17:12 +01:00
sxs_ts_test [engine] Add support for source positions 2023-07-10 14:35:40 -07:00
config.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
constants.ts ci: improve x-plat testing on Windows 2022-03-06 14:45:26 -08:00
init.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
iterable.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
options.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
output.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
provider.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
resource.spec.ts [sdk/nodejs] Fix provider for resource methods (#13796) 2023-08-30 14:49:53 +00:00
stackReference.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
unwrap.spec.ts Apply autoformat 2023-04-28 18:27:10 -04:00
util.ts Apply autoformat 2023-04-28 18:27:10 -04:00