Skip to content
Prev Previous commit
Next Next commit
added some unit tests
  • Loading branch information
Kira-Pilot committed Mar 15, 2023
commit 9a5e6095d6d0883ed7944bd9ac684a30e0a47c1c
6 changes: 1 addition & 5 deletions site/src/pages/CreateTokenPage/CreateTokenForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import {
CreateTokenData,
determineDefaultLtValue,
filterByMaxTokenLifetime,
lifetimeDayPresets,
customLifetimeDay,
} from "./utils"
import { FormikContextType } from "formik"
Expand Down Expand Up @@ -108,10 +107,7 @@ export const CreateTokenForm: FC<CreateTokenFormProps> = ({
shrink: true,
}}
>
{filterByMaxTokenLifetime(
lifetimeDayPresets,
maxTokenLifetime,
).map((lt) => (
{filterByMaxTokenLifetime(maxTokenLifetime).map((lt) => (
<MenuItem key={lt.label} value={lt.value}>
{lt.label}
</MenuItem>
Expand Down
75 changes: 75 additions & 0 deletions site/src/pages/CreateTokenPage/utils.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import {
filterByMaxTokenLifetime,
determineDefaultLtValue,
lifetimeDayPresets,
LifetimeDay,
NANO_HOUR,
} from "./utils"

describe("unit/CreateTokenForm", () => {
describe("filterByMaxTokenLifetime", () => {
it.each<{
maxTokenLifetime: number
expected: LifetimeDay[]
}>([
{
maxTokenLifetime: 0,
expected: lifetimeDayPresets,
},
{ maxTokenLifetime: 6 * 24 * NANO_HOUR, expected: [] },
{
maxTokenLifetime: 20 * 24 * NANO_HOUR,
expected: [lifetimeDayPresets[0]],
},
{
maxTokenLifetime: 40 * 24 * NANO_HOUR,
expected: [lifetimeDayPresets[0], lifetimeDayPresets[1]],
},
{
maxTokenLifetime: 70 * 24 * NANO_HOUR,
expected: [
lifetimeDayPresets[0],
lifetimeDayPresets[1],
lifetimeDayPresets[2],
],
},
{
maxTokenLifetime: 100 * 24 * NANO_HOUR,
expected: lifetimeDayPresets,
},
])(
`filterByMaxTokenLifetime($maxTokenLifetime)`,
({ maxTokenLifetime, expected }) => {
expect(filterByMaxTokenLifetime(maxTokenLifetime)).toEqual(expected)
},
)
})
describe("determineDefaultLtValue", () => {
it.each<{
maxTokenLifetime: number
expected: string | number
}>([
{
maxTokenLifetime: 0,
expected: 30,
},
{
maxTokenLifetime: 60 * 24 * NANO_HOUR,
expected: 30,
},
{
maxTokenLifetime: 20 * 24 * NANO_HOUR,
expected: 7,
},
{
maxTokenLifetime: 2 * 24 * NANO_HOUR,
expected: "custom",
},
])(
`determineDefaultLtValue($maxTokenLifetime)`,
({ maxTokenLifetime, expected }) => {
expect(determineDefaultLtValue(maxTokenLifetime)).toEqual(expected)
},
)
})
})
16 changes: 7 additions & 9 deletions site/src/pages/CreateTokenPage/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export interface CreateTokenData {
lifetime: number
}

interface LifetimeDay {
export interface LifetimeDay {
label: string
value: number | string
}
Expand Down Expand Up @@ -37,25 +37,23 @@ export const customLifetimeDay: LifetimeDay = {
}

export const filterByMaxTokenLifetime = (
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will write some unit tests for these helper functions

ltArr: LifetimeDay[],
maxTokenLifetime?: number,
): LifetimeDay[] => {
// if maxTokenLifetime hasn't been set, return the full array of options
if (!maxTokenLifetime) {
return ltArr
return lifetimeDayPresets
}

// otherwise only return options that are less than or equal to the max lifetime
return ltArr.filter(
return lifetimeDayPresets.filter(
(lifetime) => lifetime.value <= maxTokenLifetime / NANO_HOUR / 24,
)
}

export const determineDefaultLtValue = (maxTokenLifetime?: number) => {
const filteredArr = filterByMaxTokenLifetime(
lifetimeDayPresets,
maxTokenLifetime,
)
export const determineDefaultLtValue = (
maxTokenLifetime?: number,
): string | number => {
const filteredArr = filterByMaxTokenLifetime(maxTokenLifetime)

// default to a lifetime of 30 days if within the maxTokenLifetime
const thirtyDayDefault = filteredArr.find((lt) => lt.value === 30)
Expand Down