akamai_api 0.0.1

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 (40) hide show
  1. data/.gitignore +19 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +189 -0
  6. data/Thorfile +30 -0
  7. data/akamai_api.gemspec +27 -0
  8. data/bin/akamai_api +22 -0
  9. data/lib/akamai_api/ccu.rb +71 -0
  10. data/lib/akamai_api/ccu_response.rb +51 -0
  11. data/lib/akamai_api/cli/ccu.rb +11 -0
  12. data/lib/akamai_api/cli/ccu_arl.rb +40 -0
  13. data/lib/akamai_api/cli/ccu_cp_code.rb +48 -0
  14. data/lib/akamai_api/cli/command.rb +24 -0
  15. data/lib/akamai_api/cli/eccu.rb +55 -0
  16. data/lib/akamai_api/cli/template.rb +36 -0
  17. data/lib/akamai_api/cli.rb +3 -0
  18. data/lib/akamai_api/cp_code.rb +26 -0
  19. data/lib/akamai_api/eccu_request.rb +137 -0
  20. data/lib/akamai_api/soap_body.rb +52 -0
  21. data/lib/akamai_api/version.rb +3 -0
  22. data/lib/akamai_api.rb +9 -0
  23. data/spec/fixtures/delete/success.xml +8 -0
  24. data/spec/fixtures/eccu_request.xml +10 -0
  25. data/spec/fixtures/get_cp_codes/sample.xml +21 -0
  26. data/spec/fixtures/get_ids/success.xml +11 -0
  27. data/spec/fixtures/get_info/success.xml +25 -0
  28. data/spec/fixtures/set_notes/success.xml +8 -0
  29. data/spec/fixtures/set_status_change_email/success.xml +8 -0
  30. data/spec/fixtures/upload/fault.xml +13 -0
  31. data/spec/fixtures/upload/success.xml +8 -0
  32. data/spec/fixtures/wsdl:purge_request/success.xml +15 -0
  33. data/spec/lib/akamai_api/ccu_spec.rb +115 -0
  34. data/spec/lib/akamai_api/cp_code_spec.rb +25 -0
  35. data/spec/lib/akamai_api/eccu_request_spec.rb +216 -0
  36. data/spec/lib/akamai_api/soap_body_spec.rb +51 -0
  37. data/spec/spec_helper.rb +13 -0
  38. data/spec/support/savon_tester.rb +18 -0
  39. data/wsdls/ccuapi.wsdl +82 -0
  40. metadata +197 -0
