metaforce 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -53,6 +53,10 @@ feature on a new branch, then send me a pull request with a detailed
53
53
  description. Please provide applicable rspec specs.
54
54
 
55
55
  ## Version History
56
+ **0.4.1** (March 8, 2012)
57
+
58
+ * Bug fixes
59
+
56
60
  **0.4.0** (March 2, 2012)
57
61
 
58
62
  * Various bug fixes and improvements.
@@ -3,7 +3,6 @@ require 'metaforce/types'
3
3
 
4
4
  module Metaforce
5
5
  class Manifest
6
- SFDC_API_VERSION = "23.0"
7
6
 
8
7
  # Initializes a new instance of a manifest (package.xml) file.
9
8
  #
@@ -90,7 +89,7 @@ module Metaforce
90
89
  folder = parts[0]
91
90
  file = parts[1].gsub(/.*\//, '').gsub(/\..*/, '')
92
91
  components.each_key do |type|
93
- if component_folder(type) =~ /#{folder}/i
92
+ if Metaforce::Metadata::Types.folder(type) =~ /#{folder}/i
94
93
  unless components[type].index(file).nil?
95
94
  self.add(type, file);
96
95
  end
@@ -100,23 +99,6 @@ module Metaforce
100
99
  self
101
100
  end
102
101
 
103
- # Returns the components name
104
- def component_name(key) # :nodoc:
105
- METADATA_TYPES[key][:name]
106
- end
107
-
108
- # Returns the components folder
109
- def component_folder(key) # :nodoc:
110
- METADATA_TYPES[key][:folder]
111
- end
112
-
113
- # Returns a key for the component name
114
- def component_key(name) # :nodoc:
115
- METADATA_TYPES.each do |key, component|
116
- return key if component[:name] == name
117
- end
118
- end
119
-
120
102
  # Returns a string containing a package.xml file
121
103
  #
122
104
  # <?xml version="1.0"?>
@@ -144,10 +126,10 @@ module Metaforce
144
126
  members.each do |member|
145
127
  xml.members member
146
128
  end
147
- xml.name component_name(key)
129
+ xml.name Metaforce::Metadata::Types.name(key)
148
130
  }
149
131
  end
150
- xml.version SFDC_API_VERSION
132
+ xml.version Metaforce.configuration.api_version
151
133
  }
152
134
  end
153
135
  xml_builder.to_xml
@@ -172,7 +154,7 @@ module Metaforce
172
154
  def to_package
173
155
  components = []
174
156
  @components.each do |type, members|
175
- name = component_name(type)
157
+ name = Metaforce::Metadata::Types.name(type)
176
158
  components.push :members => members, :name => name
177
159
  end
178
160
  components
@@ -183,7 +165,7 @@ module Metaforce
183
165
  document = Nokogiri::XML(file).remove_namespaces!
184
166
  document.xpath('//types').each do |type|
185
167
  name = type.xpath('name').first.content
186
- key = component_key(name);
168
+ key = Metaforce::Metadata::Types.key(name);
187
169
  type.xpath('members').each do |member|
188
170
  if @components[key].is_a?(Array)
189
171
  @components[key].push(member.content)
@@ -50,6 +50,7 @@ module Metaforce
50
50
  :queries => queries
51
51
  }
52
52
  end
53
+ return [] unless response.body[:list_metadata_response]
53
54
  response.body[:list_metadata_response][:result]
54
55
  end
55
56
 
@@ -64,7 +65,7 @@ module Metaforce
64
65
  # # List the names of all custom objects
65
66
  # client.list_custom_objects.collect { |t| t[:full_name] }
66
67
  # #=> ["Asset", "estore__Ida_Menu_Item__c", "SfoMatchHistoryItem", ... ]
67
- METADATA_TYPES.each do |type, value|
68
+ Metaforce::Metadata::Types.all.each do |type, value|
68
69
  define_method("list_#{value[:plural]}".to_sym) do
69
70
  list :type => value[:name]
70
71
  end
@@ -34,6 +34,7 @@ module Metaforce
34
34
  print "username: "; @username = STDIN.gets.chomp
35
35
  print "password: "; @password = STDIN.gets.chomp
36
36
  print "security token: "; @security_token = STDIN.gets.chomp
37
+ Metaforce.log = true
37
38
  end
38
39
  end
39
40
 
@@ -1,214 +1,244 @@
1
1
  module Metaforce
