diff --git a/tests/aws/requests/cdn/cdn_tests.rb b/tests/aws/requests/cdn/cdn_tests.rb index d3be97039..da08a82de 100644 --- a/tests/aws/requests/cdn/cdn_tests.rb +++ b/tests/aws/requests/cdn/cdn_tests.rb @@ -2,7 +2,7 @@ Shindo.tests('Fog::CDN[:aws] | CDN requests', ['aws', 'cdn']) do @cf_connection = Fog::CDN[:aws] - tests('success') do + tests('distributions success') do test('get current ditribution list count') do pending if Fog.mocking? @@ -118,7 +118,7 @@ Shindo.tests('Fog::CDN[:aws] | CDN requests', ['aws', 'cdn']) do result } - test("disable distribution #{@dist_id}") { + test("disable distribution #{@dist_id} - can take 15 minutes to complete...") { pending if Fog.mocking? result = false @@ -140,20 +140,11 @@ Shindo.tests('Fog::CDN[:aws] | CDN requests', ['aws', 'cdn']) do result = true # unfortunately you can delete only after a distribution becomes Deployed - first = Time.now - catch(:deployed) do - loop do - response = @cf_connection.get_distribution(@dist_id) - return false if response.status != 200 - return false if (Time.now - first) > 20 * 60 # abort after 20 minutes - - if response.status == 200 and response.body['Status'] == 'Deployed' - @etag = response.headers['ETag'] - throw :deployed - end - sleep 15 - end - end + Fog.wait_for { + response = @cf_connection.get_distribution(@dist_id) + @etag = response.headers['ETag'] + response.status == 200 and response.body['Status'] == 'Deployed' + } response = @cf_connection.delete_distribution(@dist_id, @etag) if response.status != 204 @@ -163,4 +154,114 @@ Shindo.tests('Fog::CDN[:aws] | CDN requests', ['aws', 'cdn']) do result } end + + tests('streaming distributions success') do + + test('get current streaming ditribution list count') do + pending if Fog.mocking? + + @count= 0 + response = @cf_connection.get_streaming_distribution_list + if response.status == 200 + @distributions = response.body['StreamingDistributionSummary'] + @count = @distributions.count + end + + response.status == 200 + end + + test('create distribution') { + pending if Fog.mocking? + + result = false + + response = @cf_connection.post_streaming_distribution('S3Origin' => { 'DNSName' => 'test_cdn.s3.amazonaws.com'}, 'Enabled' => true) + if response.status == 201 + @dist_id = response.body['Id'] + @etag = response.headers['ETag'] + @caller_reference = response.body['StreamingDistributionConfig']['CallerReference'] + if (@dist_id.length > 0) + result = true + end + end + + result + } + + test("get info on distribution #{@dist_id}") { + pending if Fog.mocking? + + result = false + + response = @cf_connection.get_streaming_distribution(@dist_id) + if response.status == 200 + @etag = response.headers['ETag'] + status = response.body['Status'] + if ((status == 'Deployed') or (status == 'InProgress')) and not @etag.nil? + result = true + end + end + + result + } + + test('list streaming distributions') do + pending if Fog.mocking? + + result = false + + response = @cf_connection.get_streaming_distribution_list + if response.status == 200 + distributions = response.body['StreamingDistributionSummary'] + if (distributions.count > 0) + dist = distributions[0] + dist_id = dist['Id'] + end + max_items = response.body['MaxItems'] + + if (dist_id.length > 0) and (max_items > 0) + result = true + end + + end + + result + end + + test("disable distribution #{@dist_id} - can take 15 minutes to complete...") { + pending if Fog.mocking? + + result = false + + response = @cf_connection.put_streaming_distribution_config(@dist_id, @etag, 'S3Origin' => { 'DNSName' => 'test_cdn.s3.amazonaws.com'}, 'Enabled' => false, 'CallerReference' => @caller_reference) + if response.status == 200 + @etag = response.headers['ETag'] + unless @etag.nil? + result = true + end + end + + result + } + + test("remove distribution #{@dist_id}") { + pending if Fog.mocking? + + result = true + + # unfortunately you can delete only after a distribution becomes Deployed + Fog.wait_for { + response = @cf_connection.get_distribution(@dist_id) + @etag = response.headers['ETag'] + response.status == 200 and response.body['Status'] == 'Deployed' + } + + response = @cf_connection.delete_streaming_distribution(@dist_id, @etag) + if response.status != 204 + result = false + end + + result + } + end end