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,
`
arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456
test-lb
internet-facing
application
provisioning
`,
);
});
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,
`
arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb/1234567890123456
test-lb
internet-facing
application
active
`,
);
});
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,
`
arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb-1/1234567890123456
test-lb-1
internet-facing
application
arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/test-lb-2/2345678901234567
test-lb-2
internal
network
`,
);
mock
.get(
'/?Action=DescribeLoadBalancers&Version=2015-12-01&Names.member.1=test-lb-1&Names.member.2=test-lb-2',
)
.reply(
200,
`
arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/test-lb-1/1234567890123456
test-lb-1
internet-facing
application
arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/test-lb-2/2345678901234567
test-lb-2
internal
network
`,
);
});
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,
`
`,
);
});
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,
`
arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
false
`,
);
});
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,
`
arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
false
arn:aws:acm:us-east-1:123456789012:certificate/87654321-4321-4321-4321-210987654321
true
`,
);
mock
.get(
'/?Action=DescribeListenerCertificates&Version=2015-12-01&ListenerArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/test-lb/1234567890123456/f2f7dc8efc522ab2',
)
.reply(
200,
`
arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
false
arn:aws:acm:us-east-1:123456789012:certificate/87654321-4321-4321-4321-210987654321
true
`,
);
});
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,
`
`,
);
});
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['remove-listener-certificate.workflow.json'],
});
});
});
});