first commit
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled

This commit is contained in:
2026-03-17 16:22:57 +03:30
commit 3d5eaf9445
15349 changed files with 2847338 additions and 0 deletions
@@ -0,0 +1,295 @@
import { NodeTestHarness } from '@nodes-testing/node-test-harness';
import nock from 'nock';
describe('AWS ELB', () => {
const credentials = {
aws: {
region: 'us-east-1',
accessKeyId: 'test-access-key',
secretAccessKey: 'test-secret-key',
},
};
describe('Load Balancer Operations', () => {
describe('Create Load Balancer', () => {
beforeAll(() => {
const mock = nock('https://elasticloadbalancing.us-east-1.amazonaws.com');
mock
.get(
'/?Action=CreateLoadBalancer&Version=2015-12-01&IpAddressType=ipv4&Name=test-lb&Scheme=internet-facing&Type=application&Subnets.member.1=subnet-12345&Subnets.member.2=subnet-67890&SecurityGroups.member.1=sg-12345&Tags.member.1.Key=Environment&Tags.member.1.Value=test',
)
.reply(
200,
`
<CreateLoadBalancerResponse>
<CreateLoadBalancerResult>
<LoadBalancers>
<member>
<LoadBalancerArn>arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456</LoadBalancerArn>
<LoadBalancerName>test-lb</LoadBalancerName>
<Scheme>internet-facing</Scheme>
<Type>application</Type>
<State>
<Code>provisioning</Code>
</State>
</member>
</LoadBalancers>
</CreateLoadBalancerResult>
</CreateLoadBalancerResponse>
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['create-load-balancer.workflow.json'],
});
});
describe('Get Load Balancer', () => {
beforeAll(() => {
const mock = nock('https://elasticloadbalancing.us-east-1.amazonaws.com');
mock
.get(
'/?Action=DescribeLoadBalancers&Version=2015-12-01&LoadBalancerArns.member.1=arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456',
)
.reply(
200,
`
<DescribeLoadBalancersResponse>
<DescribeLoadBalancersResult>
<LoadBalancers>
<member>
<LoadBalancerArn>arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456</LoadBalancerArn>
<LoadBalancerName>test-lb</LoadBalancerName>
<Scheme>internet-facing</Scheme>
<Type>application</Type>
<State>
<Code>active</Code>
</State>
</member>
</LoadBalancers>
</DescribeLoadBalancersResult>
</DescribeLoadBalancersResponse>
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['get-load-balancer.workflow.json'],
});
});
describe('Get Many Load Balancers', () => {
beforeAll(() => {
const mock = nock('https://elasticloadbalancing.us-east-1.amazonaws.com');
mock.get('/?Action=DescribeLoadBalancers&Version=2015-12-01&PageSize=10').reply(
200,
`
<DescribeLoadBalancersResponse>
<DescribeLoadBalancersResult>
<LoadBalancers>
<member>
<LoadBalancerArn>arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb-1/1234567890123456</LoadBalancerArn>
<LoadBalancerName>test-lb-1</LoadBalancerName>
<Scheme>internet-facing</Scheme>
<Type>application</Type>
</member>
<member>
<LoadBalancerArn>arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/test-lb-2/2345678901234567</LoadBalancerArn>
<LoadBalancerName>test-lb-2</LoadBalancerName>
<Scheme>internal</Scheme>
<Type>network</Type>
</member>
</LoadBalancers>
</DescribeLoadBalancersResult>
</DescribeLoadBalancersResponse>
`,
);
mock
.get(
'/?Action=DescribeLoadBalancers&Version=2015-12-01&Names.member.1=test-lb-1&Names.member.2=test-lb-2',
)
.reply(
200,
`
<DescribeLoadBalancersResponse>
<DescribeLoadBalancersResult>
<LoadBalancers>
<member>
<LoadBalancerArn>arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb-1/1234567890123456</LoadBalancerArn>
<LoadBalancerName>test-lb-1</LoadBalancerName>
<Scheme>internet-facing</Scheme>
<Type>application</Type>
</member>
<member>
<LoadBalancerArn>arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/test-lb-2/2345678901234567</LoadBalancerArn>
<LoadBalancerName>test-lb-2</LoadBalancerName>
<Scheme>internal</Scheme>
<Type>network</Type>
</member>
</LoadBalancers>
</DescribeLoadBalancersResult>
</DescribeLoadBalancersResponse>
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: [
'get-many-load-balancers.workflow.json',
'get-many-load-balancers-with-names.workflow.json',
],
});
});
describe('Delete Load Balancer', () => {
beforeAll(() => {
const mock = nock('https://elasticloadbalancing.us-east-1.amazonaws.com');
mock
.get(
'/?Action=DeleteLoadBalancer&Version=2015-12-01&LoadBalancerArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456',
)
.reply(
200,
`
<DeleteLoadBalancerResponse>
<DeleteLoadBalancerResult/>
</DeleteLoadBalancerResponse>
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['delete-load-balancer.workflow.json'],
});
});
});
describe('Listener Certificate Operations', () => {
describe('Add Listener Certificate', () => {
beforeAll(() => {
const mock = nock('https://elasticloadbalancing.us-east-1.amazonaws.com');
mock
.get(
'/?Action=AddListenerCertificates&Version=2015-12-01&Certificates.member.1.CertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012&ListenerArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2',
)
.reply(
200,
`
<AddListenerCertificatesResponse>
<AddListenerCertificatesResult>
<Certificates>
<member>
<CertificateArn>arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012</CertificateArn>
<IsDefault>false</IsDefault>
</member>
</Certificates>
</AddListenerCertificatesResult>
</AddListenerCertificatesResponse>
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['add-listener-certificate.workflow.json'],
});
});
describe('Get Many Listener Certificates', () => {
beforeAll(() => {
const mock = nock('https://elasticloadbalancing.us-east-1.amazonaws.com');
mock
.get(
'/?Action=DescribeListenerCertificates&Version=2015-12-01&ListenerArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2&PageSize=10',
)
.reply(
200,
`
<DescribeListenerCertificatesResponse>
<DescribeListenerCertificatesResult>
<Certificates>
<member>
<CertificateArn>arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012</CertificateArn>
<IsDefault>false</IsDefault>
</member>
<member>
<CertificateArn>arn:aws:acm:us-east-1:123456789012:certificate/87654321-4321-4321-4321-210987654321</CertificateArn>
<IsDefault>true</IsDefault>
</member>
</Certificates>
</DescribeListenerCertificatesResult>
</DescribeListenerCertificatesResponse>
`,
);
mock
.get(
'/?Action=DescribeListenerCertificates&Version=2015-12-01&ListenerArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2',
)
.reply(
200,
`
<DescribeListenerCertificatesResponse>
<DescribeListenerCertificatesResult>
<Certificates>
<member>
<CertificateArn>arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012</CertificateArn>
<IsDefault>false</IsDefault>
</member>
<member>
<CertificateArn>arn:aws:acm:us-east-1:123456789012:certificate/87654321-4321-4321-4321-210987654321</CertificateArn>
<IsDefault>true</IsDefault>
</member>
</Certificates>
</DescribeListenerCertificatesResult>
</DescribeListenerCertificatesResponse>
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: [
'get-many-listener-certificates.workflow.json',
'get-many-listener-certificates-all.workflow.json',
],
});
});
describe('Remove Listener Certificate', () => {
beforeAll(() => {
const mock = nock('https://elasticloadbalancing.us-east-1.amazonaws.com');
mock
.get(
'/?Action=RemoveListenerCertificates&Version=2015-12-01&Certificates.member.1.CertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012&ListenerArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2',
)
.reply(
200,
`
<RemoveListenerCertificatesResponse>
<RemoveListenerCertificatesResult/>
</RemoveListenerCertificatesResponse>
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['remove-listener-certificate.workflow.json'],
});
});
});
});
@@ -0,0 +1,289 @@
import { mockDeep } from 'jest-mock-extended';
import type { IExecuteFunctions } from 'n8n-workflow';
import { NodeApiError } from 'n8n-workflow';
import {
awsApiRequest,
awsApiRequestREST,
awsApiRequestSOAP,
awsApiRequestSOAPAllItems,
} from '../GenericFunctions';
jest.mock('xml2js', () => ({
parseString: jest.fn(),
}));
import { parseString as parseXml } from 'xml2js';
describe('ELB GenericFunctions', () => {
describe('awsApiRequest', () => {
let mockExecuteFunctions: jest.Mocked<IExecuteFunctions>;
beforeEach(() => {
mockExecuteFunctions = mockDeep<IExecuteFunctions>();
jest.clearAllMocks();
mockExecuteFunctions.getNode.mockReturnValue({
id: 'test-node',
name: 'Test ELB Node',
type: 'n8n-nodes-base.awsElb',
typeVersion: 1,
position: [0, 0],
parameters: {},
});
});
it('should make successful API request with basic parameters', async () => {
const mockResponse = { success: true };
const mockRequestWithAuth = mockExecuteFunctions.helpers
.requestWithAuthentication as jest.Mock;
mockRequestWithAuth.mockResolvedValue(mockResponse);
const result = await awsApiRequest.call(
mockExecuteFunctions,
'elasticloadbalancing',
'GET',
'/test-path',
);
expect(result).toEqual(mockResponse);
expect(mockRequestWithAuth).toHaveBeenCalledWith(
'aws',
expect.objectContaining({
qs: expect.objectContaining({
service: 'elasticloadbalancing',
path: '/test-path',
}),
method: 'GET',
}),
);
});
it('should handle API errors', async () => {
const apiError = new Error('API Error');
const mockRequestWithAuth = mockExecuteFunctions.helpers
.requestWithAuthentication as jest.Mock;
mockRequestWithAuth.mockRejectedValue(apiError);
await expect(
awsApiRequest.call(mockExecuteFunctions, 'elasticloadbalancing', 'GET', '/test-path'),
).rejects.toThrow(NodeApiError);
});
});
describe('awsApiRequestREST', () => {
let mockExecuteFunctions: jest.Mocked<IExecuteFunctions>;
beforeEach(() => {
mockExecuteFunctions = mockDeep<IExecuteFunctions>();
jest.clearAllMocks();
});
it('should parse valid JSON response', async () => {
const jsonResponse = '{"result": "success", "data": [1,2,3]}';
const expectedResult = { result: 'success', data: [1, 2, 3] };
const mockRequestWithAuth = mockExecuteFunctions.helpers
.requestWithAuthentication as jest.Mock;
mockRequestWithAuth.mockResolvedValue(jsonResponse);
const result = await awsApiRequestREST.call(
mockExecuteFunctions,
'elasticloadbalancing',
'GET',
'/test-path',
);
expect(result).toEqual(expectedResult);
});
it('should return raw response when JSON parsing fails', async () => {
const rawResponse = 'not json data';
const mockRequestWithAuth = mockExecuteFunctions.helpers
.requestWithAuthentication as jest.Mock;
mockRequestWithAuth.mockResolvedValue(rawResponse);
const result = await awsApiRequestREST.call(
mockExecuteFunctions,
'elasticloadbalancing',
'GET',
'/test-path',
);
expect(result).toBe(rawResponse);
});
});
describe('awsApiRequestSOAP', () => {
let mockExecuteFunctions: jest.Mocked<IExecuteFunctions>;
const mockParseXml = parseXml as jest.MockedFunction<typeof parseXml>;
beforeEach(() => {
mockExecuteFunctions = mockDeep<IExecuteFunctions>();
jest.clearAllMocks();
});
it('should parse XML response correctly', async () => {
const xmlResponse =
'<ListBucketsResult><Buckets><Bucket><Name>test-bucket</Name></Bucket></Buckets></ListBucketsResult>';
const expectedParsedData = {
ListBucketsResult: {
Buckets: {
Bucket: {
Name: 'test-bucket',
},
},
},
};
(mockExecuteFunctions.helpers.requestWithAuthentication as jest.Mock).mockResolvedValue(
xmlResponse,
);
mockParseXml.mockImplementation((_xml, _options, callback) => {
callback(null, expectedParsedData);
});
const result = await awsApiRequestSOAP.call(
mockExecuteFunctions,
'elasticloadbalancing',
'GET',
'/test-path',
);
expect(result).toEqual(expectedParsedData);
});
it('should handle XML parsing errors', async () => {
const xmlResponse = 'invalid xml';
const xmlError = new Error('Invalid XML');
(mockExecuteFunctions.helpers.requestWithAuthentication as jest.Mock).mockResolvedValue(
xmlResponse,
);
mockParseXml.mockImplementation((_xml, _options, callback) => {
callback(xmlError, null);
});
const result = await awsApiRequestSOAP.call(
mockExecuteFunctions,
'elasticloadbalancing',
'GET',
'/test-path',
);
expect(result).toBeInstanceOf(Error);
});
});
describe('awsApiRequestSOAPAllItems', () => {
let mockExecuteFunctions: jest.Mocked<IExecuteFunctions>;
const mockParseXml = parseXml as jest.MockedFunction<typeof parseXml>;
beforeEach(() => {
mockExecuteFunctions = mockDeep<IExecuteFunctions>();
jest.clearAllMocks();
});
describe('pagination patterns', () => {
it('should handle DescribeLoadBalancers pagination', async () => {
const mockCredentials = { region: 'us-east-1' };
const xmlResponse = {
DescribeLoadBalancersResponse: {
DescribeLoadBalancersResult: {
LoadBalancerDescriptions: [
{ LoadBalancerName: 'elb-1' },
{ LoadBalancerName: 'elb-2' },
],
},
},
};
mockExecuteFunctions.getCredentials.mockResolvedValue(mockCredentials);
(mockExecuteFunctions.helpers.requestWithAuthentication as jest.Mock).mockResolvedValue(
'<xml>response</xml>',
);
mockParseXml.mockImplementation((_xml, _options, callback) => {
callback(null, xmlResponse);
});
const result = await awsApiRequestSOAPAllItems.call(
mockExecuteFunctions,
'DescribeLoadBalancersResponse.DescribeLoadBalancersResult.LoadBalancerDescriptions',
'elasticloadbalancing',
'POST',
'/describe-load-balancers',
);
expect(result).toEqual([{ LoadBalancerName: 'elb-1' }, { LoadBalancerName: 'elb-2' }]);
});
it('should handle DescribeTargetGroups with nested properties', async () => {
const mockCredentials = { region: 'us-east-1' };
const firstResponse = {
DescribeTargetGroupsResponse: {
DescribeTargetGroupsResult: {
TargetGroups: [
{ TargetGroupName: 'tg-1', Protocol: 'HTTP' },
{ TargetGroupName: 'tg-2', Protocol: 'HTTPS' },
],
NextMarker: 'marker123',
},
},
};
const secondResponse = {
DescribeTargetGroupsResponse: {
DescribeTargetGroupsResult: {
TargetGroups: [{ TargetGroupName: 'tg-3', Protocol: 'TCP' }],
},
},
};
mockExecuteFunctions.getCredentials.mockResolvedValue(mockCredentials);
(mockExecuteFunctions.helpers.requestWithAuthentication as jest.Mock)
.mockResolvedValueOnce('<xml>first-response</xml>')
.mockResolvedValueOnce('<xml>second-response</xml>');
mockParseXml
.mockImplementationOnce((_xml, _options, callback) => callback(null, firstResponse))
.mockImplementationOnce((_xml, _options, callback) => callback(null, secondResponse));
const result = await awsApiRequestSOAPAllItems.call(
mockExecuteFunctions,
'DescribeTargetGroupsResponse.DescribeTargetGroupsResult.TargetGroups',
'elasticloadbalancing',
'POST',
'/describe-target-groups',
);
expect(result).toEqual([
{ TargetGroupName: 'tg-1', Protocol: 'HTTP' },
{ TargetGroupName: 'tg-2', Protocol: 'HTTPS' },
{ TargetGroupName: 'tg-3', Protocol: 'TCP' },
]);
});
});
describe('error handling', () => {
it('should handle service error responses', async () => {
const mockCredentials = { region: 'us-east-1' };
const elbError = new Error(
'LoadBalancerNotFound: The specified load balancer does not exist',
);
mockExecuteFunctions.getCredentials.mockResolvedValue(mockCredentials);
(mockExecuteFunctions.helpers.requestWithAuthentication as jest.Mock).mockRejectedValue(
elbError,
);
await expect(
awsApiRequestSOAPAllItems.call(
mockExecuteFunctions,
'DescribeLoadBalancersResponse.DescribeLoadBalancersResult.LoadBalancerDescriptions',
'elasticloadbalancing',
'POST',
'/describe-load-balancers',
),
).rejects.toThrow('LoadBalancerNotFound: The specified load balancer does not exist');
});
});
});
});
@@ -0,0 +1,29 @@
# AWS ELB Test Implementation Notes
This document explains intentional test data adjustments made to match the current implementation behavior.
## Known Implementation Issues
### 1. Typo in Remove Listener Certificate Operation
**File**: `remove-listener-certificate.workflow.json`
**Issue**: The response contains `"sucess": true` instead of `"success": true`
**Root Cause**: Spelling error in the node implementation
**Test Adjustment**: The pinData uses the misspelled version to match actual output
**TODO**: Fix the typo in the AWS ELB node implementation and update test accordingly
### 2. Boolean Values Returned as Strings
**File**: `get-many-listener-certificates-all.workflow.json`
**Issue**: Boolean values like `IsDefault` are returned as strings ("true"/"false") instead of actual booleans
**Root Cause**: AWS API response parsing returns string values rather than converting to boolean types
**Test Adjustment**: The pinData uses string values ("true"/"false") instead of boolean values (true/false)
**Note**: This reflects how the AWS API response is actually parsed and returned by the node
## Test Data Maintenance
When updating these test files:
1. Verify the actual node implementation output before changing expected results
2. If implementation bugs are fixed, update both the node code and corresponding test data
3. Consider backward compatibility when making changes that affect output format
@@ -0,0 +1,60 @@
{
"name": "AWS ELB Add Listener Certificate Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "listenerCertificate",
"operation": "add",
"loadBalancerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456",
"listenerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2",
"certificateId": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Add Listener Certificate",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Add Listener Certificate": [
{
"json": {
"CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
"IsDefault": "false"
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Add Listener Certificate",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,78 @@
{
"name": "AWS ELB Create Load Balancer Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "loadBalancer",
"operation": "create",
"ipAddressType": "ipv4",
"name": "test-lb",
"schema": "internet-facing",
"type": "application",
"subnets": ["subnet-12345", "subnet-67890"],
"additionalFields": {
"securityGroups": ["sg-12345"],
"tagsUi": {
"tagValues": [
{
"key": "Environment",
"value": "test"
}
]
}
}
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Create Load Balancer",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Create Load Balancer": [
{
"json": {
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456",
"LoadBalancerName": "test-lb",
"Scheme": "internet-facing",
"Type": "application",
"State": {
"Code": "provisioning"
}
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Create Load Balancer",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,57 @@
{
"name": "AWS ELB Delete Load Balancer Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "loadBalancer",
"operation": "delete",
"loadBalancerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456"
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Delete Load Balancer",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Delete Load Balancer": [
{
"json": {
"success": true
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Delete Load Balancer",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,63 @@
{
"name": "AWS ELB Get Load Balancer Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "loadBalancer",
"operation": "get",
"loadBalancerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456"
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Get Load Balancer",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Get Load Balancer": [
{
"json": {
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456",
"LoadBalancerName": "test-lb",
"Scheme": "internet-facing",
"Type": "application",
"State": {
"Code": "active"
}
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Get Load Balancer",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,66 @@
{
"name": "AWS ELB Get Many Listener Certificates All Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "listenerCertificate",
"operation": "getMany",
"loadBalancerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456",
"listenerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2",
"returnAll": true
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Get Many Listener Certificates All",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Get Many Listener Certificates All": [
{
"json": {
"CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
"IsDefault": "false"
}
},
{
"json": {
"CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/87654321-4321-4321-4321-210987654321",
"IsDefault": "true"
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Get Many Listener Certificates All",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,67 @@
{
"name": "AWS ELB Get Many Listener Certificates Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "listenerCertificate",
"operation": "getMany",
"loadBalancerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456",
"listenerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2",
"returnAll": false,
"limit": 10
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Get Many Listener Certificates",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Get Many Listener Certificates": [
{
"json": {
"CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
"IsDefault": "false"
}
},
{
"json": {
"CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/87654321-4321-4321-4321-210987654321",
"IsDefault": "true"
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Get Many Listener Certificates",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,71 @@
{
"name": "AWS ELB Get Many Load Balancers with Names Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "loadBalancer",
"operation": "getMany",
"returnAll": true,
"filters": {
"names": "test-lb-1,test-lb-2"
}
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Get Many Load Balancers with Names",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Get Many Load Balancers with Names": [
{
"json": {
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb-1/1234567890123456",
"LoadBalancerName": "test-lb-1",
"Scheme": "internet-facing",
"Type": "application"
}
},
{
"json": {
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/test-lb-2/2345678901234567",
"LoadBalancerName": "test-lb-2",
"Scheme": "internal",
"Type": "network"
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Get Many Load Balancers with Names",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,69 @@
{
"name": "AWS ELB Get Many Load Balancers Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "loadBalancer",
"operation": "getMany",
"returnAll": false,
"limit": 10
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Get Many Load Balancers",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Get Many Load Balancers": [
{
"json": {
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb-1/1234567890123456",
"LoadBalancerName": "test-lb-1",
"Scheme": "internet-facing",
"Type": "application"
}
},
{
"json": {
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/test-lb-2/2345678901234567",
"LoadBalancerName": "test-lb-2",
"Scheme": "internal",
"Type": "network"
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Get Many Load Balancers",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
@@ -0,0 +1,59 @@
{
"name": "AWS ELB Remove Listener Certificate Test Workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "trigger-id",
"name": "When clicking 'Execute Workflow'"
},
{
"parameters": {
"resource": "listenerCertificate",
"operation": "remove",
"loadBalancerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456",
"listenerId": "arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2",
"certificateId": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
},
"type": "n8n-nodes-base.awsElb",
"typeVersion": 1,
"position": [200, 0],
"id": "node-id",
"name": "Remove Listener Certificate",
"credentials": {
"aws": {
"id": "credential-id",
"name": "Test AWS Credentials"
}
}
}
],
"pinData": {
"Remove Listener Certificate": [
{
"json": {
"sucess": true
}
}
]
},
"connections": {
"When clicking 'Execute Workflow'": {
"main": [
[
{
"node": "Remove Listener Certificate",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}