pulumi/tests/examples/examples_acceptance_test.go

99 lines
2.8 KiB
Go

// Copyright 2016-2022, 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 examples
import (
"bytes"
"os"
"path/filepath"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/pulumi/pulumi/pkg/v3/testing/integration"
)
//nolint:paralleltest // uses parallel programtest
func TestAccMinimal_withLocalState(t *testing.T) {
test := getBaseOptions().
With(integration.ProgramTestOptions{
Dir: filepath.Join(getCwd(t), "minimal"),
Config: map[string]string{
"name": "Pulumi",
},
Secrets: map[string]string{
"secret": "this is my secret message",
},
ExtraRuntimeValidation: func(t *testing.T, stackInfo integration.RuntimeValidationStackInfo) {
// Simple runtime validation that just ensures the checkpoint was written and read.
assert.NotNil(t, stackInfo.Deployment)
},
RunBuild: true,
CloudURL: integration.MakeTempBackend(t),
})
integration.ProgramTest(t, &test)
}
//nolint:paralleltest // uses parallel programtest
func TestAccDynamicProviderSimple_withLocalState(t *testing.T) {
test := getBaseOptions().
With(integration.ProgramTestOptions{
Dir: filepath.Join(getCwd(t), "dynamic-provider/simple"),
Config: map[string]string{
"simple:config:w": "1",
"simple:config:x": "1",
"simple:config:y": "1",
},
CloudURL: integration.MakeTempBackend(t),
})
integration.ProgramTest(t, &test)
}
//nolint:paralleltest // uses parallel programtest
func TestAccFormattable_withLocalState(t *testing.T) {
var formattableStdout, formattableStderr bytes.Buffer
test := getBaseOptions().
With(integration.ProgramTestOptions{
Dir: filepath.Join(getCwd(t), "formattable"),
ExtraRuntimeValidation: func(t *testing.T, stackInfo integration.RuntimeValidationStackInfo) {
// Note that we're abusing this hook to validate stdout. We don't actually care about the checkpoint.
stdout := formattableStdout.String()
assert.False(t, strings.Contains(stdout, "MISSING"))
},
Stdout: &formattableStdout,
Stderr: &formattableStderr,
CloudURL: integration.MakeTempBackend(t),
})
integration.ProgramTest(t, &test)
}
func getCwd(t *testing.T) string {
cwd, err := os.Getwd()
if err != nil {
t.FailNow()
}
return cwd
}
func getBaseOptions() integration.ProgramTestOptions {
return integration.ProgramTestOptions{
Dependencies: []string{"@pulumi/pulumi"},
}
}