diff --git a/backend/src/controllers/v1/integrationAuthController.ts b/backend/src/controllers/v1/integrationAuthController.ts index a7390abaa..3b86b0fdb 100644 --- a/backend/src/controllers/v1/integrationAuthController.ts +++ b/backend/src/controllers/v1/integrationAuthController.ts @@ -713,11 +713,12 @@ export const getIntegrationAuthNorthflankSecretGroups = async (req: Request, res */ export const getIntegrationAuthTeamCityBuildConfigs = async (req: Request, res: Response) => { const { - params: { integrationAuthId, appId } + params: { integrationAuthId }, + query: { appId } } = await validateRequest(reqValidator.GetIntegrationAuthTeamCityBuildConfigsV1, req); - + // TODO(akhilmhdh): remove class -> static function path and makes these into reusable independent functions - const { integrationAuth } = await getIntegrationAuthAccessHelper({ + const { integrationAuth, accessToken } = await getIntegrationAuthAccessHelper({ integrationAuthId: new ObjectId(integrationAuthId) }); @@ -749,13 +750,13 @@ export const getIntegrationAuthTeamCityBuildConfigs = async (req: Request, res: const { data: { buildType } } = await standardRequest.get( - `${req.integrationAuth.url}/app/rest/buildTypes`, + `${integrationAuth.url}/app/rest/buildTypes`, { params: { locator: `project:${appId}` }, headers: { - Authorization: `Bearer ${req.accessToken}`, + Authorization: `Bearer ${accessToken}`, Accept: "application/json" } } diff --git a/backend/src/helpers/integration.ts b/backend/src/helpers/integration.ts index 9aaf52624..8fe7be9da 100644 --- a/backend/src/helpers/integration.ts +++ b/backend/src/helpers/integration.ts @@ -160,7 +160,7 @@ export const getIntegrationAuthAccessHelper = async ({ let accessId; let accessToken; const integrationAuth = await IntegrationAuth.findById(integrationAuthId).select( - "workspace integration +accessCiphertext +accessIV +accessTag +accessExpiresAt +refreshCiphertext +refreshIV +refreshTag +accessIdCiphertext +accessIdIV +accessIdTag metadata teamId" + "workspace integration +accessCiphertext +accessIV +accessTag +accessExpiresAt +refreshCiphertext +refreshIV +refreshTag +accessIdCiphertext +accessIdIV +accessIdTag metadata teamId url" ); if (!integrationAuth) diff --git a/backend/src/validation/integrationAuth.ts b/backend/src/validation/integrationAuth.ts index cf3f936a9..74cede2b9 100644 --- a/backend/src/validation/integrationAuth.ts +++ b/backend/src/validation/integrationAuth.ts @@ -153,9 +153,11 @@ export const DeleteIntegrationAuthV1 = z.object({ }); export const GetIntegrationAuthTeamCityBuildConfigsV1 = z.object({ - params:z.object({ - appId:z.string().trim(), + params: z.object({ integrationAuthId:z.string().trim() + }), + query: z.object({ + appId:z.string().trim() }) }) diff --git a/frontend/src/hooks/api/integrationAuth/queries.tsx b/frontend/src/hooks/api/integrationAuth/queries.tsx index 37e8df768..981944e2a 100644 --- a/frontend/src/hooks/api/integrationAuth/queries.tsx +++ b/frontend/src/hooks/api/integrationAuth/queries.tsx @@ -197,6 +197,8 @@ const fetchIntegrationAuthTeamCityBuildConfigs = async ({ integrationAuthId: string; appId: string; }) => { + if (appId === "") return []; + const { data: { buildConfigs } } = await apiRequest.get<{ buildConfigs: TeamCityBuildConfig[] }>( diff --git a/frontend/src/pages/integrations/teamcity/create.tsx b/frontend/src/pages/integrations/teamcity/create.tsx index ba37cae3b..80cfaba8c 100644 --- a/frontend/src/pages/integrations/teamcity/create.tsx +++ b/frontend/src/pages/integrations/teamcity/create.tsx @@ -49,7 +49,7 @@ export default function TeamCityCreateIntegrationPage() { integrationAuthId: (integrationAuthId as string) ?? "", appId: targetAppId }); - + useEffect(() => { if (workspace) { setSelectedSourceEnvironment(workspace.environments[0].slug);