fog 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. data/.document +5 -0
  2. data/.gitignore +6 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +7 -0
  5. data/Rakefile +98 -0
  6. data/VERSION +1 -0
  7. data/benchs/fog_vs.rb +135 -0
  8. data/benchs/headers_split_vs_match.rb +18 -0
  9. data/benchs/params.rb +43 -0
  10. data/benchs/parse_vs_push.rb +60 -0
  11. data/benchs/stripping.rb +26 -0
  12. data/lib/fog.rb +21 -0
  13. data/lib/fog/aws.rb +145 -0
  14. data/lib/fog/aws/ec2.rb +173 -0
  15. data/lib/fog/aws/models/ec2/address.rb +31 -0
  16. data/lib/fog/aws/models/ec2/addresses.rb +36 -0
  17. data/lib/fog/aws/models/ec2/key_pair.rb +35 -0
  18. data/lib/fog/aws/models/ec2/key_pairs.rb +36 -0
  19. data/lib/fog/aws/models/ec2/volume.rb +47 -0
  20. data/lib/fog/aws/models/ec2/volumes.rb +36 -0
  21. data/lib/fog/aws/models/s3/bucket.rb +77 -0
  22. data/lib/fog/aws/models/s3/buckets.rb +83 -0
  23. data/lib/fog/aws/models/s3/object.rb +76 -0
  24. data/lib/fog/aws/models/s3/objects.rb +97 -0
  25. data/lib/fog/aws/models/s3/owner.rb +18 -0
  26. data/lib/fog/aws/parsers/ec2/allocate_address.rb +19 -0
  27. data/lib/fog/aws/parsers/ec2/attach_volume.rb +22 -0
  28. data/lib/fog/aws/parsers/ec2/basic.rb +25 -0
  29. data/lib/fog/aws/parsers/ec2/create_key_pair.rb +20 -0
  30. data/lib/fog/aws/parsers/ec2/create_snapshot.rb +22 -0
  31. data/lib/fog/aws/parsers/ec2/create_volume.rb +24 -0
  32. data/lib/fog/aws/parsers/ec2/describe_addresses.rb +30 -0
  33. data/lib/fog/aws/parsers/ec2/describe_availability_zones.rb +30 -0
  34. data/lib/fog/aws/parsers/ec2/describe_images.rb +49 -0
  35. data/lib/fog/aws/parsers/ec2/describe_instances.rb +73 -0
  36. data/lib/fog/aws/parsers/ec2/describe_key_pairs.rb +30 -0
  37. data/lib/fog/aws/parsers/ec2/describe_regions.rb +30 -0
  38. data/lib/fog/aws/parsers/ec2/describe_security_groups.rb +75 -0
  39. data/lib/fog/aws/parsers/ec2/describe_snapshots.rb +30 -0
  40. data/lib/fog/aws/parsers/ec2/describe_volumes.rb +57 -0
  41. data/lib/fog/aws/parsers/ec2/detach_volume.rb +22 -0
  42. data/lib/fog/aws/parsers/ec2/get_console_output.rb +28 -0
  43. data/lib/fog/aws/parsers/ec2/run_instances.rb +65 -0
  44. data/lib/fog/aws/parsers/ec2/terminate_instances.rb +55 -0
  45. data/lib/fog/aws/parsers/s3/copy_object.rb +22 -0
  46. data/lib/fog/aws/parsers/s3/get_bucket.rb +46 -0
  47. data/lib/fog/aws/parsers/s3/get_bucket_location.rb +20 -0
  48. data/lib/fog/aws/parsers/s3/get_request_payment.rb +20 -0
  49. data/lib/fog/aws/parsers/s3/get_service.rb +32 -0
  50. data/lib/fog/aws/parsers/simpledb/basic.rb +31 -0
  51. data/lib/fog/aws/parsers/simpledb/domain_metadata.rb +30 -0
  52. data/lib/fog/aws/parsers/simpledb/get_attributes.rb +34 -0
  53. data/lib/fog/aws/parsers/simpledb/list_domains.rb +28 -0
  54. data/lib/fog/aws/parsers/simpledb/select.rb +39 -0
  55. data/lib/fog/aws/requests/ec2/allocate_address.rb +50 -0
  56. data/lib/fog/aws/requests/ec2/associate_address.rb +59 -0
  57. data/lib/fog/aws/requests/ec2/attach_volume.rb +71 -0
  58. data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +32 -0
  59. data/lib/fog/aws/requests/ec2/create_key_pair.rb +60 -0
  60. data/lib/fog/aws/requests/ec2/create_security_group.rb +61 -0
  61. data/lib/fog/aws/requests/ec2/create_snapshot.rb +65 -0
  62. data/lib/fog/aws/requests/ec2/create_volume.rb +66 -0
  63. data/lib/fog/aws/requests/ec2/delete_key_pair.rb +49 -0
  64. data/lib/fog/aws/requests/ec2/delete_security_group.rb +52 -0
  65. data/lib/fog/aws/requests/ec2/delete_snapshot.rb +53 -0
  66. data/lib/fog/aws/requests/ec2/delete_volume.rb +55 -0
  67. data/lib/fog/aws/requests/ec2/describe_addresses.rb +61 -0
  68. data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +64 -0
  69. data/lib/fog/aws/requests/ec2/describe_images.rb +41 -0
  70. data/lib/fog/aws/requests/ec2/describe_instances.rb +114 -0
  71. data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +63 -0
  72. data/lib/fog/aws/requests/ec2/describe_regions.rb +61 -0
  73. data/lib/fog/aws/requests/ec2/describe_security_groups.rb +71 -0
  74. data/lib/fog/aws/requests/ec2/describe_snapshots.rb +78 -0
  75. data/lib/fog/aws/requests/ec2/describe_volumes.rb +85 -0
  76. data/lib/fog/aws/requests/ec2/detach_volume.rb +62 -0
  77. data/lib/fog/aws/requests/ec2/disassociate_address.rb +55 -0
  78. data/lib/fog/aws/requests/ec2/get_console_output.rb +26 -0
  79. data/lib/fog/aws/requests/ec2/reboot_instances.rb +24 -0
  80. data/lib/fog/aws/requests/ec2/release_address.rb +50 -0
  81. data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +32 -0
  82. data/lib/fog/aws/requests/ec2/run_instances.rb +134 -0
  83. data/lib/fog/aws/requests/ec2/terminate_instances.rb +80 -0
  84. data/lib/fog/aws/requests/s3/copy_object.rb +79 -0
  85. data/lib/fog/aws/requests/s3/delete_bucket.rb +53 -0
  86. data/lib/fog/aws/requests/s3/delete_object.rb +52 -0
  87. data/lib/fog/aws/requests/s3/get_bucket.rb +100 -0
  88. data/lib/fog/aws/requests/s3/get_bucket_location.rb +53 -0
  89. data/lib/fog/aws/requests/s3/get_object.rb +82 -0
  90. data/lib/fog/aws/requests/s3/get_request_payment.rb +53 -0
  91. data/lib/fog/aws/requests/s3/get_service.rb +58 -0
  92. data/lib/fog/aws/requests/s3/head_object.rb +61 -0
  93. data/lib/fog/aws/requests/s3/put_bucket.rb +69 -0
  94. data/lib/fog/aws/requests/s3/put_object.rb +76 -0
  95. data/lib/fog/aws/requests/s3/put_request_payment.rb +56 -0
  96. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +31 -0
  97. data/lib/fog/aws/requests/simpledb/create_domain.rb +25 -0
  98. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +34 -0
  99. data/lib/fog/aws/requests/simpledb/delete_domain.rb +25 -0
  100. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +30 -0
  101. data/lib/fog/aws/requests/simpledb/get_attributes.rb +35 -0
  102. data/lib/fog/aws/requests/simpledb/list_domains.rb +30 -0
  103. data/lib/fog/aws/requests/simpledb/put_attributes.rb +29 -0
  104. data/lib/fog/aws/requests/simpledb/select.rb +29 -0
  105. data/lib/fog/aws/s3.rb +157 -0
  106. data/lib/fog/aws/simpledb.rb +157 -0
  107. data/lib/fog/collection.rb +77 -0
  108. data/lib/fog/connection.rb +130 -0
  109. data/lib/fog/errors.rb +145 -0
  110. data/lib/fog/model.rb +72 -0
  111. data/lib/fog/parser.rb +30 -0
  112. data/lib/fog/response.rb +12 -0
  113. data/spec/aws/models/s3/bucket_spec.rb +130 -0
  114. data/spec/aws/models/s3/buckets_spec.rb +79 -0
  115. data/spec/aws/models/s3/object_spec.rb +121 -0
  116. data/spec/aws/models/s3/objects_spec.rb +112 -0
  117. data/spec/aws/models/s3/owner_spec.rb +18 -0
  118. data/spec/aws/requests/ec2/allocate_address_spec.rb +18 -0
  119. data/spec/aws/requests/ec2/associate_address_spec.rb +42 -0
  120. data/spec/aws/requests/ec2/attach_volume_spec.rb +53 -0
  121. data/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb +26 -0
  122. data/spec/aws/requests/ec2/create_key_pair_spec.rb +36 -0
  123. data/spec/aws/requests/ec2/create_security_group_spec.rb +34 -0
  124. data/spec/aws/requests/ec2/create_snapshot_spec.rb +37 -0
  125. data/spec/aws/requests/ec2/create_volume_spec.rb +23 -0
  126. data/spec/aws/requests/ec2/delete_key_pair_spec.rb +21 -0
  127. data/spec/aws/requests/ec2/delete_security_group_spec.rb +26 -0
  128. data/spec/aws/requests/ec2/delete_snapshot_spec.rb +35 -0
  129. data/spec/aws/requests/ec2/delete_volume_spec.rb +26 -0
  130. data/spec/aws/requests/ec2/describe_addresses_spec.rb +38 -0
  131. data/spec/aws/requests/ec2/describe_availability_zones_spec.rb +23 -0
  132. data/spec/aws/requests/ec2/describe_images_spec.rb +39 -0
  133. data/spec/aws/requests/ec2/describe_instances_spec.rb +86 -0
  134. data/spec/aws/requests/ec2/describe_key_pairs_spec.rb +42 -0
  135. data/spec/aws/requests/ec2/describe_regions_spec.rb +21 -0
  136. data/spec/aws/requests/ec2/describe_security_groups_spec.rb +51 -0
  137. data/spec/aws/requests/ec2/describe_snapshots_spec.rb +54 -0
  138. data/spec/aws/requests/ec2/describe_volumes_spec.rb +50 -0
  139. data/spec/aws/requests/ec2/detach_volume_spec.rb +43 -0
  140. data/spec/aws/requests/ec2/disassociate_address_spec.rb +35 -0
  141. data/spec/aws/requests/ec2/get_console_output_spec.rb +23 -0
  142. data/spec/aws/requests/ec2/reboot_instances_spec.rb +21 -0
  143. data/spec/aws/requests/ec2/release_address_spec.rb +26 -0
  144. data/spec/aws/requests/ec2/revoke_security_group_ingress_spec.rb +32 -0
  145. data/spec/aws/requests/ec2/run_instances_spec.rb +41 -0
  146. data/spec/aws/requests/ec2/terminate_instances_spec.rb +35 -0
  147. data/spec/aws/requests/s3/copy_object_spec.rb +62 -0
  148. data/spec/aws/requests/s3/delete_bucket_spec.rb +36 -0
  149. data/spec/aws/requests/s3/delete_object_spec.rb +37 -0
  150. data/spec/aws/requests/s3/get_bucket_location_spec.rb +30 -0
  151. data/spec/aws/requests/s3/get_bucket_spec.rb +110 -0
  152. data/spec/aws/requests/s3/get_object_spec.rb +45 -0
  153. data/spec/aws/requests/s3/get_request_payment_spec.rb +30 -0
  154. data/spec/aws/requests/s3/get_service_spec.rb +33 -0
  155. data/spec/aws/requests/s3/head_object_spec.rb +28 -0
  156. data/spec/aws/requests/s3/put_bucket_spec.rb +19 -0
  157. data/spec/aws/requests/s3/put_object_spec.rb +38 -0
  158. data/spec/aws/requests/s3/put_request_payment_spec.rb +29 -0
  159. data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +22 -0
  160. data/spec/aws/requests/simpledb/create_domain_spec.rb +21 -0
  161. data/spec/aws/requests/simpledb/delete_attributes_spec.rb +22 -0
  162. data/spec/aws/requests/simpledb/delete_domain_spec.rb +21 -0
  163. data/spec/aws/requests/simpledb/domain_metadata_spec.rb +43 -0
  164. data/spec/aws/requests/simpledb/get_attributes_spec.rb +31 -0
  165. data/spec/aws/requests/simpledb/list_domains_spec.rb +30 -0
  166. data/spec/aws/requests/simpledb/put_attributes_spec.rb +22 -0
  167. data/spec/aws/requests/simpledb/select_spec.rb +9 -0
  168. data/spec/lorem.txt +1 -0
  169. data/spec/spec.opts +1 -0
  170. data/spec/spec_helper.rb +66 -0
  171. metadata +309 -0
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Fog::AWS::S3::Buckets' do
4
+
5
+ describe "#all" do
6
+
7
+ it "should return a Fog::AWS::S3::Buckets" do
8
+ s3.buckets.all.should be_a(Fog::AWS::S3::Buckets)
9
+ end
10
+
11
+ it "should include persisted buckets" do
12
+ bucket = s3.buckets.create(:name => 'fogbucketname')
13
+ s3.buckets.all.keys.should include('fogbucketname')
14
+ bucket.destroy
15
+ end
16
+
17
+ end
18
+
19
+ describe "#create" do
20
+
21
+ before(:each) do
22
+ @bucket = s3.buckets.create(:name => 'fogbucketname')
23
+ end
24
+
25
+ after(:each) do
26
+ @bucket.destroy
27
+ end
28
+
29
+ it "should return a Fog::AWS::S3::Bucket" do
30
+ @bucket.should be_a(Fog::AWS::S3::Bucket)
31
+ end
32
+
33
+ it "should exist on s3" do
34
+ s3.buckets.get(@bucket.name).should_not be_nil
35
+ end
36
+
37
+ end
38
+
39
+ describe "#get" do
40
+
41
+ it "should return a Fog::AWS::S3::Bucket if a matching bucket exists" do
42
+ bucket = s3.buckets.create(:name => 'fogbucketname')
43
+ get = s3.buckets.get('fogbucketname')
44
+ bucket.attributes.should == get.attributes
45
+ bucket.destroy
46
+ end
47
+
48
+ it "should return memoized bucket on subsequent gets" do
49
+ bucket = s3.buckets.create(:name => 'fogbucketname')
50
+ get1 = s3.buckets.get('fogbucketname')
51
+ s3.should_not_receive(:get_bucket)
52
+ get2 = s3.buckets.get('fogbucketname')
53
+ get1.attributes.should == get2.attributes
54
+ bucket.destroy
55
+ end
56
+
57
+ it "should return nil if no matching bucket exists" do
58
+ s3.buckets.get('fogbucketname').should be_nil
59
+ end
60
+
61
+ end
62
+
63
+ describe "#new" do
64
+
65
+ it "should return a Fog::AWS::S3::Bucket" do
66
+ s3.buckets.new.should be_a(Fog::AWS::S3::Bucket)
67
+ end
68
+
69
+ end
70
+
71
+ describe "#reload" do
72
+
73
+ it "should return a Fog::AWS::S3::Buckets" do
74
+ s3.buckets.all.should be_a(Fog::AWS::S3::Buckets)
75
+ end
76
+
77
+ end
78
+
79
+ end
@@ -0,0 +1,121 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'S3::Object' do
4
+
5
+ before(:each) do
6
+ @bucket = s3.buckets.create(:name => 'fogbucketname')
7
+ end
8
+
9
+ after(:each) do
10
+ @bucket.destroy
11
+ end
12
+
13
+ describe "#initialize" do
14
+
15
+ it "should remap attributes from parser" do
16
+ now = Time.now
17
+ bucket = Fog::AWS::S3::Object.new(
18
+ 'Content-Length' => 10,
19
+ 'Content-Type' => 'contenttype',
20
+ 'Etag' => 'etag',
21
+ 'Key' => 'key',
22
+ 'Last-Modified' => now,
23
+ 'Size' => 10,
24
+ 'StorageClass' => 'storageclass'
25
+ )
26
+ bucket.content_length == 10
27
+ bucket.content_type.should == 'contenttype'
28
+ bucket.etag.should == 'etag'
29
+ bucket.key.should == 'key'
30
+ bucket.last_modified.should == now
31
+ bucket.size.should == 10
32
+ bucket.storage_class.should == 'storageclass'
33
+
34
+ bucket = Fog::AWS::S3::Object.new(
35
+ 'ETag' => 'etag',
36
+ 'LastModified' => now
37
+ )
38
+ bucket.etag.should == 'etag'
39
+ bucket.last_modified.should == now
40
+ end
41
+
42
+ end
43
+
44
+ describe "#bucket" do
45
+
46
+ before(:each) do
47
+ @object = @bucket.objects.new(:key => 'foo')
48
+ end
49
+
50
+
51
+ it "should return an S3::Bucket" do
52
+ @object.bucket.should be_a(Fog::AWS::S3::Bucket)
53
+ end
54
+
55
+ it "should be the bucket the object is related to" do
56
+ @object.bucket.should == @bucket
57
+ end
58
+
59
+ end
60
+
61
+ describe "#copy" do
62
+
63
+ it "should return a Fog::AWS::S3::Object with matching attributes" do
64
+ other_bucket = s3.buckets.create(:name => 'fogotherbucketname')
65
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
66
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
67
+ other_object = object.copy('fogotherbucketname', 'fogotherobjectname')
68
+ object.reload.attributes.reject{|key,value| [:key, :last_modified].include?(key)}.should == other_object.reload.attributes.reject{|key,value| [:key, :last_modified].include?(key)}
69
+ other_object.destroy
70
+ object.destroy
71
+ other_bucket.destroy
72
+ end
73
+
74
+ end
75
+
76
+ describe "#destroy" do
77
+
78
+ it "should return true if the object is deleted" do
79
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
80
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
81
+ object.destroy.should be_true
82
+ end
83
+
84
+ it "should return true if the object does not exist" do
85
+ object = @bucket.objects.new(:key => 'fogobjectname')
86
+ object.destroy.should be_true
87
+ end
88
+
89
+ end
90
+
91
+ describe "#reload" do
92
+
93
+ it "should return a Fog::AWS::S3::Object" do
94
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
95
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
96
+ # object.reload.should be_a(Fog::AWS::S3::Object)
97
+ object.destroy
98
+ end
99
+
100
+ it "should reset attributes to remote state" do
101
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
102
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
103
+ object.last_modified = Time.now
104
+ # object.reload.attributes.should == object.attributes
105
+ object.destroy
106
+ end
107
+
108
+ end
109
+
110
+ describe "#save" do
111
+
112
+ it "should return the success value" do
113
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
114
+ object = @bucket.objects.new(:key => 'fogobjectname', :body => file)
115
+ object.save.should be_true
116
+ object.destroy
117
+ end
118
+
119
+ end
120
+
121
+ end
@@ -0,0 +1,112 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Fog::AWS::S3::Objects' do
4
+
5
+ before(:each) do
6
+ @bucket = s3.buckets.create(:name => 'fogbucketname')
7
+ end
8
+
9
+ after(:each) do
10
+ @bucket.destroy
11
+ end
12
+
13
+ describe "#initialize" do
14
+
15
+ it "should remap attributes from parser" do
16
+ objects = Fog::AWS::S3::Objects.new(
17
+ 'IsTruncated' => true,
18
+ 'Marker' => 'marker',
19
+ 'MaxKeys' => 1,
20
+ 'Prefix' => 'prefix'
21
+ )
22
+ objects.is_truncated.should == true
23
+ objects.marker.should == 'marker'
24
+ objects.max_keys.should == 1
25
+ objects.prefix.should == 'prefix'
26
+ end
27
+
28
+ end
29
+
30
+ describe "#all" do
31
+
32
+ it "should return a Fog::AWS::S3::Objects" do
33
+ @bucket.objects.all.should be_a(Fog::AWS::S3::Objects)
34
+ end
35
+
36
+ end
37
+
38
+ describe "#bucket" do
39
+
40
+ it "should return a Fog::AWS::S3::Bucket" do
41
+ @bucket.objects.bucket.should be_a(Fog::AWS::S3::Bucket)
42
+ end
43
+
44
+ it "should be the bucket the objects are related to" do
45
+ @bucket.objects.bucket.should == @bucket
46
+ end
47
+ end
48
+
49
+ describe "#create" do
50
+
51
+ it "should return a Fog::AWS::S3::Object" do
52
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
53
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
54
+ object.should be_a(Fog::AWS::S3::Object)
55
+ object.destroy
56
+ end
57
+
58
+ it "should exist on s3" do
59
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
60
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
61
+ @bucket.objects.get('fogobjectname').should_not be_nil
62
+ object.destroy
63
+ end
64
+
65
+ end
66
+
67
+ describe "#get" do
68
+
69
+ it "should return a Fog::AWS::S3::Object with metadata and data" do
70
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
71
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
72
+ object = @bucket.objects.get('fogobjectname')
73
+ object.body.should_not be_nil
74
+ object.content_length.should_not be_nil
75
+ object.etag.should_not be_nil
76
+ object.last_modified.should_not be_nil
77
+ object.destroy
78
+ end
79
+
80
+ end
81
+
82
+ describe "#head" do
83
+
84
+ it "should return a Fog::AWS::S3::Object with metadata" do
85
+ file = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r')
86
+ object = @bucket.objects.create(:key => 'fogobjectname', :body => file)
87
+ object = @bucket.objects.get('fogobjectname')
88
+ object.content_length.should_not be_nil
89
+ object.etag.should_not be_nil
90
+ object.last_modified.should_not be_nil
91
+ object.destroy
92
+ end
93
+
94
+ end
95
+
96
+ describe "#new" do
97
+
98
+ it "should return a Fog::AWS::S3::Object" do
99
+ @bucket.objects.new.should be_a(Fog::AWS::S3::Object)
100
+ end
101
+
102
+ end
103
+
104
+ describe "#reload" do
105
+
106
+ it "should reload from s3" do
107
+ @bucket.objects.reload.should == @bucket.objects
108
+ end
109
+
110
+ end
111
+
112
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Fog::AWS::S3::Owner' do
4
+
5
+ describe "#initialize" do
6
+
7
+ it "should remap attributes from parser" do
8
+ owner = Fog::AWS::S3::Owner.new(
9
+ 'DisplayName' => 'name',
10
+ 'ID' => 'id'
11
+ )
12
+ owner.display_name.should == 'name'
13
+ owner.id.should == 'id'
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'EC2.allocate_address' do
4
+ describe 'success' do
5
+
6
+ after(:each) do
7
+ ec2.release_address(@public_ip)
8
+ end
9
+
10
+ it "should return proper attributes" do
11
+ actual = ec2.allocate_address
12
+ actual.body['requestId'].should be_a(String)
13
+ @public_ip = actual.body['publicIp']
14
+ actual.body['publicIp'].should be_a(String)
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,42 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'EC2.associate_address' do
4
+ describe 'success' do
5
+
6
+ before(:each) do
7
+ @instance_id = ec2.run_instances('ami-5ee70037', 1, 1).body['instancesSet'].first['instanceId']
8
+ @public_ip = ec2.allocate_address.body['publicIp']
9
+ end
10
+
11
+ after(:each) do
12
+ ec2.release_address(@public_ip)
13
+ ec2.terminate_instances(@instance_id)
14
+ end
15
+
16
+ it "should return proper attributes" do
17
+ actual = ec2.associate_address(@instance_id, @public_ip)
18
+ actual.body['requestId'].should be_a(String)
19
+ [false, true].should include(actual.body['return'])
20
+ end
21
+
22
+ end
23
+ describe 'failure' do
24
+
25
+ it "should raise a BadRequest error if the instance does not exist" do
26
+ @public_ip = ec2.allocate_address.body['publicIp']
27
+ lambda {
28
+ ec2.associate_address('i-00000000', @public_ip)
29
+ }.should raise_error(Fog::Errors::BadRequest)
30
+ ec2.release_address(@public_ip)
31
+ end
32
+
33
+ it "should raise a BadRequest error if the address does not exist" do
34
+ @instance_id = ec2.run_instances('ami-5ee70037', 1, 1).body['instancesSet'].first['instanceId']
35
+ lambda {
36
+ ec2.associate_address(@instance_id, '127.0.0.1')
37
+ }.should raise_error(Fog::Errors::BadRequest)
38
+ ec2.terminate_instances(@instance_id)
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'EC2.attach_volume' do
4
+ describe 'success' do
5
+
6
+ before(:each) do
7
+ @instance_id = ec2.run_instances('ami-5ee70037', 1, 1, {'Placement.AvailabilityZone' => 'us-east-1a'}).body['instancesSet'].first['instanceId']
8
+ @volume_id = ec2.create_volume('us-east-1a', 1).body['volumeId']
9
+ end
10
+
11
+ after(:each) do
12
+ eventually do
13
+ ec2.detach_volume(@volume_id)
14
+ end
15
+ eventually do
16
+ ec2.delete_volume(@volume_id)
17
+ ec2.terminate_instances(@instance_id)
18
+ end
19
+ end
20
+
21
+ it "should return proper attributes" do
22
+ eventually(128) do
23
+ actual = ec2.attach_volume(@instance_id, @volume_id, '/dev/sdh')
24
+ actual.body['attachTime'].should be_a(Time)
25
+ actual.body['device'].should be_a(String)
26
+ actual.body['instanceId'].should be_a(String)
27
+ actual.body['requestId'].should be_a(String)
28
+ actual.body['status'].should be_a(String)
29
+ actual.body['volumeId'].should be_a(String)
30
+ end
31
+ end
32
+
33
+ end
34
+ describe 'failure' do
35
+
36
+ it "should raise a BadRequest error if the instance does not exist" do
37
+ @volume_id = ec2.create_volume('us-east-1a', 1).body['volumeId']
38
+ lambda {
39
+ ec2.attach_volume('i-00000000', @volume_id, '/dev/sdh')
40
+ }.should raise_error(Fog::Errors::BadRequest)
41
+ ec2.delete_volume(@volume_id)
42
+ end
43
+
44
+ it "should raise a BadRequest error if the address does not exist" do
45
+ @instance_id = ec2.run_instances('ami-5ee70037', 1, 1).body['instancesSet'].first['instanceId']
46
+ lambda {
47
+ ec2.attach_volume(@instance_id, 'vol-00000000', '/dev/sdh')
48
+ }.should raise_error(Fog::Errors::BadRequest)
49
+ ec2.terminate_instances(@instance_id)
50
+ end
51
+
52
+ end
53
+ end