Repository navigation
Expand file tree
/
Copy pathmanaged_bootstrap_test.go
More file actions
50 lines (44 loc) · 1.97 KB
/
Copy pathmanaged_bootstrap_test.go
File metadata and controls
50 lines (44 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import (
"context"
"os"
"path/filepath"
"testing"
builderv0 "github.com/codefly-dev/core/generated/go/codefly/services/builder/v0"
"github.com/stretchr/testify/require"
)
func TestExternalIdentityBuildRejectsPasswordBootstrapBeforeWriting(t *testing.T) {
builder := newBuildTestBuilder(t)
builder.AuthMode = authModeExternalIdentity
output := t.TempDir()
marker := filepath.Join(output, "caller-owned")
require.NoError(t, os.WriteFile(marker, []byte("preserve"), 0o600))
response, err := builder.Build(context.Background(), buildRequest(output))
require.NoError(t, err)
require.Equal(t, builderv0.BuildStatus_ERROR, response.GetState().GetState(),
"external-identity must not emit the password-based role bootstrap")
require.Contains(t, response.GetState().GetMessage(), "external-identity")
data, err := os.ReadFile(marker)
require.NoError(t, err)
require.Equal(t, "preserve", string(data))
_, err = os.Stat(filepath.Join(builder.Location, "bootstrap"))
require.True(t, os.IsNotExist(err), "rejection must precede staged output")
}
func TestExternalIdentityBuildWithoutOutputRejectsPasswordBootstrap(t *testing.T) {
builder := newBuildTestBuilder(t)
builder.AuthMode = authModeExternalIdentity
response, err := builder.Build(context.Background(), buildRequest(""))
require.NoError(t, err)
require.Equal(t, builderv0.BuildStatus_ERROR, response.GetState().GetState())
require.Contains(t, response.GetState().GetMessage(), "external-identity")
_, err = os.Stat(filepath.Join(builder.Location, "builder", "Dockerfile"))
require.True(t, os.IsNotExist(err))
}
func TestBootstrapBuildRejectsUnknownAuthMode(t *testing.T) {
builder := newBuildTestBuilder(t)
builder.AuthMode = "external-identty"
response, err := builder.Build(context.Background(), buildRequest(t.TempDir()))
require.NoError(t, err)
require.Equal(t, builderv0.BuildStatus_ERROR, response.GetState().GetState())
require.Contains(t, response.GetState().GetMessage(), "unsupported postgres auth mode")
}