mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(coderd): add provisioner build version and api_version on serve (#11369)
* assert provisioner daemon version and api_version in unit tests * add build info in HTTP header, extract codersdk.BuildVersionHeader * add api_version to codersdk.ProvisionerDaemon * testutil.MustString -> testutil.MustRandString
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/coder/coder/v2/buildinfo"
|
||||
"github.com/coder/coder/v2/cli/clitest"
|
||||
"github.com/coder/coder/v2/coderd/coderdtest"
|
||||
"github.com/coder/coder/v2/coderd/rbac"
|
||||
@@ -49,6 +50,8 @@ func TestProvisionerDaemon_PSK(t *testing.T) {
|
||||
}, testutil.WaitShort, testutil.IntervalSlow)
|
||||
require.Equal(t, "matt-daemon", daemons[0].Name)
|
||||
require.Equal(t, provisionersdk.ScopeOrganization, daemons[0].Tags[provisionersdk.TagScope])
|
||||
require.Equal(t, buildinfo.Version(), daemons[0].Version)
|
||||
require.Equal(t, provisionersdk.APIVersionCurrent, daemons[0].APIVersion)
|
||||
}
|
||||
|
||||
func TestProvisionerDaemon_SessionToken(t *testing.T) {
|
||||
@@ -84,6 +87,8 @@ func TestProvisionerDaemon_SessionToken(t *testing.T) {
|
||||
assert.Equal(t, "my-daemon", daemons[0].Name)
|
||||
assert.Equal(t, provisionersdk.ScopeUser, daemons[0].Tags[provisionersdk.TagScope])
|
||||
assert.Equal(t, anotherUser.ID.String(), daemons[0].Tags[provisionersdk.TagOwner])
|
||||
assert.Equal(t, buildinfo.Version(), daemons[0].Version)
|
||||
assert.Equal(t, provisionersdk.APIVersionCurrent, daemons[0].APIVersion)
|
||||
})
|
||||
|
||||
t.Run("ScopeAnotherUser", func(t *testing.T) {
|
||||
@@ -118,6 +123,8 @@ func TestProvisionerDaemon_SessionToken(t *testing.T) {
|
||||
assert.Equal(t, provisionersdk.ScopeUser, daemons[0].Tags[provisionersdk.TagScope])
|
||||
// This should get clobbered to the user who started the daemon.
|
||||
assert.Equal(t, anotherUser.ID.String(), daemons[0].Tags[provisionersdk.TagOwner])
|
||||
assert.Equal(t, buildinfo.Version(), daemons[0].Version)
|
||||
assert.Equal(t, provisionersdk.APIVersionCurrent, daemons[0].APIVersion)
|
||||
})
|
||||
|
||||
t.Run("ScopeOrg", func(t *testing.T) {
|
||||
@@ -150,5 +157,7 @@ func TestProvisionerDaemon_SessionToken(t *testing.T) {
|
||||
}, testutil.WaitShort, testutil.IntervalSlow)
|
||||
assert.Equal(t, "org-daemon", daemons[0].Name)
|
||||
assert.Equal(t, provisionersdk.ScopeOrganization, daemons[0].Tags[provisionersdk.TagScope])
|
||||
assert.Equal(t, buildinfo.Version(), daemons[0].Version)
|
||||
assert.Equal(t, provisionersdk.APIVersionCurrent, daemons[0].APIVersion)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ import (
|
||||
"github.com/coder/coder/v2/coderd/database/dbgen"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtestutil"
|
||||
"github.com/coder/coder/v2/coderd/database/postgres"
|
||||
"github.com/coder/coder/v2/cryptorand"
|
||||
"github.com/coder/coder/v2/enterprise/dbcrypt"
|
||||
"github.com/coder/coder/v2/pty/ptytest"
|
||||
"github.com/coder/coder/v2/testutil"
|
||||
)
|
||||
|
||||
// TestServerDBCrypt tests end-to-end encryption, decryption, and deletion
|
||||
@@ -50,7 +50,7 @@ func TestServerDBCrypt(t *testing.T) {
|
||||
users := genData(t, db)
|
||||
|
||||
// Setup an initial cipher A
|
||||
keyA := mustString(t, 32)
|
||||
keyA := testutil.MustRandString(t, 32)
|
||||
cipherA, err := dbcrypt.NewCiphers([]byte(keyA))
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -87,7 +87,7 @@ func TestServerDBCrypt(t *testing.T) {
|
||||
}
|
||||
|
||||
// Re-encrypt all existing data with a new cipher.
|
||||
keyB := mustString(t, 32)
|
||||
keyB := testutil.MustRandString(t, 32)
|
||||
cipherBA, err := dbcrypt.NewCiphers([]byte(keyB), []byte(keyA))
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -160,7 +160,7 @@ func TestServerDBCrypt(t *testing.T) {
|
||||
}
|
||||
|
||||
// Re-encrypt all existing data with a new cipher.
|
||||
keyC := mustString(t, 32)
|
||||
keyC := testutil.MustRandString(t, 32)
|
||||
cipherC, err := dbcrypt.NewCiphers([]byte(keyC))
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -222,7 +222,7 @@ func genData(t *testing.T, db database.Store) []database.User {
|
||||
for _, status := range database.AllUserStatusValues() {
|
||||
for _, loginType := range database.AllLoginTypeValues() {
|
||||
for _, deleted := range []bool{false, true} {
|
||||
randName := mustString(t, 32)
|
||||
randName := testutil.MustRandString(t, 32)
|
||||
usr := dbgen.User(t, db, database.User{
|
||||
Username: randName,
|
||||
Email: randName + "@notcoder.com",
|
||||
@@ -252,13 +252,6 @@ func genData(t *testing.T, db database.Store) []database.User {
|
||||
return users
|
||||
}
|
||||
|
||||
func mustString(t *testing.T, n int) string {
|
||||
t.Helper()
|
||||
s, err := cryptorand.String(n)
|
||||
require.NoError(t, err)
|
||||
return s
|
||||
}
|
||||
|
||||
func requireEncryptedEquals(t *testing.T, c dbcrypt.Cipher, expected, actual string) {
|
||||
t.Helper()
|
||||
var decodedVal []byte
|
||||
|
||||
Reference in New Issue
Block a user