@@ -0,0 +1,216 @@
1
+ require 'spec_helper'
2
+
3
+ module AkamaiApi
4
+ describe EccuRequest do
5
+ include SavonTester
6
+
7
+ before { stub_savon_model EccuRequest }
8
+
9
+ describe '::all_ids' do
10
+ before { savon.expects('getIds').returns(:success) }
11
+
12
+ it 'returns the id list of all available requests' do
13
+ EccuRequest.all_ids.should =~ ['42994282', '43000154']
14
+ end
15
+ end
16
+
17
+ describe '::find' do
18
+ before { savon.expects('getInfo').returns(:success) }
19
+
20
+ context 'when calling the ECCU service' do
21
+ it 'sets the specified code' do
22
+ SoapBody.any_instance.should_receive(:integer).with :fileId, 1234567
23
+ EccuRequest.find('1234567')
24
+ end
25
+
26
+ it 'sets to not return file content by default' do
27
+ SoapBody.any_instance.should_receive(:boolean).with :retrieveContents, false
28
+ EccuRequest.find('1234567')
29
+ end
30
+
31
+ it 'sets to return file content if verbose is specified' do
32
+ SoapBody.any_instance.should_receive(:boolean).with :retrieveContents, true
33
+ EccuRequest.find('1234567', :verbose => true)
34
+ end
35
+ end
36
+
37
+ it 'correctly assign the exact match' do
38
+ r = EccuRequest.find('1234567')
39
+ r.property[:exact_match].should be_true
40
+ end
41
+ end
42
+
43
+ describe '::last' do
44
+ it 'find the most recent entry' do
45
+ EccuRequest.stub! :all_ids => %w(a b)
46
+ EccuRequest.should_receive(:find).with('b', anything()).and_return :a
47
+ EccuRequest.last.should == :a
48
+ end
49
+ end
50
+
51
+ describe '::first' do
52
+ it 'find the oldest entry' do
53
+ EccuRequest.stub! :all_ids => %w(a b)
54
+ EccuRequest.should_receive(:find).with('a', anything()).and_return :a
55
+ EccuRequest.first.should == :a
56
+ end
57
+ end
58
+
59
+ describe '::all' do
60
+ it 'returns the detail for each enlisted id' do
61
+ EccuRequest.stub! :all_ids => %w(a b)
62
+ EccuRequest.should_receive(:find).with('a', anything()).and_return(:a)
63
+ EccuRequest.should_receive(:find).with('b', anything()).and_return(:b)
64
+ EccuRequest.all.should =~ [:a, :b]
65
+ end
66
+ end
67
+
68
+ describe 'publishing' do
69
+ let(:xml_request) { File.expand_path "../../../fixtures/eccu_request.xml", __FILE__ }
70
+ let(:xml_request_content) { File.read xml_request }
71
+
72
+ describe '::publish_file' do
73
+ it 'calls publish with the content of the specified file' do
74
+ args = {}
75
+ EccuRequest.should_receive(:publish).with('foo', xml_request_content, args)
76
+ EccuRequest.publish_file('foo', xml_request, args)
77
+ end
78
+ end
79
+
80
+ describe '::publish' do
81
+ context 'when there is an error' do
82
+ before { savon.expects('upload').returns(:fault) }
83
+
84
+ it 'raises an error' do
85
+ expect { EccuRequest.publish '', xml_request_content }
86
+ end
87
+ end
88
+
89
+ context 'when there are no errors' do
90
+ before { savon.expects('upload').returns(:success) }
91
+
92
+ it 'returns an EccuRequest instance' do
93
+ EccuRequest.publish('', xml_request_content).should be_a Fixnum
94
+ end
95
+
96
+ it 'assigns the fields correctly' do
97
+ soap_body = SoapBody.any_instance
98
+ soap_body.should_receive(:string).with :filename, 'eccu_request.xml'
99
+ soap_body.should_receive(:text).with :contents, xml_request_content
100
+ soap_body.should_receive(:string).with :notes, 'sample notes'
101
+ soap_body.should_receive(:string).with :versionString, 'v2'
102
+ soap_body.should_receive(:string).with :statusChangeEmail, 'foo@foo.com bar@bar.com'
103
+ soap_body.should_receive(:string).with :propertyName, 'foo.com'
104
+ soap_body.should_receive(:string).with :propertyType, 'prop'
105
+ soap_body.should_receive(:boolean).with :propertyNameExactMatch, false
106
+ EccuRequest.publish('foo.com', xml_request_content, {
107
+ :file_name => 'eccu_request.xml',
108
+ :notes => 'sample notes',
109
+ :version => 'v2',
110
+ :emails => %w(foo@foo.com bar@bar.com),
111
+ :property_type => 'prop',
112
+ :property_exact_match => false
113
+ })
114
+ end
115
+
116
+ it 'assigns a default notes field if no notes are specified' do
117
+ SoapBody.any_instance.stub :string => nil
118
+ SoapBody.any_instance.should_receive(:string).with(:notes, kind_of(String))
119
+ EccuRequest.publish '', xml_request_content
120
+ end
121
+
122
+ it 'assigns emails field if specified' do
123
+ SoapBody.any_instance.should_not_receive(:string).with(:statusChangeEmail, anything())
124
+ EccuRequest.publish '', xml_request_content
125
+ end
126
+
127
+ it 'assigns the property type to hostheader by default' do
128
+ SoapBody.any_instance.stub :string => nil
129
+ SoapBody.any_instance.should_receive(:string).with(:propertyType, 'hostheader')
130
+ EccuRequest.publish '', xml_request_content
131
+ end
132
+
133
+ it 'assigns the property exact match to true by default' do
134
+ SoapBody.any_instance.stub :boolean => nil
135
+ SoapBody.any_instance.should_receive(:boolean).with(:propertyNameExactMatch, true)
136
+ EccuRequest.publish '', xml_request_content
137
+ end
138
+ end
139
+ end
140
+ end
141
+
142
+ describe 'instance' do
143
+ describe 'constructor' do
144
+ it 'assigns the attributes hash to the accessors' do
145
+ req = EccuRequest.new :status => 'foo', :notes => 'bar'
146
+ req.status.should == 'foo'
147
+ req.notes.should == 'bar'
148
+ end
149
+ end
150
+
151
+ describe '#update_notes!' do
152
+ before { savon.expects('setNotes').returns(:success) }
153
+
154
+ it 'updates the notes field' do
155
+ req = EccuRequest.new :code => '1234'
156
+ expect {
157
+ req.update_notes! 'foo'
158
+ }.to change(req, :notes).to 'foo'
159
+ end
160
+
161
+ it 'calls the ECCU service using code and notes' do
162
+ req = EccuRequest.new :code => '1234'
163
+ soap_body = SoapBody.any_instance
164
+ soap_body.should_receive(:integer).with :fileId, 1234
165
+ soap_body.should_receive(:string).with :notes, 'foo'
166
+ req.update_notes! 'foo'
167
+ end
168
+
169
+ it 'calls the ECCU service and return the service boolean response' do
170
+ req = EccuRequest.new :code => '1234'
171
+ req.update_notes!('foo').should == true
172
+ end
173
+ end
174
+
175
+ describe '#update_email' do
176
+ before { savon.expects('setStatusChangeEmail').returns(:success) }
177
+
178
+ it 'updates the email field' do
179
+ req = EccuRequest.new :code => '1234'
180
+ expect {
181
+ req.update_email! 'foo'
182
+ }.to change(req, :email).to 'foo'
183
+ end
184
+
185
+ it 'calls the ECCU service using code and email' do
186
+ req = EccuRequest.new :code => '1234'
187
+ soap_body = SoapBody.any_instance
188
+ soap_body.should_receive(:integer).with :fileId, 1234
189
+ soap_body.should_receive(:string).with :statusChangeEmail, 'foo'
190
+ req.update_email! 'foo'
191
+ end
192
+
193
+ it 'calls the ECCU service and return the service boolean response' do
194
+ req = EccuRequest.new :code => '1234'
195
+ req.update_email!('foo').should == true
196
+ end
197
+ end
198
+
199
+ describe '#destroy' do
200
+ before { savon.expects('delete').returns(:success) }
201
+
202
+ it 'calls the ECCU service using code' do
203
+ req = EccuRequest.new :code => '1234'
204
+ soap_body = SoapBody.any_instance
205
+ soap_body.should_receive(:integer).with :fileId, 1234
206
+ req.destroy
207
+ end
208
+
209
+ it 'calls the ECCU service and return the service boolean response' do
210
+ req = EccuRequest.new :code => '1234'
211
+ req.destroy.should == true
212
+ end
213
+ end
214
+ end
215
+ end
216
+ end
@@ -0,0 +1,51 @@
1
+ module AkamaiApi
2
+ describe SoapBody do
3
+ let(:config) { double :env_namespace => '', :soap_version => '2' }
4
+ subject { SoapBody.new Savon::SOAP::XML.new config}
5
+
6
+ it 'adds the soapenc ns' do
7
+ Savon::SOAP::XML.new(config).namespaces.should_not include 'xmlns:soapenc'
8
+ subject.soap.namespaces.should include 'xmlns:soapenc'
9
+ end
10
+
11
+ describe '#string' do
12
+ before { subject.string 'foo', 'sample' }
13
+
14
+ it 'adds a string field' do
15
+ subject.body[:foo].should == 'sample'
16
+ end
17
+
18
+ it 'sets the correct type attribute' do
19
+ subject.body_attributes[:foo]['xsi:type'].should == 'xsd:string'
20
+ end
21
+ end
22
+
23
+ describe '#array' do
24
+ before { subject.array 'foo', ['a', 'b'] }
25
+
26
+ it 'adds an array field' do
27
+ subject.body[:foo].should == { 'item' => ['a', 'b'] }
28
+ end
29
+
30
+ it 'sets the correct type attribute' do
31
+ subject.body_attributes[:foo]['xsi:type'].should == 'wsdl:ArrayOfString'
32
+ end
33
+
34
+ it 'sets the correct arrayType attribute' do
35
+ subject.body_attributes[:foo]['soapenc:arrayType'].should == 'xsd:string[2]'
36
+ end
37
+ end
38
+
39
+ describe '#text' do
40
+ before { subject.text 'foo', 'foo' }
41
+
42
+ it 'adds a base64 encoded string field' do
43
+ Base64.decode64(subject.body[:foo]).should == 'foo'
44
+ end
45
+
46
+ it 'sets the correct type attribute' do
47
+ subject.body_attributes[:foo]['xsi:type'].should == 'xsd:base64Binary'
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path '../../lib/akamai_api', __FILE__
2
+ require File.expand_path '../auth.rb', __FILE__
3
+
4
+ require 'savon_spec'
5
+
6
+ Savon::Spec::Fixture.path = File.expand_path '../fixtures', __FILE__
7
+ Dir[File.expand_path '../support/**/*.rb', __FILE__].each do |f|
8
+ require f
9
+ end
10
+
11
+ RSpec.configure do |config|
12
+ config.include Savon::Spec::Macros
13
+ end
@@ -0,0 +1,18 @@
1
+ require 'active_support/concern'
2
+
3
+ module SavonTester
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ let(:client) do
8
+ Savon::Client.new do
9
+ wsdl.endpoint = "http://example.com"
10
+ wsdl.namespace = "http://users.example.com"
11
+ end
12
+ end
13
+ end
14
+
15
+ def stub_savon_model model
16
+ model.stub :client => client, :basic_auth => nil
17
+ end
18
+ end
data/wsdls/ccuapi.wsdl ADDED
@@ -0,0 +1,82 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <definitions name="PurgeRequest"
3
+ targetNamespace="http://www.akamai.com/purge"
4
+ xmlns:tns="http://www.akamai.com/purge"
5
+ xmlns:purgedt="http://www.akamai.com/purge"
6
+ xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
7
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
8
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
9
+
10
+ <types>
11
+ <schema targetNamespace="http://www.akamai.com/purge"
12
+ xmlns:purgedt="http://www.akamai.com/purge"
13
+ xmlns="http://www.w3.org/2000/10/XMLSchema" >
14
+
15
+
16
+ <complexType name="ListOfString" base="soap:Array">
17
+ <sequence>
18
+ <element name="string" type="xsd:string"
19
+ minOccurs="0" maxOccurs="unbounded" />
20
+ </sequence>
21
+ </complexType>
22
+
23
+ <complexType name="PurgeResult">
24
+ <sequence>
25
+ <element name="resultCode" type="xsd:int"/>
26
+ <element name="resultMsg" type="xsd:string"/>
27
+ <element name="sessionID" type="xsd:string"/>
28
+ <element name="estTime" type="xsd:int"/>
29
+ <element name="uriIndex" type="xsd:int"/>
30
+ <element name="modifiers" nullable="true" type="tns:ListOfString"/>
31
+ </sequence>
32
+ </complexType>
33
+
34
+ </schema>
35
+ </types>
36
+
37
+ <message name="purgeRequest" >
38
+ <part name="name" type="xsd:string"/>
39
+ <part name="pwd" type="xsd:string"/>
40
+ <part name="network" type="xsd:string"/>
41
+ <part name="opt" nullable="true" type="tns:ListOfString"/>
42
+ <part name="uri" type="tns:ListOfString"/>
43
+ </message>
44
+ <message name="purgeRequestResponse" >
45
+ <part name="return" type="tns:PurgeResult" />
46
+ </message>
47
+
48
+ <portType name="PurgeApi">
49
+ <operation name="purgeRequest" paramOrder="name pwd network opt uri">
50
+ <input message="tns:purgeRequest"
51
+ name="purgeRequest"/>
52
+ <output message="tns:purgeRequestResponse"/>
53
+ </operation>
54
+ </portType>
55
+
56
+ <binding name="PurgeApiSOAPBinding" type="tns:PurgeApi">
57
+ <soap:binding style="rpc"
58
+ transport="http://schemas.xmlsoap.org/soap/http"/>
59
+ <operation name="purgeRequest">
60
+ <soap:operation soapAction="" style="rpc"/>
61
+ <input>
62
+ <soap:body
63
+ use="encoded"
64
+ namespace="http://www.akamai.com/purge"
65
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
66
+ </input>
67
+ <output>
68
+ <soap:body
69
+ use="encoded"
70
+ namespace="http://www.akamai.com/purge"
71
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
72
+ </output>
73
+ </operation>
74
+ </binding>
75
+ <service name="JavaClasses">
76
+ <documentation>Provides programmatic purge access </documentation>
77
+ <port name="PurgeApi" binding="tns:PurgeApiSOAPBinding">
78
+ <soap:address
79
+ location="https://ccuapi.akamai.com:443/soap/servlet/soap/purge"/>
80
+ </port>
81
+ </service>
82
+ </definitions>
metadata ADDED
@@ -0,0 +1,197 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: akamai_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nicola Racco
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: active_support
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: thor
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.14.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.14.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: savon
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: builder
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 3.1.3
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 3.1.3
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '2.11'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '2.11'
94
+ - !ruby/object:Gem::Dependency
95
+ name: savon_spec
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '1.3'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '1.3'
110
+ description: Ruby toolkit to work with Akamai Content Control Utility API
111
+ email:
112
+ - nicola@nicolaracco.com
113
+ executables:
114
+ - akamai_api
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - .gitignore
119
+ - .rspec
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Thorfile
124
+ - akamai_api.gemspec
125
+ - bin/akamai_api
126
+ - lib/akamai_api.rb
127
+ - lib/akamai_api/ccu.rb
128
+ - lib/akamai_api/ccu_response.rb
129
+ - lib/akamai_api/cli.rb
130
+ - lib/akamai_api/cli/ccu.rb
131
+ - lib/akamai_api/cli/ccu_arl.rb
132
+ - lib/akamai_api/cli/ccu_cp_code.rb
133
+ - lib/akamai_api/cli/command.rb
134
+ - lib/akamai_api/cli/eccu.rb
135
+ - lib/akamai_api/cli/template.rb
136
+ - lib/akamai_api/cp_code.rb
137
+ - lib/akamai_api/eccu_request.rb
138
+ - lib/akamai_api/soap_body.rb
139
+ - lib/akamai_api/version.rb
140
+ - spec/fixtures/delete/success.xml
141
+ - spec/fixtures/eccu_request.xml
142
+ - spec/fixtures/get_cp_codes/sample.xml
143
+ - spec/fixtures/get_ids/success.xml
144
+ - spec/fixtures/get_info/success.xml
145
+ - spec/fixtures/set_notes/success.xml
146
+ - spec/fixtures/set_status_change_email/success.xml
147
+ - spec/fixtures/upload/fault.xml
148
+ - spec/fixtures/upload/success.xml
149
+ - spec/fixtures/wsdl:purge_request/success.xml
150
+ - spec/lib/akamai_api/ccu_spec.rb
151
+ - spec/lib/akamai_api/cp_code_spec.rb
152
+ - spec/lib/akamai_api/eccu_request_spec.rb
153
+ - spec/lib/akamai_api/soap_body_spec.rb
154
+ - spec/spec_helper.rb
155
+ - spec/support/savon_tester.rb
156
+ - wsdls/ccuapi.wsdl
157
+ homepage: ''
158
+ licenses: []
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ requirements: []
176
+ rubyforge_project:
177
+ rubygems_version: 1.8.24
178
+ signing_key:
179
+ specification_version: 3
180
+ summary: Ruby toolkit to work with Akamai Content Control Utility API
181
+ test_files:
182
+ - spec/fixtures/delete/success.xml
183
+ - spec/fixtures/eccu_request.xml
184
+ - spec/fixtures/get_cp_codes/sample.xml
185
+ - spec/fixtures/get_ids/success.xml
186
+ - spec/fixtures/get_info/success.xml
187
+ - spec/fixtures/set_notes/success.xml
188
+ - spec/fixtures/set_status_change_email/success.xml
189
+ - spec/fixtures/upload/fault.xml
190
+ - spec/fixtures/upload/success.xml
191
+ - spec/fixtures/wsdl:purge_request/success.xml
192
+ - spec/lib/akamai_api/ccu_spec.rb
193
+ - spec/lib/akamai_api/cp_code_spec.rb
194
+ - spec/lib/akamai_api/eccu_request_spec.rb
195
+ - spec/lib/akamai_api/soap_body_spec.rb
196
+ - spec/spec_helper.rb
197
+ - spec/support/savon_tester.rb