new stubbing approach

This commit is contained in:
Anton Chuchkalov 2015-07-02 20:17:25 +04:00
parent 7d6b5410be
commit b09fab680d
9 changed files with 45 additions and 54 deletions

View File

@ -62,26 +62,6 @@ class DevopsService
def debug?
DevopsConfig.config[:debug]
end
# you could check env via
# DevopsService.env.development? or
# DevopsService.env.test? or
# DevopsService.env.production?
def self.env
unless @env
@env = DevopsConfig.config[:env].dup
def @env.test?
self == 'test'
end
def @env.development?
self == 'development'
end
def @env.production?
self == 'production'
end
end
@env
end
end
def self.create_method name, &block

View File

@ -0,0 +1,9 @@
module Stubber
def self.stub_providers!
Dir["tests/stubs/providers/*.rb"].each {|file| require file }
end
def self.stub_models!
Dir["tests/stubs/models/*.rb"].each {|file| require file }
end
end

View File

@ -1,13 +0,0 @@
["ec2", "openstack", "static"].each do |provider|
begin
require_relative provider
provider_stub_path = File.expand_path("../#{provider}_stub.rb", __FILE__)
if DevopsService.debug? && File.exists?(provider_stub_path)
require provider_stub_path
end
rescue LoadError => e
puts "Can not load provider '#{provider}': " + e.message
end
end

View File

@ -1,7 +1,7 @@
require "sinatra"
module Provider
class ProviderFactory
module ProviderFactory
@@providers = {}
@ -20,9 +20,8 @@ module Provider
end
def self.init conf
# require providers here to get access to debug properties
require 'providers/all'
require_all
["ec2", "openstack", "static"].each do |p|
begin
@ -38,5 +37,15 @@ module Provider
end
end
def self.require_all
["ec2", "openstack", "static"].each do |provider|
begin
require_relative provider
rescue LoadError => e
puts "Can not load provider '#{provider}': " + e.message
end
end
end
end
end

View File

@ -41,6 +41,7 @@ require "routes/v2.0/handlers/stack_template"
require "routes/v2.0/handlers/stack_template_preset"
require "routes/v2.0/handlers/stack"
require "routes/routes_container"
require 'lib/stubber'
require "auth/devops_auth"
@ -85,6 +86,10 @@ module Devops
::Provider::ProviderFactory.init(config)
#set_up_providers_keys!(::Provider::ProviderFactory.all, mongo)
if settings.test? || config[:stub_classes]
Stubber.stub_providers!
Stubber.stub_models!
end
end
def init_mongo

View File

@ -0,0 +1 @@
default: -r features

View File

@ -0,0 +1,13 @@
puts '!!! WARNING: Some StackOpenstack methods are stubbed'
class StackOpenstack < StackBase
def create_stack_in_cloud!
self.cloud_stack_id = '4c712026-dcd5-4664-90b8-0915494c1332'
end
def delete_stack_in_cloud!
true
end
end

View File

@ -1,7 +1,4 @@
# Stub some methods in Ec2 Provider
puts '!!! WARNING !!!'
puts '!!! Some EC2 methods are stubbed !!!'
puts '!!! WARNING: Some EC2 methods are stubbed'
class Provider::Ec2
@ -31,9 +28,10 @@ class Provider::Ec2
def flavors
[{
"id" => 'test_flavor',
"v_cpus" => 2,
"cores" => 2,
"ram" => 256,
"disk" => 1000
"disk" => 1000,
"name" => 'name'
}]
end

View File

@ -1,7 +1,4 @@
# Stub some methods in Openstack Provider
puts '!!! WARNING !!!'
puts '!!! Some Openstack methods are stubbed !!!'
puts '!!! WARNING: Some Openstack methods are stubbed'
class Provider::Openstack
@ -61,12 +58,4 @@ class Provider::Openstack
]
end
def create_stack(stack)
'4c712026-dcd5-4664-90b8-0915494c1332'
end
def delete_stack(stack)
true
end
end