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 {
|
if buildNumber == 0 {
|
||||||
build = workspace.LatestBuild
|
build = workspace.LatestBuild
|
||||||
} else {
|
} 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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,4 +134,28 @@ func TestStatePush(t *testing.T) {
|
||||||
err := inv.Run()
|
err := inv.Run()
|
||||||
require.NoError(t, err)
|
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