2
- METADATA_TYPES = {
3
- :action_override => {
4
- :name => "ActionOverride",
5
- :folder => "objects",
6
- :plural => :action_overrides
7
- },
8
- :analytics_snapshot => {
9
- :name => "AnalyticsSnapshot",
10
- :folder => "analyticsnapshots",
11
- :plural => :analytics_snapshots
12
- },
13
- :apex_class => {
14
- :name => "ApexClass",
15
- :folder => "classes",
16
- :plural => :apex_classes
17
- },
18
- :article_type => {
19
- :name => "ArticleType",
20
- :folder => "objects",
21
- :plural => :article_types
22
- },
23
- :apex_component => {
24
- :name => "ApexComponent",
25
- :folder => "components",
26
- :plural => :apex_components
27
- },
28
- :apex_page => {
29
- :name => "ApexPage",
30
- :folder => "pages",
31
- :plural => :apex_pages
32
- },
33
- :apex_trigger => {
34
- :name => "ApexTrigger",
35
- :folder => "triggers",
36
- :plural => :apex_triggers
37
- },
38
- :business_process => {
39
- :name => "BusinessProcess",
40
- :folder => "objects",
41
- :plural => :business_processes
42
- },
43
- :custom_application => {
44
- :name => "CustomApplication",
45
- :folder => "applications",
46
- :plural => :custom_applications
47
- },
48
- :custom_field => {
49
- :name => "CustomField",
50
- :folder => "objects",
51
- :plural => :custom_fields
52
- },
53
- :custom_labels => {
54
- :name => "CustomLabels",
55
- :folder => "labels",
56
- :plural => :custom_labels
57
- },
58
- :custom_object => {
59
- :name => "CustomObject",
60
- :folder => "objects",
61
- :plural => :custom_objects
62
- },
63
- :custom_object_translation => {
64
- :name => "CustomObjectTranslation",
65
- :folder => "objectTranslations",
66
- :plural => :custom_object_translations
67
- },
68
- :custom_page_web_link => {
69
- :name => "CustomPageWebLink",
70
- :folder => "weblinks",
71
- :plural => :custom_page_web_links
72
- },
73
- :custom_site => {
74
- :name => "CustomSite",
75
- :folder => "sites",
76
- :plural => :custom_sites
77
- },
78
- :custom_tab => {
79
- :name => "CustomTab",
80
- :folder => "tabs",
81
- :plural => :custom_tabs
82
- },
83
- :dashboard => {
84
- :name => "Dashboard",
85
- :folder => "dashboards",
86
- :plural => :dashboards
87
- },
88
- :data_category_group => {
89
- :name => "DataCategoryGroup",
90
- :folder => "datacategorygroups",
91
- :plural => :data_category_groups
92
- },
93
- :document => {
94
- :name => "Document",
95
- :folder => "document",
96
- :plural => :documents
97
- },
98
- :email_template => {
99
- :name => "EmailTemplate",
100
- :folder => "email",
101
- :plural => :email_templates
102
- },
103
- :entitlement_template => {
104
- :name => "EntitlementTemplate",
105
- :folder => "entitlementTemplates",
106
- :plural => :entitlement_templates
107
- },
108
- :field_set => {
109
- :name => "FieldSet",
110
- :folder => "objects",
111
- :plural => :field_sets
112
- },
113
- :home_page_component => {
114
- :name => "HomePageComponent",
115
- :folder => "homePageComponents",
116
- :plural => :home_page_components
117
- },
118
- :layout => {
119
- :name => "Layout",
120
- :folder => "layouts",
121
- :plural => :layouts
122
- },
123
- :letterhead => {
124
- :name => "Letterhead",
125
- :folder => "letterhead",
126
- :plural => :letterheads
127
- },
128
- :list_view => {
129
- :name => "ListView",
130
- :folder => "objects",
131
- :plural => :list_views
132
- },
133
- :named_filter => {
134
- :name => "NamedFilter",
135
- :folder => "objects",
136
- :plural => :named_filters
137
- },
138
- :permission_set => {
139
- :name => "PermissionSet",
140
- :folder => "permissionsets",
141
- :plural => :permission_sets
142
- },
143
- :portal => {
144
- :name => "Portal",
145
- :folder => "portals",
146
- :plural => :portals
147
- },
148
- :profile => {
149
- :name => "Profile",
150
- :folder => "profiles",
151
- :plural => :profiles
152
- },
153
- :record_type => {
154
- :name => "RecordType",
155
- :folder => "objects",
156
- :plural => :record_types
157
- },
158
- :remote_site_setting => {
159
- :name => "RemoteSiteSetting",
160
- :folder => "remoteSiteSettings",
161
- :plural => :remote_site_settings
162
- },
163
- :report => {
164
- :name => "Report",
165
- :folder => "reports",
166
- :plural => :reports
167
- },
168
- :report_type => {
169
- :name => "ReportType",
170
- :folder => "reportTypes",
171
- :plural => :report_types
172
- },
173
- :scontroler => {
174
- :name => "Scontroler",
175
- :folder => "scontrols",
176
- :plural => :scontrolers
177
- },
178
- :sharing_reason => {
179
- :name => "SharingReason",
180
- :folder => "objects",
181
- :plural => :sharing_reasons
182
- },
183
- :sharing_recalculation => {
184
- :name => "SharingRecalculation",
185
- :folder => "objects",
186
- :plural => :sharing_recalculations
187
- },
188
- :static_resource => {
189
- :name => "StaticResource",
190
- :folder => "staticResources",
191
- :plural => :static_resources
192
- },
193
- :translations => {
194
- :name => "Translations",
195
- :folder => "translations",
196
- :plural => :translations
197
- },
198
- :validation_rule => {
199
- :name => "ValidationRule",
200
- :folder => "objects",
201
- :plural => :validation_rules
202
- },
203
- :weblink => {
204
- :name => "Weblink",
205
- :folder => "objects",
206
- :plural => :weblinks
207
- },
208
- :workflow => {
209
- :name => "Workflow",
210
- :folder => "workflows",
211
- :plural => :workflows
212
- }
213
- }
2
+ module Metadata
3
+ class Types
4
+
5
+ def self.name(key)
6
+ METADATA_TYPES[key][:name]
7
+ end
8
+
9
+ def self.folder(key)
10
+ METADATA_TYPES[key][:folder]
11
+ end
12
+
13
+ def self.key(name)
14
+ METADATA_TYPES.each do |key, component|
15
+ return key if component[:name] == name
16
+ end
17
+ end
18
+
19
+ def self.all
20
+ METADATA_TYPES
21
+ end
22
+
23
+ def [](key)
24
+ METADATA_TYPES[key]
25
+ end
26
+
27
+ private
28
+
29
+ METADATA_TYPES = {
30
+ :action_override => {
31
+ :name => "ActionOverride",
32
+ :folder => "objects",
33
+ :plural => :action_overrides
34
+ },
35
+ :analytics_snapshot => {
36
+ :name => "AnalyticsSnapshot",
37
+ :folder => "analyticsnapshots",
38
+ :plural => :analytics_snapshots
39
+ },
40
+ :apex_class => {
41
+ :name => "ApexClass",
42
+ :folder => "classes",
43
+ :plural => :apex_classes
44
+ },
45
+ :article_type => {
46
+ :name => "ArticleType",
47
+ :folder => "objects",
48
+ :plural => :article_types
49
+ },
50
+ :apex_component => {
51
+ :name => "ApexComponent",
52
+ :folder => "components",
53
+ :plural => :apex_components
54
+ },
55
+ :apex_page => {
56
+ :name => "ApexPage",
57
+ :folder => "pages",
58
+ :plural => :apex_pages
59
+ },
60
+ :apex_trigger => {
61
+ :name => "ApexTrigger",
62
+ :folder => "triggers",
63
+ :plural => :apex_triggers
64
+ },
65
+ :business_process => {
66
+ :name => "BusinessProcess",
67
+ :folder => "objects",
68
+ :plural => :business_processes
69
+ },
70
+ :custom_application => {
71
+ :name => "CustomApplication",
72
+ :folder => "applications",
73
+ :plural => :custom_applications
74
+ },
75
+ :custom_field => {
76
+ :name => "CustomField",
77
+ :folder => "objects",
78
+ :plural => :custom_fields
79
+ },
80
+ :custom_labels => {
81
+ :name => "CustomLabels",
82
+ :folder => "labels",
83
+ :plural => :custom_labels
84
+ },
85
+ :custom_object => {
86
+ :name => "CustomObject",
87
+ :folder => "objects",
88
+ :plural => :custom_objects
89
+ },
90
+ :custom_object_translation => {
91
+ :name => "CustomObjectTranslation",
92
+ :folder => "objectTranslations",
93
+ :plural => :custom_object_translations
94
+ },
95
+ :custom_page_web_link => {
96
+ :name => "CustomPageWebLink",
97
+ :folder => "weblinks",
98
+ :plural => :custom_page_web_links
99
+ },
100
+ :custom_site => {
101
+ :name => "CustomSite",
102
+ :folder => "sites",
103
+ :plural => :custom_sites
104
+ },
105
+ :custom_tab => {
106
+ :name => "CustomTab",
107
+ :folder => "tabs",
108
+ :plural => :custom_tabs
109
+ },
110
+ :dashboard => {
111
+ :name => "Dashboard",
112
+ :folder => "dashboards",
113
+ :plural => :dashboards
114
+ },
115
+ :data_category_group => {
116
+ :name => "DataCategoryGroup",
117
+ :folder => "datacategorygroups",
118
+ :plural => :data_category_groups
119
+ },
120
+ :document => {
121
+ :name => "Document",
122
+ :folder => "document",
123
+ :plural => :documents
124
+ },
125
+ :email_template => {
126
+ :name => "EmailTemplate",
127
+ :folder => "email",
128
+ :plural => :email_templates
129
+ },
130
+ :entitlement_template => {
131
+ :name => "EntitlementTemplate",
132
+ :folder => "entitlementTemplates",
133
+ :plural => :entitlement_templates
134
+ },
135
+ :field_set => {
136
+ :name => "FieldSet",
137
+ :folder => "objects",
138
+ :plural => :field_sets
139
+ },
140
+ :home_page_component => {
141
+ :name => "HomePageComponent",
142
+ :folder => "homePageComponents",
143
+ :plural => :home_page_components
144
+ },
145
+ :layout => {
146
+ :name => "Layout",
147
+ :folder => "layouts",
148
+ :plural => :layouts
149
+ },
150
+ :letterhead => {
151
+ :name => "Letterhead",
152
+ :folder => "letterhead",
153
+ :plural => :letterheads
154
+ },
155
+ :list_view => {
156
+ :name => "ListView",
157
+ :folder => "objects",
158
+ :plural => :list_views
159
+ },
160
+ :named_filter => {
161
+ :name => "NamedFilter",
162
+ :folder => "objects",
163
+ :plural => :named_filters
164
+ },
165
+ :permission_set => {
166
+ :name => "PermissionSet",
167
+ :folder => "permissionsets",
168
+ :plural => :permission_sets
169
+ },
170
+ :portal => {
171
+ :name => "Portal",
172
+ :folder => "portals",
173
+ :plural => :portals
174
+ },
175
+ :profile => {
176
+ :name => "Profile",
177
+ :folder => "profiles",
178
+ :plural => :profiles
179
+ },
180
+ :record_type => {
181
+ :name => "RecordType",
182
+ :folder => "objects",
183
+ :plural => :record_types
184
+ },
185
+ :remote_site_setting => {
186
+ :name => "RemoteSiteSetting",
187
+ :folder => "remoteSiteSettings",
188
+ :plural => :remote_site_settings
189
+ },
190
+ :report => {
191
+ :name => "Report",
192
+ :folder => "reports",
193
+ :plural => :reports
194
+ },
195
+ :report_type => {
196
+ :name => "ReportType",
197
+ :folder => "reportTypes",
198
+ :plural => :report_types
199
+ },
200
+ :scontroler => {
201
+ :name => "Scontroler",
202
+ :folder => "scontrols",
203
+ :plural => :scontrolers
204
+ },
205
+ :sharing_reason => {
206
+ :name => "SharingReason",
207
+ :folder => "objects",
208
+ :plural => :sharing_reasons
209
+ },
210
+ :sharing_recalculation => {
211
+ :name => "SharingRecalculation",
212
+ :folder => "objects",
213
+ :plural => :sharing_recalculations
214
+ },
215
+ :static_resource => {
216
+ :name => "StaticResource",
217
+ :folder => "staticResources",
218
+ :plural => :static_resources
219
+ },
220
+ :translations => {
221
+ :name => "Translations",
222
+ :folder => "translations",
223
+ :plural => :translations
224
+ },
225
+ :validation_rule => {
226
+ :name => "ValidationRule",
227
+ :folder => "objects",
228
+ :plural => :validation_rules
229
+ },
230
+ :weblink => {
231
+ :name => "Weblink",
232
+ :folder => "objects",
233
+ :plural => :weblinks
234
+ },
235
+ :workflow => {
236
+ :name => "Workflow",
237
+ :folder => "workflows",
238
+ :plural => :workflows
239
+ }
240
+ }
241
+
242
+ end
243
+ end
214
244
  end
