Skip to content

Commit 6225ddf

Browse files
committed
chore add unit test for role sync
1 parent 87b9c45 commit 6225ddf

File tree

2 files changed

+58
-4
lines changed

2 files changed

+58
-4
lines changed

cli/organizationsettings.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,12 @@ func (r *RootCmd) updateOrganizationSetting(orgContext *OrganizationContext) *se
6969
}
7070
setting, err = client.PatchGroupIDPSyncSettings(ctx, org.ID.String(), req)
7171
case "rolesync", "role-sync":
72-
// TODO: Implement role sync settings.
73-
return fmt.Errorf("role sync settings are not implemented")
72+
var req codersdk.RoleSyncSettings
73+
err = json.Unmarshal(inputData, &req)
74+
if err != nil {
75+
return xerrors.Errorf("unmarshalling role sync settings: %w", err)
76+
}
77+
setting, err = client.PatchRoleIDPSyncSettings(ctx, org.ID.String(), req)
7478
default:
7579
_, _ = fmt.Fprintln(inv.Stderr, "Valid organization settings are: 'groupsync', 'rolesync'")
7680
return fmt.Errorf("unknown organization setting %s", inv.Args[0])
@@ -126,8 +130,7 @@ func (r *RootCmd) printOrganizationSetting(orgContext *OrganizationContext) *ser
126130
case "groupsync", "group-sync":
127131
setting, err = client.GroupIDPSyncSettings(ctx, org.ID.String())
128132
case "rolesync", "role-sync":
129-
// TODO: Implement role sync settings.
130-
return fmt.Errorf("role sync settings are not implemented")
133+
setting, err = client.RoleIDPSyncSettings(ctx, org.ID.String())
131134
default:
132135
_, _ = fmt.Fprintln(inv.Stderr, "Valid organization settings are: 'groupsync', 'rolesync'")
133136
return fmt.Errorf("unknown organization setting %s", inv.Args[0])

enterprise/cli/organizationsettings_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"github.com/coder/coder/v2/cli/clitest"
1313
"github.com/coder/coder/v2/coderd/coderdtest"
14+
"github.com/coder/coder/v2/coderd/rbac"
1415
"github.com/coder/coder/v2/codersdk"
1516
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
1617
"github.com/coder/coder/v2/enterprise/coderd/license"
@@ -69,3 +70,53 @@ func TestUpdateGroupSync(t *testing.T) {
6970
require.JSONEq(t, string(expectedData), buf.String())
7071
})
7172
}
73+
74+
func TestUpdateRoleSync(t *testing.T) {
75+
t.Parallel()
76+
77+
t.Run("OK", func(t *testing.T) {
78+
dv := coderdtest.DeploymentValues(t)
79+
dv.Experiments = []string{string(codersdk.ExperimentMultiOrganization)}
80+
81+
owner, _ := coderdenttest.New(t, &coderdenttest.Options{
82+
Options: &coderdtest.Options{
83+
DeploymentValues: dv,
84+
},
85+
LicenseOptions: &coderdenttest.LicenseOptions{
86+
Features: license.Features{
87+
codersdk.FeatureMultipleOrganizations: 1,
88+
},
89+
},
90+
})
91+
92+
ctx := testutil.Context(t, testutil.WaitLong)
93+
inv, root := clitest.New(t, "organization", "settings", "set", "rolesync")
94+
clitest.SetupConfig(t, owner, root)
95+
96+
expectedSettings := codersdk.RoleSyncSettings{
97+
Field: "roles",
98+
Mapping: map[string][]string{
99+
"test": {rbac.RoleOrgAdmin()},
100+
},
101+
}
102+
expectedData, err := json.Marshal(expectedSettings)
103+
require.NoError(t, err)
104+
105+
buf := new(bytes.Buffer)
106+
inv.Stdout = buf
107+
inv.Stdin = bytes.NewBuffer(expectedData)
108+
err = inv.WithContext(ctx).Run()
109+
require.NoError(t, err)
110+
require.JSONEq(t, string(expectedData), buf.String())
111+
112+
// Now read it back
113+
inv, root = clitest.New(t, "organization", "settings", "show", "rolesync")
114+
clitest.SetupConfig(t, owner, root)
115+
116+
buf = new(bytes.Buffer)
117+
inv.Stdout = buf
118+
err = inv.WithContext(ctx).Run()
119+
require.NoError(t, err)
120+
require.JSONEq(t, string(expectedData), buf.String())
121+
})
122+
}

0 commit comments

Comments
 (0)