Skip to content

Commit 01c512a

Browse files
authored
feat: Allow empty credential configs to work with cloud providers (#9499)
* support empty credential config * update plugin package * update yaml for fix test error
1 parent 1c1c7b4 commit 01c512a

File tree

10 files changed

+27
-51
lines changed

10 files changed

+27
-51
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ jobs:
3333
node-version-file: .nvmrc
3434
cache: npm
3535
cache-dependency-path: package-lock.json
36-
registry-url: "https://npm.pkg.github.com"
37-
scope: "@kong"
36+
registry-url: 'https://npm.pkg.github.com'
37+
scope: '@kong'
3838

3939
- name: Install packages
4040
run: npm ci
@@ -52,6 +52,8 @@ jobs:
5252

5353
- name: Check Circular References
5454
uses: actions/github-script@v7
55+
env:
56+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5557
if: github.event_name == 'pull_request' && always()
5658
with:
5759
github-token: ${{ secrets.GITHUB_TOKEN }}

package-lock.json

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

packages/insomnia-inso/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,6 @@
6666
"yaml": "^2.7.1"
6767
},
6868
"optionalDependencies": {
69-
"@kong/insomnia-plugin-external-vault": "0.1.3"
69+
"@kong/insomnia-plugin-external-vault": "0.1.4-dev.20251224090833"
7070
}
7171
}

