pulumi/sdk/go/pulumix/combinators_test.go

95 lines
2.5 KiB
Go

// Copyright 2016-2023, 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.
package pulumix_test
import (
"context"
"errors"
"reflect"
"testing"
"github.com/pulumi/pulumi/sdk/v3/go/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumix"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestFlatten(t *testing.T) {
t.Parallel()
o := pulumix.Flatten[string, pulumix.Output[string]](pulumix.Val(pulumix.Val("a")))
v, known, secret, deps, err := internal.AwaitOutput(context.Background(), o)
require.NoError(t, err)
assert.True(t, known)
assert.False(t, secret)
assert.Empty(t, deps)
assert.Equal(t, "a", v)
}
func TestFlatten_secret(t *testing.T) {
t.Parallel()
o := pulumix.Flatten[string, pulumi.StringOutput](
pulumix.Val(
pulumi.ToSecret(pulumi.String("a")).(pulumi.StringOutput),
),
)
v, known, secret, deps, err := internal.AwaitOutput(context.Background(), o)
require.NoError(t, err)
assert.True(t, known)
assert.True(t, secret)
assert.Empty(t, deps)
assert.Equal(t, "a", v)
}
func TestFlatten_failedOutput(t *testing.T) {
t.Parallel()
in := pulumix.Output[pulumix.Output[string]]{
OutputState: internal.NewOutputState(nil, reflect.TypeOf(pulumix.Output[string]{})),
}
giveErr := errors.New("great sadness")
internal.RejectOutput(in, giveErr)
o := pulumix.Flatten[string, pulumix.Output[string]](in)
_, _, _, _, err := internal.AwaitOutput(context.Background(), o)
assert.ErrorIs(t, err, giveErr)
}
func TestAll(t *testing.T) {
t.Parallel()
o := pulumix.All(
pulumix.Val("a").AsAny(),
pulumix.Val(1).AsAny(),
pulumix.Val(true).AsAny(),
pulumix.Array[string]{pulumix.Val("b"), pulumix.Val("c")}.AsAny(),
pulumix.Map[int]{"d": pulumix.Val(3), "e": pulumix.Val(4)}.AsAny(),
)
v, _, _, _, err := internal.AwaitOutput(context.Background(), o)
require.NoError(t, err)
assert.Equal(t, []any{
"a",
1,
true,
[]string{"b", "c"},
map[string]int{"d": 3, "e": 4},
}, v)
}