log configuration error

This commit is contained in:
Benjamin Neff 2015-06-26 02:53:36 +02:00
parent 8b9aa74953
commit db749039ac
2 changed files with 34 additions and 5 deletions

View file

@ -63,7 +63,7 @@ module DiasporaFederation
# called from after_initialize # called from after_initialize
# @raise [ConfigurationError] if the configuration is incomplete or invalid # @raise [ConfigurationError] if the configuration is incomplete or invalid
def validate_config def validate_config
raise ConfigurationError, "missing server_uri" unless @server_uri.respond_to? :host configuration_error "missing server_uri" unless @server_uri.respond_to? :host
validate_class(@person_class, "person_class", %i( validate_class(@person_class, "person_class", %i(
find_local_by_diaspora_handle find_local_by_diaspora_handle
webfinger_hash webfinger_hash
@ -74,17 +74,22 @@ module DiasporaFederation
private private
def validate_class(klass, name, methods) def validate_class(klass, name, methods)
raise ConfigurationError, "missing #{name}" unless klass configuration_error "missing #{name}" unless klass
entity = const_get(klass) entity = const_get(klass)
return logger.warn "table for #{entity} doesn't exist, skip validation" unless entity.table_exists? return logger.warn "table for #{entity} doesn't exist, skip validation" unless entity.table_exists?
methods.each {|method| entity_respond_to?(entity, method) } methods.each {|method| entity_respond_to?(entity, name, method) }
end end
def entity_respond_to?(entity, method) def entity_respond_to?(entity, name, method)
valid = entity.respond_to?(method) || entity.column_names.include?(method.to_s) || entity.method_defined?(method) valid = entity.respond_to?(method) || entity.column_names.include?(method.to_s) || entity.method_defined?(method)
raise ConfigurationError, "the configured class #{entity} for #{name} doesn't respond to #{method}" unless valid configuration_error "the configured class #{entity} for #{name} doesn't respond to #{method}" unless valid
end
def configuration_error(message)
logger.fatal("diaspora federation configuration error: #{message}")
raise ConfigurationError, message
end end
end end

View file

@ -0,0 +1,24 @@
module DiasporaFederation
describe DiasporaFederation do
context "validate_config" do
it "should validate the config" do
expect(DiasporaFederation).to receive(:validate_class)
DiasporaFederation.validate_config
end
it "should fails if the server_uri is missing" do
temp = DiasporaFederation.server_uri
DiasporaFederation.server_uri = nil
expect { DiasporaFederation.validate_config }.to raise_error ConfigurationError
DiasporaFederation.server_uri = temp
end
it "should fails if the person_class is missing" do
temp = DiasporaFederation.person_class
DiasporaFederation.person_class = nil
expect { DiasporaFederation.validate_config }.to raise_error ConfigurationError
DiasporaFederation.person_class = temp.to_s
end
end
end
end