mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
746fbc1fd5
Test for `AWS[]` was buggy and to prove it when fixed it revealed that the `data_pipeline` service was not returning the class not an instance of the class.
99 lines
2.9 KiB
Ruby
99 lines
2.9 KiB
Ruby
require "minitest/autorun"
|
|
require "fog"
|
|
require "fog/bin"
|
|
require "helpers/bin"
|
|
|
|
describe AWS do
|
|
include Fog::BinSpec
|
|
|
|
let(:subject) { AWS }
|
|
|
|
KEY_CLASS_MAPPING = {
|
|
:auto_scaling => Fog::AWS::AutoScaling,
|
|
:beanstalk => Fog::AWS::ElasticBeanstalk,
|
|
:cdn => Fog::CDN::AWS,
|
|
:cloud_formation => Fog::AWS::CloudFormation,
|
|
:cloud_watch => Fog::AWS::CloudWatch,
|
|
:compute => Fog::Compute::AWS,
|
|
:data_pipeline => Fog::AWS::DataPipeline,
|
|
:ddb => Fog::AWS::DynamoDB,
|
|
:dynamodb => Fog::AWS::DynamoDB,
|
|
:dns => Fog::DNS::AWS,
|
|
:elasticache => Fog::AWS::Elasticache,
|
|
:elb => Fog::AWS::ELB,
|
|
:emr => Fog::AWS::EMR,
|
|
:glacier => Fog::AWS::Glacier,
|
|
:iam => Fog::AWS::IAM,
|
|
:redshift => Fog::AWS::Redshift,
|
|
:sdb => Fog::AWS::SimpleDB,
|
|
:simpledb => Fog::AWS::SimpleDB,
|
|
:ses => Fog::AWS::SES,
|
|
:sqs => Fog::AWS::SQS,
|
|
:eu_storage => Fog::Storage::AWS,
|
|
:storage => Fog::Storage::AWS,
|
|
:rds => Fog::AWS::RDS,
|
|
:sns => Fog::AWS::SNS,
|
|
:sts => Fog::AWS::STS
|
|
}
|
|
|
|
describe "#services" do
|
|
it "includes all services" do
|
|
assert_includes AWS.services, :auto_scaling
|
|
assert_includes AWS.services, :beanstalk
|
|
assert_includes AWS.services, :cdn
|
|
assert_includes AWS.services, :cloud_formation
|
|
assert_includes AWS.services, :cloud_watch
|
|
assert_includes AWS.services, :compute
|
|
assert_includes AWS.services, :data_pipeline
|
|
assert_includes AWS.services, :dynamodb
|
|
assert_includes AWS.services, :dns
|
|
assert_includes AWS.services, :elasticache
|
|
assert_includes AWS.services, :elb
|
|
assert_includes AWS.services, :emr
|
|
assert_includes AWS.services, :glacier
|
|
assert_includes AWS.services, :iam
|
|
assert_includes AWS.services, :redshift
|
|
assert_includes AWS.services, :rds
|
|
assert_includes AWS.services, :simpledb
|
|
assert_includes AWS.services, :ses
|
|
assert_includes AWS.services, :sqs
|
|
assert_includes AWS.services, :storage
|
|
assert_includes AWS.services, :sns
|
|
assert_includes AWS.services, :sts
|
|
end
|
|
end
|
|
|
|
describe "#class_for" do
|
|
describe "when key exists" do
|
|
it "maps to correct class" do
|
|
KEY_CLASS_MAPPING.each do |key, klass|
|
|
assert_equal klass, AWS.class_for(key)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "when key does not exist" do
|
|
it "raises ArgumentError" do
|
|
assert_raises(ArgumentError) { AWS.class_for(:bad_key) }
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#[]" do
|
|
describe "when service is recognised" do
|
|
it "returns correct instance" do
|
|
KEY_CLASS_MAPPING.each do |key, klass|
|
|
klass.stub(:new, "#{klass} instance") do
|
|
assert_equal "#{klass} instance", AWS[key]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "when service is not recognised" do
|
|
it "raises ArgumentError" do
|
|
assert_raises(ArgumentError) { AWS[:bad_service] }
|
|
end
|
|
end
|
|
end
|
|
end
|