pulumi/sdk/nodejs/tests/output.spec.ts

68 lines
2.4 KiB
TypeScript

// Copyright 2016-2018, Pulumi Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// tslint:disable
import * as assert from "assert";
import * as resource from "../resource";
import * as runtime from "../runtime";
import { asyncTest } from "./util";
describe("output", () => {
it("propagates true isKnown bit from inner Output", asyncTest(async () => {
runtime.setIsDryRun(true);
const output1 = new resource.Output(new Set(), Promise.resolve("outer"), Promise.resolve(true));
const output2 = output1.apply(v => new resource.Output(new Set(), Promise.resolve("inner"), Promise.resolve(true)));
const isKnown = await output2.isKnown;
assert.equal(isKnown, true);
const value = await output2.promise();
assert.equal(value, "inner");
}));
it("propagates false isKnown bit from inner Output", asyncTest(async () => {
runtime.setIsDryRun(true);
const output1 = new resource.Output(new Set(), Promise.resolve("outer"), Promise.resolve(true));
const output2 = output1.apply(v => new resource.Output(new Set(), Promise.resolve("inner"), Promise.resolve(false)));
const isKnown = await output2.isKnown;
assert.equal(isKnown, false);
const value = await output2.promise();
assert.equal(value, "inner");
}));
it("can await even when isKnown is a rejected promise.", asyncTest(async () => {
runtime.setIsDryRun(true);
const output1 = new resource.Output(new Set(), Promise.resolve("outer"), Promise.resolve(true));
const output2 = output1.apply(v => new resource.Output(new Set(), Promise.resolve("inner"), Promise.reject(new Error())));
const isKnown = await output2.isKnown;
assert.equal(isKnown, false);
try {
const value = await output2.promise();
}
catch (err) {
return;
}
assert.fail("Should not read here");
}));
});