MCPcopy Create free account
hub / github.com/coder/coder / TestAnnouncementBanners

Function TestAnnouncementBanners

enterprise/coderd/appearance_test.go:58–172  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

56}
57
58func TestAnnouncementBanners(t *testing.T) {
59 t.Parallel()
60
61 t.Run("User", func(t *testing.T) {
62 t.Parallel()
63
64 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
65 defer cancel()
66
67 adminClient, adminUser := coderdenttest.New(t, &coderdenttest.Options{DontAddLicense: true})
68 basicUserClient, _ := coderdtest.CreateAnotherUser(t, adminClient, adminUser.OrganizationID)
69
70 // Without a license, there should be no banners.
71 sb, err := basicUserClient.Appearance(ctx)
72 require.NoError(t, err)
73 require.Empty(t, sb.AnnouncementBanners)
74
75 coderdenttest.AddLicense(t, adminClient, coderdenttest.LicenseOptions{
76 Features: license.Features{
77 codersdk.FeatureAppearance: 1,
78 },
79 })
80
81 // Default state
82 sb, err = basicUserClient.Appearance(ctx)
83 require.NoError(t, err)
84 require.Empty(t, sb.AnnouncementBanners)
85
86 // Regular user should be unable to set the banner
87 uac := codersdk.UpdateAppearanceConfig{
88 AnnouncementBanners: []codersdk.BannerConfig{{Enabled: true}},
89 }
90 err = basicUserClient.UpdateAppearance(ctx, uac)
91 require.Error(t, err)
92 var sdkError *codersdk.Error
93 require.True(t, errors.As(err, &sdkError))
94 require.ErrorAs(t, err, &sdkError)
95 require.Equal(t, http.StatusForbidden, sdkError.StatusCode())
96
97 // But an admin can
98 wantBanner := codersdk.UpdateAppearanceConfig{
99 AnnouncementBanners: []codersdk.BannerConfig{{
100 Enabled: true,
101 Message: "The beep-bop will be boop-beeped on Saturday at 12AM PST.",
102 BackgroundColor: "#00FF00",
103 }},
104 }
105 err = adminClient.UpdateAppearance(ctx, wantBanner)
106 require.NoError(t, err)
107 gotBanner, err := adminClient.Appearance(ctx) //nolint:gocritic // we should assert at least once that the owner can get the banner
108 require.NoError(t, err)
109 require.Equal(t, wantBanner.AnnouncementBanners, gotBanner.AnnouncementBanners)
110
111 // But even an admin can't give a bad color
112 wantBanner.AnnouncementBanners[0].BackgroundColor = "#bad color"
113 err = adminClient.UpdateAppearance(ctx, wantBanner)
114 require.Error(t, err)
115 var sdkErr *codersdk.Error

Callers

nothing calls this directly

Calls 15

StatusCodeMethod · 0.95
NewFunction · 0.92
CreateAnotherUserFunction · 0.92
AddLicenseFunction · 0.92
NewDBFunction · 0.92
WorkspaceBuildFunction · 0.92
NewFunction · 0.92
WithFixedTokenFunction · 0.92
NewFunction · 0.92
AppearanceMethod · 0.80
UpdateAppearanceMethod · 0.80

Tested by

no test coverage detected