From b0310a6a97c2a10ee2116d8ef0d0f76df7041ba3 Mon Sep 17 00:00:00 2001 From: Brad Gignac Date: Sat, 23 Jun 2012 10:14:44 -0400 Subject: [PATCH] [rackspace|databases] Add model tests. --- .../rackspace/models/databases/instance.rb | 15 +++++++ .../models/databases/database_tests.rb | 17 ++++++++ .../models/databases/databases_tests.rb | 17 ++++++++ .../models/databases/flavors_tests.rb | 20 +++++++++ .../models/databases/instance_tests.rb | 43 +++++++++++++++++++ .../models/databases/instances_tests.rb | 14 ++++++ .../rackspace/models/databases/user_tests.rb | 21 +++++++++ .../rackspace/models/databases/users_tests.rb | 21 +++++++++ 8 files changed, 168 insertions(+) create mode 100644 tests/rackspace/models/databases/database_tests.rb create mode 100644 tests/rackspace/models/databases/databases_tests.rb create mode 100644 tests/rackspace/models/databases/flavors_tests.rb create mode 100644 tests/rackspace/models/databases/instance_tests.rb create mode 100644 tests/rackspace/models/databases/instances_tests.rb create mode 100644 tests/rackspace/models/databases/user_tests.rb create mode 100644 tests/rackspace/models/databases/users_tests.rb diff --git a/lib/fog/rackspace/models/databases/instance.rb b/lib/fog/rackspace/models/databases/instance.rb index c9865c372..d7f10940b 100644 --- a/lib/fog/rackspace/models/databases/instance.rb +++ b/lib/fog/rackspace/models/databases/instance.rb @@ -4,6 +4,14 @@ module Fog module Rackspace class Databases class Instance < Fog::Model + # States + ACTIVE = 'ACTIVE' + BUILD = 'BUILD' + BLOCKED = 'BLOCKED' + REBOOT = 'REBOOT' + RESIZE = 'RESIZE' + SHUTDOWN = 'SHUTDOWN' + identity :id attribute :name @@ -53,6 +61,10 @@ module Fog end end + def ready? + state == ACTIVE + end + def root_user_enabled? requires :identity connection.check_root_user(identity).body['rootEnabled'] @@ -69,18 +81,21 @@ module Fog def restart requires :identity connection.restart_instance(identity) + self.state = REBOOT true end def resize(flavor_id) requires :identity connection.resize_instance(identity, flavor_id) + self.state = RESIZE true end def resize_volume(volume_size) requires :identity connection.resize_instance_volume(identity, volume_size) + self.state = RESIZE true end end diff --git a/tests/rackspace/models/databases/database_tests.rb b/tests/rackspace/models/databases/database_tests.rb new file mode 100644 index 000000000..34169ddff --- /dev/null +++ b/tests/rackspace/models/databases/database_tests.rb @@ -0,0 +1,17 @@ +Shindo.tests('Fog::Rackspace::Databases | database', ['rackspace']) do + + pending if Fog.mocking? + + service = Fog::Rackspace::Databases.new + instance = service.instances.create({ + :name => "fog_instance_#{Time.now.to_i.to_s}", + :flavor_id => 1, + :volume_size => 1 + }) + + instance.wait_for { ready? } + + model_tests(instance.databases, { :name => "db_#{Time.now.to_i.to_s}" }, false) + + instance.destroy +end diff --git a/tests/rackspace/models/databases/databases_tests.rb b/tests/rackspace/models/databases/databases_tests.rb new file mode 100644 index 000000000..2ac13079d --- /dev/null +++ b/tests/rackspace/models/databases/databases_tests.rb @@ -0,0 +1,17 @@ +Shindo.tests('Fog::Rackspace::Databases | databases', ['rackspace']) do + + pending if Fog.mocking? + + service = Fog::Rackspace::Databases.new + instance = service.instances.create({ + :name => "fog_instance_#{Time.now.to_i.to_s}", + :flavor_id => 1, + :volume_size => 1 + }) + + instance.wait_for { ready? } + + collection_tests(instance.databases, { :name => "db_#{Time.now.to_i.to_s}" }, false) + + instance.destroy +end diff --git a/tests/rackspace/models/databases/flavors_tests.rb b/tests/rackspace/models/databases/flavors_tests.rb new file mode 100644 index 000000000..9bfe19744 --- /dev/null +++ b/tests/rackspace/models/databases/flavors_tests.rb @@ -0,0 +1,20 @@ +Shindo.tests('Fog::Rackspace::Databases | flavors', ['rackspace']) do + + pending if Fog.mocking? + + service = Fog::Rackspace::Databases.new + + tests("success") do + tests("#all").succeeds do + service.flavors.all + end + + tests("#get").succeeds do + service.flavors.get(1) + end + end + + tests("failure").returns(nil) do + service.flavors.get('some_random_identity') + end +end diff --git a/tests/rackspace/models/databases/instance_tests.rb b/tests/rackspace/models/databases/instance_tests.rb new file mode 100644 index 000000000..c39389ef1 --- /dev/null +++ b/tests/rackspace/models/databases/instance_tests.rb @@ -0,0 +1,43 @@ +Shindo.tests('Fog::Rackspace::Databases | instance', ['rackspace']) do + + pending if Fog.mocking? + + service = Fog::Rackspace::Databases.new + options = { + :name => "fog_instance_#{Time.now.to_i.to_s}", + :flavor_id => 1, + :volume_size => 1 + } + + model_tests(service.instances, options, false) do + @instance.wait_for { ready? } + tests('root_user_enabled before user is enabled').returns(false) do + @instance.root_user_enabled? + end + + @instance.wait_for { ready? } + tests('enable_root_user sets root user and password').succeeds do + @instance.enable_root_user + returns(false) { @instance.root_user.nil? } + returns(false) { @instance.root_password.nil? } + end + + @instance.wait_for { ready? } + tests('restarts instance').succeeds do + @instance.restart + returns('REBOOT') { @instance.state } + end + + @instance.wait_for { ready? } + tests('resizes instance').succeeds do + @instance.resize(2) + returns('RESIZE') { @instance.state } + end + + @instance.wait_for { ready? } + tests('restarts instance').succeeds do + @instance.resize_volume(2) + returns('RESIZE') { @instance.state } + end + end +end diff --git a/tests/rackspace/models/databases/instances_tests.rb b/tests/rackspace/models/databases/instances_tests.rb new file mode 100644 index 000000000..8be5457e8 --- /dev/null +++ b/tests/rackspace/models/databases/instances_tests.rb @@ -0,0 +1,14 @@ +Shindo.tests('Fog::Rackspace::Databases | instances', ['rackspace']) do + + pending if Fog.mocking? + + service = Fog::Rackspace::Databases.new + options = { + :name => "fog_instance_#{Time.now.to_i.to_s}", + :flavor_id => 1, + :volume_size => 1 + } + collection_tests(service.instances, options, false) do + @instance.wait_for { ready? } + end +end diff --git a/tests/rackspace/models/databases/user_tests.rb b/tests/rackspace/models/databases/user_tests.rb new file mode 100644 index 000000000..aeb74f0e9 --- /dev/null +++ b/tests/rackspace/models/databases/user_tests.rb @@ -0,0 +1,21 @@ +Shindo.tests('Fog::Rackspace::Databases | user', ['rackspace']) do + + pending if Fog.mocking? + + service = Fog::Rackspace::Databases.new + instance = service.instances.create({ + :name => "fog_instance_#{Time.now.to_i.to_s}", + :flavor_id => 1, + :volume_size => 1 + }) + + instance.wait_for { ready? } + + options = { + :name => "user_#{Time.now.to_i.to_s}", + :password => "fog_user" + } + model_tests(instance.users, options, false) + + instance.destroy +end diff --git a/tests/rackspace/models/databases/users_tests.rb b/tests/rackspace/models/databases/users_tests.rb new file mode 100644 index 000000000..3157302e1 --- /dev/null +++ b/tests/rackspace/models/databases/users_tests.rb @@ -0,0 +1,21 @@ +Shindo.tests('Fog::Rackspace::Databases | users', ['rackspace']) do + + pending if Fog.mocking? + + service = Fog::Rackspace::Databases.new + instance = service.instances.create({ + :name => "fog_instance_#{Time.now.to_i.to_s}", + :flavor_id => 1, + :volume_size => 1 + }) + + instance.wait_for { ready? } + + options = { + :name => "user_#{Time.now.to_i.to_s}", + :password => "fog_user" + } + collection_tests(instance.users, options, false) + + instance.destroy +end