@@ -1,3 +1,3 @@
1
1
  module Metaforce
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://soap.sforce.com/2006/04/metadata">
3
+ <soapenv:Body>
4
+ <listMetadataResponse/>
5
+ </soapenv:Body>
6
+ </soapenv:Envelope>
@@ -18,10 +18,15 @@ describe Metaforce::Metadata::Client do
18
18
  client.list(:type => "ApexClass").should be_an(Array)
19
19
  end
20
20
 
21
+ it "returns an empty array when no results are returned" do
22
+ savon.expects(:list_metadata).with(:queries => [ :type => "ApexClass"]).returns(:no_result)
23
+ client.list(:type => "ApexClass").should be_an(Array)
24
+ end
25
+
21
26
  end
22
27
 
23
28
  it "should respond to dynamically defined list methods" do
24
- Metaforce::METADATA_TYPES.each do |type, value|
29
+ Metaforce::Metadata::Types.all.each do |type, value|
25
30
  client.respond_to?("list_#{value[:plural]}").should eq(true)
26
31
  end
27
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metaforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-02 00:00:00.000000000 Z
12
+ date: 2012-03-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &2152167300 !ruby/object:Gem::Requirement
16
+ requirement: &2154344380 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.5.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152167300
24
+ version_requirements: *2154344380
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: savon
27
- requirement: &2152166720 !ruby/object:Gem::Requirement
27
+ requirement: &2154343720 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.9.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152166720
35
+ version_requirements: *2154343720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rubyzip
38
- requirement: &2152164880 !ruby/object:Gem::Requirement
38
+ requirement: &2154342540 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.9.5
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152164880
46
+ version_requirements: *2154342540
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: term-ansicolor
49
- requirement: &2152180240 !ruby/object:Gem::Requirement
49
+ requirement: &2154342120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2152180240
57
+ version_requirements: *2154342120
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &2152176860 !ruby/object:Gem::Requirement
60
+ requirement: &2154341600 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152176860
68
+ version_requirements: *2154341600
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &2152175140 !ruby/object:Gem::Requirement
71
+ requirement: &2154341040 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2152175140
79
+ version_requirements: *2154341040
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: mocha
82
- requirement: &2152188880 !ruby/object:Gem::Requirement
82
+ requirement: &2154356340 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2152188880
90
+ version_requirements: *2154356340
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: savon_spec
93
- requirement: &2152186660 !ruby/object:Gem::Requirement
93
+ requirement: &2154355100 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: 0.1.6
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2152186660
101
+ version_requirements: *2154355100
102
102
  description: A Ruby gem for interacting with the Salesforce Metadata API
