mirror of https://github.com/coder/coder.git
fix: parse username/workspace correctly on coder state push --build (#10974)
Fixes the same issue as #10884 but for state push
This commit is contained in:
parent
baf3bf6b9c
commit
0536b58b48
|
@ -103,7 +103,11 @@ func (r *RootCmd) statePush() *clibase.Cmd {
|
|||
if buildNumber == 0 {
|
||||
build = workspace.LatestBuild
|
||||
} else {
|
||||
build, err = client.WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber(inv.Context(), codersdk.Me, inv.Args[0], strconv.FormatInt((buildNumber), 10))
|
||||
owner, workspace, err := splitNamedWorkspace(inv.Args[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
build, err = client.WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber(inv.Context(), owner, workspace, strconv.FormatInt((buildNumber), 10))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -134,4 +134,28 @@ func TestStatePush(t *testing.T) {
|
|||
err := inv.Run()
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("OtherUserBuild", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
|
||||
owner := coderdtest.CreateFirstUser(t, client)
|
||||
templateAdmin, taUser := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.RoleTemplateAdmin())
|
||||
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, &echo.Responses{
|
||||
Parse: echo.ParseComplete,
|
||||
ProvisionApply: echo.ApplyComplete,
|
||||
})
|
||||
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
|
||||
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
|
||||
workspace := coderdtest.CreateWorkspace(t, templateAdmin, owner.OrganizationID, template.ID)
|
||||
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
|
||||
inv, root := clitest.New(t, "state", "push",
|
||||
"--build", strconv.Itoa(int(workspace.LatestBuild.BuildNumber)),
|
||||
taUser.Username+"/"+workspace.Name,
|
||||
"-")
|
||||
//nolint: gocritic // this tests owner pushing another user's state
|
||||
clitest.SetupConfig(t, client, root)
|
||||
inv.Stdin = strings.NewReader("some magic state")
|
||||
err := inv.Run()
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue