MCPcopy Index your code
hub / github.com/coder/coder / TestUpdate

Function TestUpdate

coderd/entitlements/entitlements_test.go:52–106  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

50}
51
52func TestUpdate(t *testing.T) {
53 t.Parallel()
54 ctx := testutil.Context(t, testutil.WaitShort)
55
56 set := entitlements.New()
57 require.False(t, set.Enabled(codersdk.FeatureMultipleOrganizations))
58 fetchStarted := make(chan struct{})
59 firstDone := make(chan struct{})
60 errCh := make(chan error, 2)
61 go func() {
62 err := set.Update(ctx, func(_ context.Context) (codersdk.Entitlements, error) {
63 close(fetchStarted)
64 select {
65 case <-firstDone:
66 // OK!
67 case <-ctx.Done():
68 t.Error("timeout")
69 return codersdk.Entitlements{}, ctx.Err()
70 }
71 return codersdk.Entitlements{
72 Features: map[codersdk.FeatureName]codersdk.Feature{
73 codersdk.FeatureMultipleOrganizations: {
74 Enabled: true,
75 },
76 },
77 }, nil
78 })
79 errCh <- err
80 }()
81 testutil.TryReceive(ctx, t, fetchStarted)
82 require.False(t, set.Enabled(codersdk.FeatureMultipleOrganizations))
83 // start a second update while the first one is in progress
84 go func() {
85 err := set.Update(ctx, func(_ context.Context) (codersdk.Entitlements, error) {
86 return codersdk.Entitlements{
87 Features: map[codersdk.FeatureName]codersdk.Feature{
88 codersdk.FeatureMultipleOrganizations: {
89 Enabled: true,
90 },
91 codersdk.FeatureAppearance: {
92 Enabled: true,
93 },
94 },
95 }, nil
96 })
97 errCh <- err
98 }()
99 close(firstDone)
100 err := testutil.TryReceive(ctx, t, errCh)
101 require.NoError(t, err)
102 err = testutil.TryReceive(ctx, t, errCh)
103 require.NoError(t, err)
104 require.True(t, set.Enabled(codersdk.FeatureMultipleOrganizations))
105 require.True(t, set.Enabled(codersdk.FeatureAppearance))
106}
107
108func TestUpdate_LicenseRequiresTelemetry(t *testing.T) {
109 t.Parallel()

Callers

nothing calls this directly

Calls 8

ContextFunction · 0.92
NewFunction · 0.92
TryReceiveFunction · 0.92
ErrMethod · 0.80
EnabledMethod · 0.65
UpdateMethod · 0.65
DoneMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected