Skip to content

Commit 2422316

Browse files
committed
added new route for safe experiments
1 parent aa65ff0 commit 2422316

File tree

7 files changed

+37
-44
lines changed

7 files changed

+37
-44
lines changed

coderd/experiments_test.go

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func Test_Experiments(t *testing.T) {
2525
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
2626
defer cancel()
2727

28-
experiments, err := client.Experiments(ctx, codersdk.ExperimentOptions{})
28+
experiments, err := client.Experiments(ctx)
2929
require.NoError(t, err)
3030
require.NotNil(t, experiments)
3131
require.Empty(t, experiments)
@@ -44,7 +44,7 @@ func Test_Experiments(t *testing.T) {
4444
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
4545
defer cancel()
4646

47-
experiments, err := client.Experiments(ctx, codersdk.ExperimentOptions{})
47+
experiments, err := client.Experiments(ctx)
4848
require.NoError(t, err)
4949
require.NotNil(t, experiments)
5050
// Should be lower-cased.
@@ -66,7 +66,7 @@ func Test_Experiments(t *testing.T) {
6666
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
6767
defer cancel()
6868

69-
experiments, err := client.Experiments(ctx, codersdk.ExperimentOptions{})
69+
experiments, err := client.Experiments(ctx)
7070
require.NoError(t, err)
7171
require.NotNil(t, experiments)
7272
require.ElementsMatch(t, codersdk.ExperimentsAll, experiments)
@@ -88,7 +88,7 @@ func Test_Experiments(t *testing.T) {
8888
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
8989
defer cancel()
9090

91-
experiments, err := client.Experiments(ctx, codersdk.ExperimentOptions{})
91+
experiments, err := client.Experiments(ctx)
9292
require.NoError(t, err)
9393
require.NotNil(t, experiments)
9494
require.ElementsMatch(t, append(codersdk.ExperimentsAll, "danger"), experiments)
@@ -112,26 +112,8 @@ func Test_Experiments(t *testing.T) {
112112
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
113113
defer cancel()
114114

115-
_, err := client.Experiments(ctx, codersdk.ExperimentOptions{})
115+
_, err := client.Experiments(ctx)
116116
require.Error(t, err)
117117
require.ErrorContains(t, err, httpmw.SignedOutErrorMessage)
118118
})
119-
120-
t.Run("include_all query param", func(t *testing.T) {
121-
t.Parallel()
122-
cfg := coderdtest.DeploymentValues(t)
123-
cfg.Experiments = []string{"foo", "BAR"}
124-
client := coderdtest.New(t, &coderdtest.Options{
125-
DeploymentValues: cfg,
126-
})
127-
_ = coderdtest.CreateFirstUser(t, client)
128-
129-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
130-
defer cancel()
131-
132-
experiments, err := client.Experiments(ctx, codersdk.ExperimentOptions{IncludeAll: true})
133-
require.NoError(t, err)
134-
require.NotNil(t, experiments)
135-
require.ElementsMatch(t, codersdk.ExperimentsAll, experiments)
136-
})
137119
}

site/src/api/api.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -852,11 +852,9 @@ export const getEntitlements = async (): Promise<TypesGen.Entitlements> => {
852852
}
853853
};
854854

855-
export const getExperiments = async (
856-
params?: TypesGen.ExperimentOptions,
857-
): Promise<TypesGen.Experiment[]> => {
855+
export const getExperiments = async (): Promise<TypesGen.Experiment[]> => {
858856
try {
859-
const response = await axios.get("/api/v2/experiments", { params });
857+
const response = await axios.get("/api/v2/experiments");
860858
return response.data;
861859
} catch (error) {
862860
if (axios.isAxiosError(error) && error.response?.status === 404) {
@@ -866,6 +864,19 @@ export const getExperiments = async (
866864
}
867865
};
868866

867+
export const getAvailableExperiments =
868+
async (): Promise<TypesGen.AvailableExperiments> => {
869+
try {
870+
const response = await axios.get("/api/v2/experiments/available");
871+
return response.data;
872+
} catch (error) {
873+
if (axios.isAxiosError(error) && error.response?.status === 404) {
874+
return { safe: [] };
875+
}
876+
throw error;
877+
}
878+
};
879+
869880
export const getExternalAuthProvider = async (
870881
provider: string,
871882
): Promise<TypesGen.ExternalAuth> => {

site/src/api/queries/experiments.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as API from "api/api";
2-
import { Experiments, ExperimentOptions } from "api/typesGenerated";
2+
import { Experiments } from "api/typesGenerated";
33
import { getMetadataAsJSON } from "utils/metadata";
44

55
export const experiments = () => {
@@ -10,9 +10,9 @@ export const experiments = () => {
1010
};
1111
};
1212

13-
export const updatedExperiments = (params?: ExperimentOptions) => {
13+
export const availableExperiments = () => {
1414
return {
15-
queryKey: ["experiments"],
16-
queryFn: async () => API.getExperiments(params),
15+
queryKey: ["availableExperiments"],
16+
queryFn: async () => API.getAvailableExperiments(),
1717
};
1818
};

site/src/api/typesGenerated.ts

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import { useQuery } from "react-query";
44
import { pageTitle } from "utils/page";
55
import { deploymentDAUs } from "api/queries/deployment";
66
import { entitlements } from "api/queries/entitlements";
7-
import { updatedExperiments } from "api/queries/experiments";
7+
import { availableExperiments } from "api/queries/experiments";
88
import { useDeploySettings } from "components/DeploySettingsLayout/DeploySettingsLayout";
99
import { GeneralSettingsPageView } from "./GeneralSettingsPageView";
1010

1111
const GeneralSettingsPage: FC = () => {
1212
const { deploymentValues } = useDeploySettings();
1313
const deploymentDAUsQuery = useQuery(deploymentDAUs());
1414
const entitlementsQuery = useQuery(entitlements());
15-
const experimentsQuery = useQuery(updatedExperiments({ include_all: true }));
15+
const experimentsQuery = useQuery(availableExperiments());
1616

1717
return (
1818
<>
@@ -24,7 +24,7 @@ const GeneralSettingsPage: FC = () => {
2424
deploymentDAUs={deploymentDAUsQuery.data}
2525
deploymentDAUsError={deploymentDAUsQuery.error}
2626
entitlements={entitlementsQuery.data}
27-
allExperiments={experimentsQuery.data}
27+
safeExperiments={experimentsQuery.data?.safe ?? []}
2828
/>
2929
</>
3030
);

site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ const meta: Meta<typeof GeneralSettingsPageView> = {
4040
},
4141
],
4242
deploymentDAUs: MockDeploymentDAUResponse,
43-
allExperiments: ["single_tailnet", "deployment_health_page"],
43+
safeExperiments: ["single_tailnet", "deployment_health_page"],
4444
},
4545
};
4646

@@ -102,6 +102,6 @@ export const allExperimentsEnabled: Story = {
102102
hidden: false,
103103
},
104104
],
105-
allExperiments: ["single_tailnet", "deployment_health_page"],
105+
safeExperiments: ["single_tailnet", "deployment_health_page"],
106106
},
107107
};

site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ export type GeneralSettingsPageViewProps = {
2222
deploymentDAUs?: DAUsResponse;
2323
deploymentDAUsError: unknown;
2424
entitlements: Entitlements | undefined;
25-
allExperiments: Experiments | undefined;
25+
safeExperiments: Experiments | undefined;
2626
};
2727
export const GeneralSettingsPageView = ({
2828
deploymentOptions,
2929
deploymentDAUs,
3030
deploymentDAUsError,
3131
entitlements,
32-
allExperiments,
32+
safeExperiments,
3333
}: GeneralSettingsPageViewProps): JSX.Element => {
3434
return (
3535
<>
@@ -64,7 +64,7 @@ export const GeneralSettingsPageView = ({
6464
"Wildcard Access URL",
6565
"Experiments",
6666
)}
67-
additionalValues={allExperiments}
67+
additionalValues={safeExperiments}
6868
/>
6969
</Stack>
7070
</>

0 commit comments

Comments
 (0)