From: David Lutterkort <[email protected]>
---
server/features/hardware_profiles.feature | 23 +++++++++++
.../step_definitions/hardware_profiles_steps.rb | 41 ++++++++++++++++++++
server/features/support/mock/config.yaml | 5 ++-
3 files changed, 68 insertions(+), 1 deletions(-)
create mode 100644 server/features/hardware_profiles.feature
create mode 100644 server/features/step_definitions/hardware_profiles_steps.rb
diff --git a/server/features/hardware_profiles.feature
b/server/features/hardware_profiles.feature
new file mode 100644
index 0000000..9c1de72
--- /dev/null
+++ b/server/features/hardware_profiles.feature
@@ -0,0 +1,23 @@
+Feature: Working with hardware profiles
+ In order to work with hardware profiles
+
+ Background:
+ Given I want to get XML
+
+ Scenario: I want to get list of all hardware profiles
+ When I follow hardware profiles link in entry points
+ Then I should see <HARDWARE_PROFILE_COUNT> hardware profile inside
hardware profiles
+ And each link in hardware profiles should point me to valid hardware
profile
+
+ Scenario: I want to show hardware profile details
+ When I request for '<HARDWARE_PROFILE_ID>' hardware profile
+ Then I should get this hardware profile
+ And it should have a href attribute
+ And hardware profile should include id parameter
+ And it should have a fixed property 'cpu'
+ And it should have a range property 'memory'
+ And it should have a enum property 'storage'
+
+ Scenario: I want filter hardware profiles by architecture
+ When I want hardware profiles with '<HARDWARE_PROFILE_ARCH>' architecture
+ Then the returned hardware profiles should have architecture
'<HARDWARE_PROFILE_ARCH>'
diff --git a/server/features/step_definitions/hardware_profiles_steps.rb
b/server/features/step_definitions/hardware_profiles_steps.rb
new file mode 100644
index 0000000..b2e64bf
--- /dev/null
+++ b/server/features/step_definitions/hardware_profiles_steps.rb
@@ -0,0 +1,41 @@
+Then /^it should have a (\w+) attribute$/ do |name|
+ attr =
Nokogiri::XML(last_response.body).xpath('/hardware-profile').first[name]
+ attr.should_not be_nil
+ if (name == 'href')
+ attr.should ==
"http://example.org/api/hardware_profiles/#{CONFIG[:hardware_profile_id]}"
+ end
+end
+
+Then /^it should have a (\w+) property '(.+)'$/ do |kind, name|
+ props =
Nokogiri::XML(last_response.body).xpath("/hardware-profile/proper...@name =
'#{name}']")
+ props.size.should == 1
+ prop = props.first
+ prop['kind'].should == kind
+ prop['unit'].should_not be_nil
+ if kind == 'range'
+ ranges = prop.xpath('range')
+ ranges.size.should == 1
+ range = ranges.first
+ range['first'].should_not be_nil
+ range['last'].should_not be_nil
+ end
+ if kind == 'enum'
+ enums = prop.xpath('enum')
+ enums.size.should == 1
+ enums.first.xpath('entry').size.should_not == 0
+ end
+end
+
+Then /^the returned hardware profiles should have (.+) '(.+)'$/ do |parameter,
value|
+ params = {}
+ value = replace_variables(value)
+ @tested_params.collect { |param| params[:"#{param[0]}"] = param[1] }
+ get '/api/hardware_profiles', params, {}
+ last_response.status.should == 200
+ parameters = []
+
Nokogiri::XML(last_response.body).xpath("/hardware-profiles/hardware-profile/proper...@name
= '#{parameter}']").each do |elt|
+ parameters << elt['value']
+ end
+ parameters.uniq.size.should == 1
+ parameters.uniq.first.should == value
+end
diff --git a/server/features/support/mock/config.yaml
b/server/features/support/mock/config.yaml
index 6b76f08..4ec0d03 100644
--- a/server/features/support/mock/config.yaml
+++ b/server/features/support/mock/config.yaml
@@ -1,4 +1,4 @@
----
+---
:username: mockuser
:password: mockpassword
:storage_snapshot_id: snap2
@@ -19,7 +19,10 @@
:image_id: img2
:storage_volume_state: AVAILABLE
:flavor_id: m1-small
+:hardware_profile_id: m1-large
:instance_realm: us
:image_count: 3
:storage_volume_count: 2
:flavor_count: 5
+:hardware_profile_count: 4
+:hardware_profile_arch: x86_64
--
1.6.6.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel