@@ -208,22 +208,26 @@ describe('useKubernetesObjects', () => {
|
||||
getClusters: mockGetClusters
|
||||
.mockRejectedValueOnce({ message: 'some-error' })
|
||||
.mockResolvedValue(getClustersResponse),
|
||||
decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse)
|
||||
decorateRequestBodyForAuth:
|
||||
mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity:
|
||||
mockGetObjectsByEntity.mockResolvedValue(mockResponse),
|
||||
});
|
||||
|
||||
const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity, 100))
|
||||
const { result, waitForNextUpdate } = renderHook(() =>
|
||||
useKubernetesObjects(entity, 100),
|
||||
);
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBe('some-error')
|
||||
expect(result.current.kubernetesObjects).toBeUndefined()
|
||||
expect(result.current.error).toBe('some-error');
|
||||
expect(result.current.kubernetesObjects).toBeUndefined();
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBeUndefined()
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined()
|
||||
})
|
||||
expect(result.current.error).toBeUndefined();
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined();
|
||||
});
|
||||
|
||||
it('should reset error after decorateRequestBodyForAuth has failed and then succeeded', async () => {
|
||||
(useApi as any).mockReturnValue({
|
||||
@@ -231,64 +235,74 @@ describe('useKubernetesObjects', () => {
|
||||
decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth
|
||||
.mockRejectedValueOnce({ message: 'decoration failed' })
|
||||
.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse)
|
||||
getObjectsByEntity:
|
||||
mockGetObjectsByEntity.mockResolvedValue(mockResponse),
|
||||
});
|
||||
|
||||
const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity, 100))
|
||||
const { result, waitForNextUpdate } = renderHook(() =>
|
||||
useKubernetesObjects(entity, 100),
|
||||
);
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBe('decoration failed')
|
||||
expect(result.current.kubernetesObjects).toBeUndefined()
|
||||
expect(result.current.error).toBe('decoration failed');
|
||||
expect(result.current.kubernetesObjects).toBeUndefined();
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBeUndefined()
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined()
|
||||
})
|
||||
expect(result.current.error).toBeUndefined();
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined();
|
||||
});
|
||||
|
||||
it('should reset error after getObjectsByEntity has failed and then succeeded', async () => {
|
||||
(useApi as any).mockReturnValue({
|
||||
getClusters: mockGetClusters.mockResolvedValue(getClustersResponse),
|
||||
decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth
|
||||
.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity: mockGetObjectsByEntity.mockRejectedValueOnce({ message: 'failed to fetch' }).mockResolvedValue(mockResponse)
|
||||
decorateRequestBodyForAuth:
|
||||
mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity: mockGetObjectsByEntity
|
||||
.mockRejectedValueOnce({ message: 'failed to fetch' })
|
||||
.mockResolvedValue(mockResponse),
|
||||
});
|
||||
|
||||
const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity, 100))
|
||||
const { result, waitForNextUpdate } = renderHook(() =>
|
||||
useKubernetesObjects(entity, 100),
|
||||
);
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBe('failed to fetch')
|
||||
expect(result.current.kubernetesObjects).toBeUndefined()
|
||||
expect(result.current.error).toBe('failed to fetch');
|
||||
expect(result.current.kubernetesObjects).toBeUndefined();
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBeUndefined()
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined()
|
||||
})
|
||||
expect(result.current.error).toBeUndefined();
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined();
|
||||
});
|
||||
|
||||
it('should reset data after getClusters succeeded then failed', async () => {
|
||||
(useApi as any).mockReturnValue({
|
||||
getClusters: mockGetClusters
|
||||
.mockResolvedValueOnce(getClustersResponse)
|
||||
.mockRejectedValue({ message: "fetch clusters failed" }),
|
||||
decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth
|
||||
.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse)
|
||||
})
|
||||
const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity, 100))
|
||||
.mockRejectedValue({ message: 'fetch clusters failed' }),
|
||||
decorateRequestBodyForAuth:
|
||||
mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity:
|
||||
mockGetObjectsByEntity.mockResolvedValue(mockResponse),
|
||||
});
|
||||
const { result, waitForNextUpdate } = renderHook(() =>
|
||||
useKubernetesObjects(entity, 100),
|
||||
);
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBeUndefined()
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined()
|
||||
expect(result.current.error).toBeUndefined();
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined();
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBe('fetch clusters failed')
|
||||
expect(result.current.kubernetesObjects).toBeUndefined()
|
||||
})
|
||||
expect(result.current.error).toBe('fetch clusters failed');
|
||||
expect(result.current.kubernetesObjects).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should reset data after decorateBodyForAuth succeeded then failed', async () => {
|
||||
(useApi as any).mockReturnValue({
|
||||
@@ -298,41 +312,48 @@ describe('useKubernetesObjects', () => {
|
||||
.mockResolvedValueOnce(entityWithAuthToken)
|
||||
.mockResolvedValueOnce(entityWithAuthToken)
|
||||
.mockRejectedValue({ message: 'decorate failed' }),
|
||||
getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse)
|
||||
getObjectsByEntity:
|
||||
mockGetObjectsByEntity.mockResolvedValue(mockResponse),
|
||||
});
|
||||
|
||||
const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity, 100))
|
||||
const { result, waitForNextUpdate } = renderHook(() =>
|
||||
useKubernetesObjects(entity, 100),
|
||||
);
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBeUndefined()
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined()
|
||||
expect(result.current.error).toBeUndefined();
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined();
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBe('decorate failed')
|
||||
expect(result.current.kubernetesObjects).toBeUndefined()
|
||||
expect(result.current.error).toBe('decorate failed');
|
||||
expect(result.current.kubernetesObjects).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should reset data after getObjectsByEntity succeeded then failed', async () => {
|
||||
(useApi as any).mockReturnValue({
|
||||
getClusters: mockGetClusters.mockResolvedValue(getClustersResponse),
|
||||
decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth
|
||||
.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValueOnce(mockResponse).mockRejectedValue({ message: 'failed to fetch' })
|
||||
decorateRequestBodyForAuth:
|
||||
mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken),
|
||||
getObjectsByEntity: mockGetObjectsByEntity
|
||||
.mockResolvedValueOnce(mockResponse)
|
||||
.mockRejectedValue({ message: 'failed to fetch' }),
|
||||
});
|
||||
|
||||
const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity, 100))
|
||||
const { result, waitForNextUpdate } = renderHook(() =>
|
||||
useKubernetesObjects(entity, 100),
|
||||
);
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBeUndefined()
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined()
|
||||
expect(result.current.error).toBeUndefined();
|
||||
expect(result.current.kubernetesObjects).not.toBeUndefined();
|
||||
|
||||
await waitForNextUpdate();
|
||||
|
||||
expect(result.current.error).toBe('failed to fetch')
|
||||
expect(result.current.kubernetesObjects).toBeUndefined()
|
||||
})
|
||||
expect(result.current.error).toBe('failed to fetch');
|
||||
expect(result.current.kubernetesObjects).toBeUndefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -38,7 +38,7 @@ export const useKubernetesObjects = (
|
||||
const kubernetesAuthProvidersApi = useApi(kubernetesAuthProvidersApiRef);
|
||||
const [result, setResult] = useState<KubernetesObjects>({
|
||||
kubernetesObjects: undefined,
|
||||
error: undefined
|
||||
error: undefined,
|
||||
});
|
||||
|
||||
const getObjects = async () => {
|
||||
@@ -55,7 +55,8 @@ export const useKubernetesObjects = (
|
||||
...new Set(
|
||||
clusters.map(
|
||||
c =>
|
||||
`${c.authProvider}${c.oidcTokenProvider ? `.${c.oidcTokenProvider}` : ''
|
||||
`${c.authProvider}${
|
||||
c.oidcTokenProvider ? `.${c.oidcTokenProvider}` : ''
|
||||
}`,
|
||||
),
|
||||
),
|
||||
@@ -81,9 +82,9 @@ export const useKubernetesObjects = (
|
||||
|
||||
try {
|
||||
const objects = await kubernetesApi.getObjectsByEntity(requestBody);
|
||||
setResult({ kubernetesObjects: objects })
|
||||
setResult({ kubernetesObjects: objects });
|
||||
} catch (e) {
|
||||
setResult({ error: e.message })
|
||||
setResult({ error: e.message });
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user