Skip to content

Commit f75fb0b

Browse files
authored
chore(integration): fix failing tests referencing workspace_owner.rbac_roles (#369)
1 parent eab8698 commit f75fb0b

File tree

3 files changed

+97
-3
lines changed

3 files changed

+97
-3
lines changed

docs/data-sources/workspace_owner.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,15 @@ resource "coder_env" "git_author_email" {
5353
- `login_type` (String) The type of login the user has.
5454
- `name` (String) The username of the user.
5555
- `oidc_access_token` (String) A valid OpenID Connect access token of the workspace owner. This is only available if the workspace owner authenticated with OpenID Connect. If a valid token cannot be obtained, this value will be an empty string.
56-
- `rbac_roles` (List of Map) The RBAC roles and associated org ids of which the user is assigned.
56+
- `rbac_roles` (List of Object) The RBAC roles of which the user is assigned. (see [below for nested schema](#nestedatt--rbac_roles))
5757
- `session_token` (String) Session token for authenticating with a Coder deployment. It is regenerated every time a workspace is started.
5858
- `ssh_private_key` (String, Sensitive) The user's generated SSH private key.
5959
- `ssh_public_key` (String) The user's generated SSH public key.
60+
61+
<a id="nestedatt--rbac_roles"></a>
62+
### Nested Schema for `rbac_roles`
63+
64+
Read-Only:
65+
66+
- `name` (String)
67+
- `org_id` (String)

integration/integration_test.go

+31-2
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func TestIntegration(t *testing.T) {
122122
"workspace_owner.ssh_private_key": `(?s)^.+?BEGIN OPENSSH PRIVATE KEY.+?END OPENSSH PRIVATE KEY.+?$`,
123123
"workspace_owner.ssh_public_key": `(?s)^ssh-ed25519.+$`,
124124
"workspace_owner.login_type": ``,
125-
"workspace_owner.rbac_roles": `\[\]`,
125+
"workspace_owner.rbac_roles": ``,
126126
},
127127
},
128128
{
@@ -151,7 +151,36 @@ func TestIntegration(t *testing.T) {
151151
"workspace_owner.ssh_private_key": `(?s)^.+?BEGIN OPENSSH PRIVATE KEY.+?END OPENSSH PRIVATE KEY.+?$`,
152152
"workspace_owner.ssh_public_key": `(?s)^ssh-ed25519.+$`,
153153
"workspace_owner.login_type": `password`,
154-
"workspace_owner.rbac_roles": `\[\]`,
154+
"workspace_owner.rbac_roles": ``,
155+
},
156+
},
157+
{
158+
name: "workspace-owner-rbac-roles",
159+
minVersion: "v2.21.0", // anticipated version, update as required
160+
expectedOutput: map[string]string{
161+
"provisioner.arch": runtime.GOARCH,
162+
"provisioner.id": `[a-zA-Z0-9-]+`,
163+
"provisioner.os": runtime.GOOS,
164+
"workspace.access_port": `\d+`,
165+
"workspace.access_url": `https?://\D+:\d+`,
166+
"workspace.id": `[a-zA-z0-9-]+`,
167+
"workspace.name": ``,
168+
"workspace.start_count": `1`,
169+
"workspace.template_id": `[a-zA-Z0-9-]+`,
170+
"workspace.template_name": `workspace-owner`,
171+
"workspace.template_version": `.+`,
172+
"workspace.transition": `start`,
173+
"workspace_owner.email": `testing@coder\.com`,
174+
"workspace_owner.full_name": `default`,
175+
"workspace_owner.groups": `\[(\"Everyone\")?\]`,
176+
"workspace_owner.id": `[a-zA-Z0-9-]+`,
177+
"workspace_owner.name": `testing`,
178+
"workspace_owner.oidc_access_token": `^$`, // TODO: test OIDC integration
179+
"workspace_owner.session_token": `.+`,
180+
"workspace_owner.ssh_private_key": `(?s)^.+?BEGIN OPENSSH PRIVATE KEY.+?END OPENSSH PRIVATE KEY.+?$`,
181+
"workspace_owner.ssh_public_key": `(?s)^ssh-ed25519.+$`,
182+
"workspace_owner.login_type": `password`,
183+
"workspace_owner.rbac_roles": `(?is)\[(\{"name":"[a-z0-9-:]+","org_id":"[a-f0-9-]+"\},?)+\]`,
155184
},
156185
},
157186
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
terraform {
2+
required_providers {
3+
coder = {
4+
source = "coder/coder"
5+
}
6+
local = {
7+
source = "hashicorp/local"
8+
}
9+
}
10+
}
11+
12+
data "coder_provisioner" "me" {}
13+
data "coder_workspace" "me" {}
14+
data "coder_workspace_owner" "me" {}
15+
16+
locals {
17+
# NOTE: these must all be strings in the output
18+
output = {
19+
"provisioner.arch" : data.coder_provisioner.me.arch,
20+
"provisioner.id" : data.coder_provisioner.me.id,
21+
"provisioner.os" : data.coder_provisioner.me.os,
22+
"workspace.access_port" : tostring(data.coder_workspace.me.access_port),
23+
"workspace.access_url" : data.coder_workspace.me.access_url,
24+
"workspace.id" : data.coder_workspace.me.id,
25+
"workspace.name" : data.coder_workspace.me.name,
26+
"workspace.start_count" : tostring(data.coder_workspace.me.start_count),
27+
"workspace.template_id" : data.coder_workspace.me.template_id,
28+
"workspace.template_name" : data.coder_workspace.me.template_name,
29+
"workspace.template_version" : data.coder_workspace.me.template_version,
30+
"workspace.transition" : data.coder_workspace.me.transition,
31+
"workspace_owner.email" : data.coder_workspace_owner.me.email,
32+
"workspace_owner.full_name" : data.coder_workspace_owner.me.full_name,
33+
"workspace_owner.groups" : jsonencode(data.coder_workspace_owner.me.groups),
34+
"workspace_owner.id" : data.coder_workspace_owner.me.id,
35+
"workspace_owner.name" : data.coder_workspace_owner.me.name,
36+
"workspace_owner.oidc_access_token" : data.coder_workspace_owner.me.oidc_access_token,
37+
"workspace_owner.session_token" : data.coder_workspace_owner.me.session_token,
38+
"workspace_owner.ssh_private_key" : data.coder_workspace_owner.me.ssh_private_key,
39+
"workspace_owner.ssh_public_key" : data.coder_workspace_owner.me.ssh_public_key,
40+
"workspace_owner.login_type" : data.coder_workspace_owner.me.login_type,
41+
"workspace_owner.rbac_roles" : jsonencode(data.coder_workspace_owner.me.rbac_roles),
42+
}
43+
}
44+
45+
variable "output_path" {
46+
type = string
47+
}
48+
49+
resource "local_file" "output" {
50+
filename = var.output_path
51+
content = jsonencode(local.output)
52+
}
53+
54+
output "output" {
55+
value = local.output
56+
sensitive = true
57+
}

0 commit comments

Comments
 (0)