All files / modules/35-connectors/components/CreateConnector/AWSKmsConnector/views AwsKmsAccessKeyForm.tsx

95.24% Statements 20/21
70% Branches 14/20
100% Functions 3/3
95% Lines 19/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79              219x   219x 219x 219x 219x 219x 219x 219x             219x 2x   2x   2x         2x         2x     2x 1x       1x     2x                                                         219x  
/*
 * Copyright 2021 Harness Inc. All rights reserved.
 * Use of this source code is governed by the PolyForm Free Trial 1.0.0 license
 * that can be found in the licenses directory at the root of this repository, also available at
 * https://polyformproject.org/wp-content/uploads/2020/05/PolyForm-Free-Trial-1.0.0.txt.
 */
 
import React from 'react'
import type { FormikProps } from 'formik'
import { FormInput, Text, SelectOption, Icon } from '@wings-software/uicore'
import { Color, FontVariation } from '@harness/design-system'
import { useStrings } from 'framework/strings'
import { useListAwsRegions } from 'services/portal'
import { useToaster } from '@common/exports'
import { AwsKmsConfigFormData, CredTypeValues } from '@connectors/interfaces/ConnectorInterface'
import SecretInput from '@secrets/components/SecretInput/SecretInput'
 
interface AwsKmsAccessKeyFormProps {
  formik: FormikProps<AwsKmsConfigFormData>
  accountId: string
}
 
const AwsKmsAccessKeyForm: React.FC<AwsKmsAccessKeyFormProps> = ({ formik, accountId }) => {
  const { getString } = useStrings()
 
  const [regions, setRegions] = React.useState<SelectOption[]>([])
 
  const { showError } = useToaster()
  const {
    data: regionData,
    loading,
    error
  } = useListAwsRegions({
    queryParams: {
      accountId
    }
  })
  Iif (error) {
    showError(error.message)
  }
  React.useEffect(() => {
    const regionValues = (regionData?.resource || []).map(region => ({
      value: region.value,
      label: region.name
    }))
    setRegions(regionValues as SelectOption[])
  }, [regionData?.resource])
 
  return (
    <>
      <Text font={{ variation: FontVariation.LEAD }} margin={{ bottom: 'medium', top: 'xlarge' }} color={Color.BLACK}>
        {getString('authentication')}
      </Text>
      {formik.values?.credType === CredTypeValues.ManualConfig && (
        <>
          <SecretInput
            name="accessKey"
            label={getString('connectors.awsKms.accessKeyLabel')}
            connectorTypeContext={'AwsKms'}
          />
          <SecretInput
            name="secretKey"
            label={getString('connectors.awsKms.secretKeyLabel')}
            connectorTypeContext={'AwsKms'}
          />
        </>
      )}
      <SecretInput name="awsArn" label={getString('connectors.awsKms.arnLabel')} connectorTypeContext={'AwsKms'} />
      {loading ? (
        <Icon margin="medium" name="spinner" size={15} color={Color.BLUE_500} />
      ) : (
        <FormInput.Select name="region" items={regions} label={getString('regionLabel')} />
      )}
    </>
  )
}
 
export default AwsKmsAccessKeyForm