fastly 1.00 → 1.1.0
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.
- checksums.yaml +7 -7
- data/.gitignore +1 -0
- data/.travis.yml +6 -0
- data/Changes +14 -0
- data/LICENSE +20 -0
- data/README.md +94 -61
- data/Rakefile +9 -0
- data/fastly.gemspec +5 -3
- data/lib/fastly.rb +233 -18
- data/lib/fastly/backend.rb +11 -2
- data/lib/fastly/base.rb +1 -1
- data/lib/fastly/belongs_to_service_and_version.rb +7 -2
- data/lib/fastly/cache_setting.rb +47 -0
- data/lib/fastly/client.rb +7 -1
- data/lib/fastly/condition.rb +40 -0
- data/lib/fastly/director.rb +2 -2
- data/lib/fastly/fetcher.rb +2 -2
- data/lib/fastly/gem_version.rb +4 -0
- data/lib/fastly/gzip.rb +39 -0
- data/lib/fastly/header.rb +88 -0
- data/lib/fastly/request_setting.rb +90 -0
- data/lib/fastly/response_object.rb +54 -0
- data/lib/fastly/s3_logging.rb +68 -0
- data/lib/fastly/service.rb +4 -4
- data/lib/fastly/settings.rb +9 -4
- data/lib/fastly/string.rb +7 -0
- data/lib/fastly/syslog.rb +6 -1
- data/lib/fastly/version.rb +7 -0
- data/test/admin_test.rb +7 -11
- data/test/api_key_test.rb +11 -14
- data/test/common.rb +98 -38
- data/test/full_login_test.rb +17 -21
- data/test/helper.rb +19 -3
- data/test/stats_test.rb +85 -0
- metadata +95 -56
@@ -0,0 +1,68 @@
|
|
1
|
+
class Fastly
|
2
|
+
# An s3 endpoint to stream logs to
|
3
|
+
class S3Logging < BelongsToServiceAndVersion
|
4
|
+
attr_accessor :service_id, :name, :bucket_name, :access_key, :secret_key, :path, :period, :gzip_level, :format, :response_condition
|
5
|
+
|
6
|
+
##
|
7
|
+
# :attr: service_id
|
8
|
+
#
|
9
|
+
# The id of the service this belongs to.
|
10
|
+
|
11
|
+
##
|
12
|
+
# :attr: version
|
13
|
+
#
|
14
|
+
# The number of the version this belongs to.
|
15
|
+
|
16
|
+
##
|
17
|
+
# :attr: name
|
18
|
+
#
|
19
|
+
# The name for this s3 rule
|
20
|
+
|
21
|
+
##
|
22
|
+
# :attr: bucket_name
|
23
|
+
#
|
24
|
+
# The name of the s3 bucket
|
25
|
+
|
26
|
+
##
|
27
|
+
# :attr: access_key
|
28
|
+
#
|
29
|
+
# The bucket's s3 account access key
|
30
|
+
|
31
|
+
##
|
32
|
+
# :attr: secret_key
|
33
|
+
#
|
34
|
+
# The bucket's s3 account secret key
|
35
|
+
|
36
|
+
##
|
37
|
+
# :attr: path
|
38
|
+
#
|
39
|
+
# The path to upload logs to
|
40
|
+
|
41
|
+
##
|
42
|
+
# :attr: period
|
43
|
+
#
|
44
|
+
# How frequently the logs should be dumped (in seconds, default 3600)
|
45
|
+
|
46
|
+
##
|
47
|
+
# :attr: gzip_level
|
48
|
+
#
|
49
|
+
# What level of gzip compression to have when dumping the logs (default
|
50
|
+
# 0, no compression).
|
51
|
+
|
52
|
+
##
|
53
|
+
# :attr: format
|
54
|
+
#
|
55
|
+
# Apache style log formatting
|
56
|
+
|
57
|
+
##
|
58
|
+
# :attr: response_condition
|
59
|
+
#
|
60
|
+
# When to execute the s3 logging. If empty, always execute.
|
61
|
+
|
62
|
+
private
|
63
|
+
# The path here is a bit non-standard
|
64
|
+
def self.path
|
65
|
+
"logging/s3"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/fastly/service.rb
CHANGED
@@ -59,13 +59,13 @@ class Fastly
|
|
59
59
|
|
60
60
|
# Purge all assets from this service.
|
61
61
|
def purge_all
|
62
|
-
res = client.
|
62
|
+
res = fetcher.client.post(Fastly::Service.get_path(self.id)+"/purge_all")
|
63
63
|
end
|
64
64
|
|
65
65
|
|
66
66
|
# Purge anything with the specific key from the given service.
|
67
67
|
def purge_by_key(key)
|
68
|
-
res = client.
|
68
|
+
res = fetcher.client.post(Fastly::Service.get_path(self.id)+"/purge/#{key}")
|
69
69
|
end
|
70
70
|
|
71
71
|
# Set all the versions that this service has had.
|
@@ -85,7 +85,7 @@ class Fastly
|
|
85
85
|
|
86
86
|
# A deep hash of nested details
|
87
87
|
def details(opts={})
|
88
|
-
client.get(get_path(self.id)+"/details", opts);
|
88
|
+
fetcher.client.get(Fastly::Service.get_path(self.id)+"/details", opts);
|
89
89
|
end
|
90
90
|
|
91
91
|
# Get the Customer object for this Service
|
@@ -109,4 +109,4 @@ class Fastly
|
|
109
109
|
return nil if hash.nil?
|
110
110
|
klass.new(hash, self)
|
111
111
|
end
|
112
|
-
end
|
112
|
+
end
|
data/lib/fastly/settings.rb
CHANGED
@@ -19,7 +19,6 @@ class Fastly
|
|
19
19
|
#
|
20
20
|
# Return a hash containing key/value pairs of settings
|
21
21
|
#
|
22
|
-
|
23
22
|
|
24
23
|
# :nodoc:
|
25
24
|
def self.get_path(service, number)
|
@@ -38,12 +37,12 @@ class Fastly
|
|
38
37
|
|
39
38
|
# :nodoc:
|
40
39
|
def self.post_path
|
41
|
-
raise "You can't POST to an
|
40
|
+
raise "You can't POST to an setting"
|
42
41
|
end
|
43
42
|
|
44
43
|
# :nodoc:
|
45
44
|
def self.delete_path
|
46
|
-
raise "You can't DELETE to an
|
45
|
+
raise "You can't DELETE to an setting"
|
47
46
|
end
|
48
47
|
|
49
48
|
# :nodoc:
|
@@ -59,7 +58,13 @@ class Fastly
|
|
59
58
|
|
60
59
|
# Get the Settings object for the specified Version
|
61
60
|
def get_settings(service, number)
|
62
|
-
|
61
|
+
klass = Fastly::Settings
|
62
|
+
hash = client.get(Fastly::Settings.get_path(service, number))
|
63
|
+
|
64
|
+
return nil if hash.nil?
|
65
|
+
hash["settings"] = Hash[["general.default_host", "general.default_ttl"].collect { |var| [var, hash.delete(var)] }]
|
66
|
+
|
67
|
+
return klass.new(hash, self)
|
63
68
|
end
|
64
69
|
|
65
70
|
# Update the Settings object for the specified Version
|
data/lib/fastly/syslog.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Fastly
|
2
2
|
# An endpoint to stream syslogs to
|
3
3
|
class Syslog < BelongsToServiceAndVersion
|
4
|
-
attr_accessor :service_id, :name, :comment, :ipv4, :ipv6, :hostname, :port, :format
|
4
|
+
attr_accessor :service_id, :name, :comment, :ipv4, :ipv6, :hostname, :port, :format, :response_conditions
|
5
5
|
|
6
6
|
##
|
7
7
|
# :attr: service_id
|
@@ -61,5 +61,10 @@ class Fastly
|
|
61
61
|
# :attr: format
|
62
62
|
#
|
63
63
|
# Format to log like in apache format
|
64
|
+
|
65
|
+
##
|
66
|
+
# :attr: response_condition
|
67
|
+
#
|
68
|
+
# name of a response_condition to filter the log on, if empty it always logs
|
64
69
|
end
|
65
70
|
end
|
data/lib/fastly/version.rb
CHANGED
@@ -96,6 +96,13 @@ class Fastly
|
|
96
96
|
return Fastly::Version.new(hash, fetcher)
|
97
97
|
end
|
98
98
|
|
99
|
+
# Create an entirely new version, not cloned from the previous one.
|
100
|
+
def self.create_new(fetcher, opts)
|
101
|
+
hash = fetcher.client.post(Fastly::Version.post_path(opts))
|
102
|
+
return nil if hash.nil?
|
103
|
+
return Fastly::Version.new(hash, fetcher)
|
104
|
+
end
|
105
|
+
|
99
106
|
# Get the generated VCL object for this Version (which must have been activated first)
|
100
107
|
#
|
101
108
|
# Won't return the content of the VCL unless you pass in
|
data/test/admin_test.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
|
-
|
1
|
+
require 'helper'
|
2
2
|
|
3
|
-
|
4
|
-
require 'test/unit'
|
5
|
-
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
6
|
-
|
7
|
-
class AdminTest < Test::Unit::TestCase
|
3
|
+
class AdminTest < Fastly::TestCase
|
8
4
|
def setup
|
9
5
|
opts = login_opts(:full).merge(:use_curb => false)
|
10
6
|
begin
|
@@ -16,20 +12,20 @@ class AdminTest < Test::Unit::TestCase
|
|
16
12
|
exit(-1)
|
17
13
|
end
|
18
14
|
end
|
19
|
-
|
15
|
+
|
20
16
|
def test_creating_and_updating_customer
|
21
17
|
return unless @fastly.current_user.can_do?(:admin)
|
22
18
|
customer = @fastly.create_customer(:name => "fastly-ruby-test-customer-#{get_rand}")
|
23
19
|
email = "fastly-ruby-test-#{get_rand}-new@example.com"
|
24
20
|
user = @fastly.create_user(:login => email, :name => "New User")
|
25
21
|
customer.owner_id = user.id
|
26
|
-
|
22
|
+
|
27
23
|
tmp = @fastly.update_customer(customer)
|
28
24
|
assert tmp
|
29
25
|
assert_equal customer.id, tmp.id
|
30
26
|
assert_equal customer.owner.id, tmp.owner.id
|
31
27
|
end
|
32
|
-
|
28
|
+
|
33
29
|
def test_creating_and_updating_customer_with_owner
|
34
30
|
return unless @fastly.current_user.can_do?(:admin)
|
35
31
|
email = "fastly-ruby-test-#{get_rand}-new@example.com"
|
@@ -37,5 +33,5 @@ class AdminTest < Test::Unit::TestCase
|
|
37
33
|
assert customer
|
38
34
|
assert_equal customer.owner.login, email
|
39
35
|
end
|
40
|
-
|
41
|
-
end
|
36
|
+
|
37
|
+
end
|
data/test/api_key_test.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
|
-
|
2
|
-
require 'rubygems'
|
3
|
-
require 'test/unit'
|
4
|
-
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
1
|
+
require 'helper'
|
5
2
|
|
6
|
-
class ApiKeyTest <
|
3
|
+
class ApiKeyTest < Fastly::TestCase
|
7
4
|
include CommonTests
|
8
|
-
|
5
|
+
|
9
6
|
def setup
|
10
7
|
@opts = login_opts(:api_key)
|
11
8
|
begin
|
@@ -16,21 +13,21 @@ class ApiKeyTest < Test::Unit::TestCase
|
|
16
13
|
exit(-1)
|
17
14
|
end
|
18
15
|
end
|
19
|
-
|
16
|
+
|
20
17
|
def test_raw_client
|
21
18
|
user = customer = nil
|
22
19
|
assert_raise(Fastly::Error) {
|
23
20
|
user = @client.get('/current_user')
|
24
21
|
}
|
25
|
-
assert_equal nil, user
|
22
|
+
assert_equal nil, user
|
26
23
|
|
27
24
|
customer = @client.get('/current_customer')
|
28
25
|
assert customer
|
29
26
|
assert_equal @opts[:customer], customer['name']
|
30
27
|
end
|
31
|
-
|
32
|
-
|
33
|
-
def test_current_user_and_customer
|
28
|
+
|
29
|
+
|
30
|
+
def test_current_user_and_customer
|
34
31
|
current_user = current_customer = nil
|
35
32
|
assert_raise(Fastly::FullAuthRequired) {
|
36
33
|
current_user = @fastly.current_user
|
@@ -40,9 +37,9 @@ class ApiKeyTest < Test::Unit::TestCase
|
|
40
37
|
customer = @fastly.current_customer
|
41
38
|
assert customer
|
42
39
|
assert_equal @opts[:customer], customer.name
|
43
|
-
end
|
44
|
-
|
45
|
-
|
40
|
+
end
|
41
|
+
|
42
|
+
|
46
43
|
def test_purging
|
47
44
|
#assert @fastly.purge('foo')
|
48
45
|
# TODO Won't work until we get fixtures in Heavenly
|
data/test/common.rb
CHANGED
@@ -22,61 +22,61 @@ module CommonTests
|
|
22
22
|
assert_equal settings.service_id, service.id
|
23
23
|
assert_equal settings.version.to_s, version.number.to_s
|
24
24
|
assert_equal settings.settings['general.default_ttl'], default_ttl
|
25
|
-
|
25
|
+
|
26
26
|
settings.settings['general.default_ttl'] = default_ttl = "888888888"
|
27
27
|
settings.save!;
|
28
28
|
|
29
29
|
settings = version.settings
|
30
30
|
assert_equal settings.settings['general.default_ttl'].to_s, default_ttl;
|
31
|
-
|
31
|
+
|
32
32
|
services = @fastly.list_services
|
33
33
|
assert !services.empty?
|
34
34
|
assert !services.select { |s| s.name == name }.empty?
|
35
|
-
|
35
|
+
|
36
36
|
service = @fastly.search_services( :name => name )
|
37
37
|
assert service
|
38
38
|
assert name, service.name
|
39
|
-
|
40
|
-
|
39
|
+
|
40
|
+
|
41
41
|
service = @fastly.search_services( :name => name, :version => version.number )
|
42
42
|
assert services
|
43
43
|
assert name, service.name
|
44
|
-
|
44
|
+
|
45
45
|
version2 = @fastly.create_version(:service_id => service.id)
|
46
46
|
assert version2
|
47
|
-
assert_equal = version.number.to_i+1, version2.number.to_i
|
48
|
-
|
47
|
+
assert_equal = version.number.to_i+1, version2.number.to_i
|
48
|
+
|
49
49
|
version3 = version2.clone
|
50
50
|
assert version3
|
51
|
-
assert_equal = version2.number.to_i+1, version3.number.to_i
|
52
|
-
|
51
|
+
assert_equal = version2.number.to_i+1, version3.number.to_i
|
52
|
+
|
53
53
|
number = version3.number.to_i
|
54
|
-
|
54
|
+
|
55
55
|
backend_name = "fastly-test-backend-#{get_rand}"
|
56
|
-
backend = begin
|
57
|
-
@fastly.create_backend(:service_id => service.id, :version => number, :hostname => 'localhost', :name => backend_name)
|
58
|
-
rescue Fastly::Error
|
56
|
+
backend = begin
|
57
|
+
@fastly.create_backend(:service_id => service.id, :version => number, :hostname => 'localhost', :name => backend_name)
|
58
|
+
rescue Fastly::Error
|
59
59
|
end
|
60
60
|
assert_nil backend
|
61
|
-
|
61
|
+
|
62
62
|
backend = @fastly.create_backend(:service_id => service.id, :version => number, :address => '74.125.224.146', :name => backend_name)
|
63
63
|
assert backend
|
64
64
|
assert_equal backend.service_id, service.id
|
65
65
|
#assert_equal backend.ipv4, '74.125.224.146'
|
66
66
|
assert_equal backend.address, '74.125.224.146'
|
67
67
|
assert_equal backend.port.to_s, '80'
|
68
|
-
|
68
|
+
|
69
69
|
backend.address = 'thegestalt.org'
|
70
70
|
backend.port = '9092'
|
71
71
|
@fastly.update_backend(backend)
|
72
72
|
backend = @fastly.get_backend(service.id, number, backend_name)
|
73
|
-
|
73
|
+
|
74
74
|
assert backend
|
75
75
|
assert_equal backend.address, 'thegestalt.org'
|
76
76
|
#assert_equal backend.hostname, 'thegestalt.org'
|
77
77
|
assert_equal backend.port.to_s, '9092'
|
78
|
-
|
79
|
-
|
78
|
+
|
79
|
+
|
80
80
|
domain_name = "fastly-test-domain-#{get_rand}-example.com"
|
81
81
|
domain = @fastly.create_domain(:service_id => service.id, :version => number, :name => domain_name)
|
82
82
|
assert domain
|
@@ -84,13 +84,13 @@ module CommonTests
|
|
84
84
|
assert_equal domain.service.id, service.id
|
85
85
|
assert_equal domain.version_number.to_s, number.to_s
|
86
86
|
assert_equal domain.version.number.to_s, number.to_s
|
87
|
-
|
87
|
+
|
88
88
|
domain.comment = "Flibbety gibbet"
|
89
89
|
domain.save!
|
90
90
|
domain = @fastly.get_domain(service.id, number, domain_name)
|
91
91
|
assert_equal domain.name, domain_name
|
92
92
|
assert_equal domain.comment, "Flibbety gibbet"
|
93
|
-
|
93
|
+
|
94
94
|
director_name = "fastly-test-director-#{get_rand}"
|
95
95
|
director = @fastly.create_director(:service_id => service.id, :version => number, :name => director_name)
|
96
96
|
assert director
|
@@ -98,10 +98,10 @@ module CommonTests
|
|
98
98
|
assert_equal director.service.id, service.id
|
99
99
|
assert_equal director.version_number.to_s, number.to_s
|
100
100
|
assert_equal director.version.number.to_s, number.to_s
|
101
|
-
|
101
|
+
|
102
102
|
assert director.add_backend(backend)
|
103
103
|
generated2 = version3.generated_vcl
|
104
|
-
|
104
|
+
|
105
105
|
origin_name = "fastly-test-origin-#{get_rand}"
|
106
106
|
origin = @fastly.create_origin(:service_id => service.id, :version => number, :name => origin_name)
|
107
107
|
assert origin
|
@@ -109,7 +109,56 @@ module CommonTests
|
|
109
109
|
assert_equal origin.service.id, service.id
|
110
110
|
assert_equal origin.version_number.to_s, number.to_s
|
111
111
|
# assert_equal origin.version.number.to_s, number.to_s
|
112
|
-
|
112
|
+
|
113
|
+
condition_name = "fastly-test-condition-#{get_rand}"
|
114
|
+
condition_statement = 'req.url ~ "^/foo"'
|
115
|
+
condition = @fastly.create_condition(:service_id => service.id, :version => number, :name => condition_name, :statement => condition_statement, :type => "REQUEST")
|
116
|
+
assert condition
|
117
|
+
assert_equal condition_name, condition.name
|
118
|
+
assert_equal condition_statement, condition.statement
|
119
|
+
|
120
|
+
cache_condition_name = "cache-#{condition_name}"
|
121
|
+
cache_condition = @fastly.create_condition(:service_id => service.id, :version => number, :name => cache_condition_name, :statement => condition_statement, :type => "CACHE")
|
122
|
+
assert cache_condition
|
123
|
+
assert_equal cache_condition_name, cache_condition.name
|
124
|
+
assert_equal condition_statement, cache_condition.statement
|
125
|
+
|
126
|
+
cache_setting_name = "fastly-cache-setting-#{get_rand}"
|
127
|
+
cache_setting = @fastly.create_cache_setting( :service_id => service.id, :version => number, :name => cache_setting_name, :ttl => 3600, :stale_ttl => 10001, :cache_condition => cache_condition_name)
|
128
|
+
assert cache_setting
|
129
|
+
assert_equal cache_setting.name, cache_setting_name
|
130
|
+
assert_equal cache_setting.ttl.to_s, 3600.to_s
|
131
|
+
assert_equal cache_setting.stale_ttl.to_s, 10001.to_s
|
132
|
+
assert_equal cache_setting.cache_condition, cache_condition_name
|
133
|
+
|
134
|
+
gzip_name = "fastly-test-gzip-#{get_rand}"
|
135
|
+
gzip = @fastly.create_gzip( :service_id => service.id, :version => number, :name => gzip_name, :extensions => "js css html", :content_types => "text/html")
|
136
|
+
assert gzip
|
137
|
+
assert_equal gzip_name, gzip.name
|
138
|
+
assert_equal "text/html", gzip.content_types
|
139
|
+
assert_equal "js css html", gzip.extensions
|
140
|
+
|
141
|
+
response_obj_name = "fastly-test-response-obj-#{get_rand}"
|
142
|
+
response_obj = @fastly.create_response_object( :service_id => service.id, :version => number, :name => response_obj_name, :status => 418, :response => "I'm a teapot", :content_type => "text/plain", :content => "short and stout")
|
143
|
+
assert response_obj
|
144
|
+
assert_equal response_obj_name, response_obj.name
|
145
|
+
assert_equal 418.to_s, response_obj.status
|
146
|
+
assert_equal "I'm a teapot", response_obj.response
|
147
|
+
assert_equal "text/plain", response_obj.content_type
|
148
|
+
assert_equal "short and stout", response_obj.content
|
149
|
+
|
150
|
+
response_condition_name = "fastly-response-condition-#{get_rand}"
|
151
|
+
response_condition = @fastly.create_condition(:service_id => service.id, :version => number, :name => response_condition_name, :statement => condition_statement, :type => "RESPONSE")
|
152
|
+
header_name = "fastly-header-test-#{get_rand}"
|
153
|
+
header = @fastly.create_header( :service_id => service.id, :version => number, :name => header_name, :response_condition => response_condition.name, :ignore_if_set => 1, :type => "response", :dst => "http.Cache-Control", :src => '"max-age=301"', :priority => 10, :action => "set")
|
154
|
+
assert header
|
155
|
+
assert_equal header.name, header_name
|
156
|
+
assert_equal header.response_condition, response_condition.name
|
157
|
+
assert_equal header.ignore_if_set.to_s, 1.to_s
|
158
|
+
assert_equal header.dst, "http.Cache-Control"
|
159
|
+
assert_equal header.src, '"max-age=301"'
|
160
|
+
assert_equal header.action, "set"
|
161
|
+
|
113
162
|
assert version3.activate!
|
114
163
|
assert version3.deactivate!
|
115
164
|
assert !@fastly.get_service(version3.service_id).version.active
|
@@ -117,17 +166,23 @@ module CommonTests
|
|
117
166
|
assert version3.activate!
|
118
167
|
assert @fastly.get_service(version3.service_id).version.active
|
119
168
|
assert @fastly.get_service(version3.service_id).version.active?
|
120
|
-
|
169
|
+
|
121
170
|
generated = version3.generated_vcl(:no_content => true)
|
122
171
|
assert generated
|
123
172
|
assert generated.content.nil?
|
124
173
|
generated = version3.generated_vcl
|
125
174
|
assert !generated.content.nil?
|
126
175
|
assert generated.content.match(/\.port = "9092"/ms)
|
127
|
-
|
176
|
+
|
128
177
|
assert version3.validate
|
129
178
|
|
130
|
-
|
179
|
+
version3.deactivate!
|
180
|
+
|
181
|
+
version4 = Fastly::Version.create_new(service.fetcher, :service_id => service.id)
|
182
|
+
assert version4.number != version3.number
|
183
|
+
assert @fastly.list_directors(:service_id => service.id, :version => version4.number).length == 0
|
184
|
+
|
185
|
+
@fastly.delete_service(service)
|
131
186
|
end
|
132
187
|
|
133
188
|
def test_stats
|
@@ -139,13 +194,17 @@ module CommonTests
|
|
139
194
|
assert tmp
|
140
195
|
assert_equal name, tmp.name
|
141
196
|
|
142
|
-
|
143
|
-
|
144
|
-
|
197
|
+
begin
|
198
|
+
stats = service.stats
|
199
|
+
rescue Fastly::Error => e
|
200
|
+
end
|
201
|
+
assert stats.nil?
|
202
|
+
|
145
203
|
stats = service.stats(:all, :year => 2011, :month => 10)
|
146
|
-
assert stats
|
204
|
+
assert stats
|
205
|
+
@fastly.delete_service(service)
|
147
206
|
end
|
148
|
-
|
207
|
+
|
149
208
|
def test_invoices
|
150
209
|
name = "fastly-test-service-#{get_rand}"
|
151
210
|
service = @fastly.create_service(:name => name)
|
@@ -156,20 +215,21 @@ module CommonTests
|
|
156
215
|
assert invoice
|
157
216
|
assert invoice.regions
|
158
217
|
assert_equal invoice.service_id, service.id
|
159
|
-
|
218
|
+
|
160
219
|
invoice = @fastly.get_invoice
|
161
220
|
assert_equal Fastly::Invoice, invoice.class
|
162
|
-
|
221
|
+
|
163
222
|
year = Time.now.year
|
164
223
|
month = Time.now.month
|
165
|
-
|
224
|
+
|
166
225
|
invoice = @fastly.get_invoice(year, month)
|
167
226
|
assert_equal Fastly::Invoice, invoice.class
|
168
227
|
assert_equal year, invoice.start.year
|
169
228
|
assert_equal month, invoice.start.month
|
170
|
-
assert_equal 1, invoice.start.day
|
229
|
+
assert_equal 1, invoice.start.day
|
171
230
|
assert_equal year, invoice.end.year
|
172
231
|
assert_equal month, invoice.end.month
|
173
|
-
|
232
|
+
@fastly.delete_service(service)
|
233
|
+
end
|
174
234
|
|
175
|
-
end
|
235
|
+
end
|