103
103
  email:
104
104
  - eric@ejholmes.net
@@ -139,6 +139,7 @@ files:
139
139
  - spec/fixtures/requests/check_status/not_done.xml
140
140
  - spec/fixtures/requests/deploy/in_progress.xml
141
141
  - spec/fixtures/requests/describe_metadata/success.xml
142
+ - spec/fixtures/requests/list_metadata/no_result.xml
142
143
  - spec/fixtures/requests/list_metadata/objects.xml
143
144
  - spec/fixtures/requests/login/failure.xml
144
145
  - spec/fixtures/requests/login/success.xml
@@ -176,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
177
  version: '0'
177
178
  requirements: []
178
179
  rubyforge_project: metaforce
179
- rubygems_version: 1.8.15
180
+ rubygems_version: 1.8.11
180
181
  signing_key:
181
182
  specification_version: 3
182
183
  summary: A Ruby gem for interacting with the Salesforce Metadata API
@@ -189,6 +190,7 @@ test_files:
189
190
  - spec/fixtures/requests/check_status/not_done.xml
190
191
  - spec/fixtures/requests/deploy/in_progress.xml
191
192
  - spec/fixtures/requests/describe_metadata/success.xml
193
+ - spec/fixtures/requests/list_metadata/no_result.xml
192
194
  - spec/fixtures/requests/list_metadata/objects.xml
193
195
  - spec/fixtures/requests/login/failure.xml
194
196
  - spec/fixtures/requests/login/success.xml