Skip to content

Commit 49fb3b5

Browse files
committed
add test
1 parent 478001a commit 49fb3b5

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1468,8 +1468,8 @@ func (server *Server) regenerateSessionToken(ctx context.Context, user database.
14681468
_, err = tx.InsertAPIKey(ctx, database.InsertAPIKeyParams{
14691469
ID: id,
14701470
UserID: workspace.OwnerID,
1471-
LifetimeSeconds: int64(server.DeploymentValues.SessionDuration.Value().Seconds()),
1472-
ExpiresAt: database.Now().Add(server.DeploymentValues.SessionDuration.Value()).UTC(),
1471+
LifetimeSeconds: int64(server.DeploymentValues.MaxTokenLifetime.Value().Seconds()),
1472+
ExpiresAt: database.Now().Add(server.DeploymentValues.MaxTokenLifetime.Value()).UTC(),
14731473
IPAddress: pqtype.Inet{
14741474
IPNet: net.IPNet{
14751475
IP: ip,
@@ -1484,6 +1484,9 @@ func (server *Server) regenerateSessionToken(ctx context.Context, user database.
14841484
Scope: database.APIKeyScopeAll,
14851485
TokenName: workspaceSessionTokenName(workspace),
14861486
})
1487+
if err != nil {
1488+
return xerrors.Errorf("insert API key: %w", err)
1489+
}
14871490

14881491
return nil
14891492
}, nil)

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"database/sql"
66
"encoding/json"
77
"net/url"
8+
"strings"
89
"sync/atomic"
910
"testing"
1011
"time"
@@ -15,6 +16,7 @@ import (
1516
"golang.org/x/oauth2"
1617

1718
"cdr.dev/slog/sloggers/slogtest"
19+
"github.com/coder/coder/cli/clibase"
1820
"github.com/coder/coder/coderd/audit"
1921
"github.com/coder/coder/coderd/database"
2022
"github.com/coder/coder/coderd/database/dbfake"
@@ -61,6 +63,7 @@ func TestAcquireJob(t *testing.T) {
6163
Auditor: mockAuditor(),
6264
TemplateScheduleStore: testTemplateScheduleStore(),
6365
Tracer: trace.NewNoopTracerProvider().Tracer("noop"),
66+
DeploymentValues: &codersdk.DeploymentValues{},
6467
}
6568
job, err := srv.AcquireJob(context.Background(), nil)
6669
require.NoError(t, err)
@@ -102,6 +105,10 @@ func TestAcquireJob(t *testing.T) {
102105
t.Parallel()
103106
srv := setup(t, false)
104107
gitAuthProvider := "github"
108+
// Set the max session token lifetime so we can assert we
109+
// create an API key with an expiration within the bounds of the
110+
// deployment config.
111+
srv.DeploymentValues.MaxTokenLifetime = clibase.Duration(time.Hour)
105112
srv.GitAuthConfigs = []*gitauth.Config{{
106113
ID: gitAuthProvider,
107114
OAuth2Config: &testutil.OAuth2Config{},
@@ -216,6 +223,16 @@ func TestAcquireJob(t *testing.T) {
216223
got, err := json.Marshal(job.Type)
217224
require.NoError(t, err)
218225

226+
// Validate that a session token is generated during the job.
227+
sessionToken := job.Type.(*proto.AcquiredJob_WorkspaceBuild_).WorkspaceBuild.Metadata.CoderSessionToken
228+
require.NotEmpty(t, sessionToken)
229+
toks := strings.Split(sessionToken, "-")
230+
require.Len(t, toks, 2, "invalid api key")
231+
key, err := srv.Database.GetAPIKeyByID(ctx, toks[0])
232+
require.NoError(t, err)
233+
require.Equal(t, int64(srv.DeploymentValues.MaxTokenLifetime.Value().Seconds()), key.LifetimeSeconds)
234+
require.WithinDuration(t, time.Now().Add(srv.DeploymentValues.MaxTokenLifetime.Value()), key.ExpiresAt, time.Minute)
235+
219236
want, err := json.Marshal(&proto.AcquiredJob_WorkspaceBuild_{
220237
WorkspaceBuild: &proto.AcquiredJob_WorkspaceBuild{
221238
WorkspaceBuildId: build.ID.String(),
@@ -247,6 +264,7 @@ func TestAcquireJob(t *testing.T) {
247264
WorkspaceOwnerId: user.ID.String(),
248265
TemplateName: template.Name,
249266
TemplateVersion: version.Name,
267+
CoderSessionToken: sessionToken,
250268
},
251269
},
252270
})
@@ -1205,6 +1223,7 @@ func setup(t *testing.T, ignoreLogErrors bool) *provisionerdserver.Server {
12051223
Auditor: mockAuditor(),
12061224
TemplateScheduleStore: testTemplateScheduleStore(),
12071225
Tracer: trace.NewNoopTracerProvider().Tracer("noop"),
1226+
DeploymentValues: &codersdk.DeploymentValues{},
12081227
}
12091228
}
12101229

0 commit comments

Comments
 (0)