packages/insomnia/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@
202202
},
203203
"optionalDependencies": {
204204
"@kong/insomnia-plugin-ai": "^1.0.7",
205-
"@kong/insomnia-plugin-external-vault": "0.1.3"
205+
"@kong/insomnia-plugin-external-vault": "0.1.4-dev.20251224090833"
206206
},
207207
"dev": {
208208
"dev-server-port": 3334

packages/insomnia/src/account/session.ts

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -193,34 +193,7 @@ async function _removeAllCredentials() {
193193
const cloudCredentials = await cloudCredential.all();
194194
for (const cred of cloudCredentials) {
195195
if ('credentials' in cred) {
196-
if ('secretAccessKey' in cred.credentials) {
197-
removals.push(
198-
cloudCredential.update(cred, {
199-
// AWS
200-
credentials: { ...cred.credentials, secretAccessKey: '', sessionToken: '' },
201-
}),
202-
);
203-
continue;
204-
}
205-
// hashicorp
206-
if ('access_token' in cred.credentials) {
207-
removals.push(cloudCredential.update(cred, { credentials: { ...cred.credentials, access_token: '' } }));
208-
continue;
209-
}
210-
if ('client_secret' in cred.credentials) {
211-
removals.push(cloudCredential.update(cred, { credentials: { ...cred.credentials, client_secret: '' } }));
212-
continue;
213-
}
214-
if ('secret_id' in cred.credentials) {
215-
removals.push(
216-
cloudCredential.update(cred, { credentials: { ...cred.credentials, secret_id: '', role_id: '' } }),
217-
);
218-
continue;
219-
}
220-
// azure
221-
if ('accessToken' in cred.credentials) {
222-
removals.push(cloudCredential.update(cred, { credentials: { ...cred.credentials, accessToken: '' } }));
223-
}
196+
removals.push(cloudCredential.update(cred, { credentials: undefined }));
224197
}
225198
}
226199

packages/insomnia/src/models/cloud-credential.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,16 +97,16 @@ export interface AzureOAuthCredential {
9797
type BaseCloudCredential =
9898
| {
9999
provider: 'aws';
100-
credentials: AWSTemporaryCredential | AWSFileCredential | AWSSSOCredential;
100+
credentials?: AWSTemporaryCredential | AWSFileCredential | AWSSSOCredential;
101101
}
102102
| {
103103
provider: 'gcp';
104-
credentials: GCPCredential;
104+
credentials?: GCPCredential;
105105
}
106-
| { provider: 'azure'; credentials: AzureOAuthCredential }
106+
| { provider: 'azure'; credentials?: AzureOAuthCredential }
107107
| {
108108
provider: 'hashicorp';
109-
credentials:
109+
credentials?:
110110
| HCPCredential
111111
| VaultAppRoleCredential
112112
| VaultTokenCredential

packages/insomnia/src/routes/cloud-credentials.$cloudCredentialId.update.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@ export async function clientAction({ params, request }: Route.ClientActionArgs)
3434
if (provider === 'hashicorp') {
3535
// update access token and expires_at
3636
const { access_token, expires_at } = result as { access_token: string; expires_at: number };
37-
patch.credentials['access_token'] = access_token;
38-
patch.credentials['expires_at'] = expires_at;
37+
if (patch.credentials) {
38+
patch.credentials['access_token'] = access_token;
39+
patch.credentials['expires_at'] = expires_at;
40+
}
3941
}
4042
await models.cloudCredential.update(originCredential, patch);
4143
return result as { access_token: string; expires_at: number };

packages/insomnia/src/ui/components/modals/cloud-credential-modal/aws-credential-form.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export interface AWSCredentialFormProps {
1919
isLoading: boolean;
2020
errorMessage?: string;
2121
}
22-
const initialFormValue: { name: string; credentials: AWSCloudCredential['credentials'] } = {
22+
const initialFormValue: { name: string; credentials: Required<AWSCloudCredential>['credentials'] } = {
2323
name: '',
2424
credentials: {
2525
type: AWSCredentialType.temp,
@@ -34,7 +34,7 @@ export const providerType: CloudProviderName = 'aws';
3434
export const AWSCredentialForm = (props: AWSCredentialFormProps) => {
3535
const { data, onSubmit, isLoading, errorMessage } = props;
3636
const isEdit = !!data;
37-
const { name, credentials } = (data || initialFormValue) as {
37+
const { name, credentials = initialFormValue.credentials } = (data || initialFormValue) as {
3838
name: string;
3939
credentials: AWSCloudCredential['credentials'];
4040
};

packages/insomnia/src/ui/components/modals/cloud-credential-modal/hashicorp-credential-form.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ export const providerType: CloudProviderName = 'hashicorp';
3737
export const HashiCorpCredentialForm = (props: HashiCorpCredentialFormProps) => {
3838
const { data, onSubmit, isLoading, errorMessage } = props;
3939
const isEdit = !!data;
40-
const { name, credentials } = data || initialFormValue;
40+
const { name, credentials = initialFormValue.credentials } = data || initialFormValue;
4141
const [isValidUrl, setIsValidUrl] = useState(true);
42-
const { type } = credentials as HashiCorpCredential['credentials'];
42+
const { type } = credentials as Required<HashiCorpCredential>['credentials'];
4343
const [credentialType, setCredentialType] = useState<HashiCorpCredentialType>(type);
4444
const [credentialAuthMethod, setAuthMethod] = useState<HashiCorpVaultAuthMethod>(
4545
(credentials as VaultTokenCredential | VaultAppRoleCredential).authMethod,

packages/insomnia/src/ui/components/settings/cloud-service-credentials.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { useDeleteCloudCredentialActionFetcher } from '~/routes/cloud-credential
66

77
import { EXTERNAL_VAULT_PLUGIN_NAME } from '../../../common/constants';
88
import {
9-
type AzureOAuthCredential,
109
type CloudProviderCredential,
1110
type CloudProviderName,
1211
getProviderDisplayName,
@@ -179,9 +178,9 @@ export const CloudServiceCredentialList = () => {
179178
<tbody>
180179
{cloudCredentials.map(cloudCred => {
181180
const { _id, name, provider, credentials } = cloudCred;
182-
let isAzureTokenExpired = false;
183-
if (provider === 'azure') {
184-
const tokenExpiresOn = (credentials as AzureOAuthCredential).expiresOn;
181+
let isAzureTokenExpired = !credentials;
182+
if (credentials && provider === 'azure') {
183+
const tokenExpiresOn = 'expiresOn' in credentials ? credentials.expiresOn : null;
185184
if (tokenExpiresOn && new Date() >= new Date(tokenExpiresOn)) {
186185
isAzureTokenExpired = true;
187186
}

0 commit comments

Comments
 (0)