diff --git a/lib/diaspora_federation.rb b/lib/diaspora_federation.rb index 2542a6a..7fc1729 100644 --- a/lib/diaspora_federation.rb +++ b/lib/diaspora_federation.rb @@ -77,9 +77,11 @@ module DiasporaFederation def validate_config configuration_error "server_uri: Missing or invalid" unless @server_uri.respond_to? :host - configuration_error "certificate_authorities: Not configured" if @certificate_authorities.nil? - unless File.file? @certificate_authorities - configuration_error "certificate_authorities: File not found: #{@certificate_authorities}" + unless defined?(::Rails) && !::Rails.env.production? + configuration_error "certificate_authorities: Not configured" if @certificate_authorities.nil? + unless File.file? @certificate_authorities + configuration_error "certificate_authorities: File not found: #{@certificate_authorities}" + end end unless @callbacks.definition_complete? diff --git a/spec/lib/diaspora_federation_spec.rb b/spec/lib/diaspora_federation_spec.rb index c875582..7d6c59f 100644 --- a/spec/lib/diaspora_federation_spec.rb +++ b/spec/lib/diaspora_federation_spec.rb @@ -14,20 +14,35 @@ module DiasporaFederation DiasporaFederation.server_uri = temp end - it "should fail if the certificate_authorities is missing" do - temp = DiasporaFederation.certificate_authorities - DiasporaFederation.certificate_authorities = nil - expect { DiasporaFederation.validate_config }.to raise_error ConfigurationError, - "certificate_authorities: Not configured" - DiasporaFederation.certificate_authorities = temp - end + context "certificate_authorities" do + before do + @certificate_authorities = DiasporaFederation.certificate_authorities + end - it "should fail if the certificate_authorities is missing" do - temp = DiasporaFederation.certificate_authorities - DiasporaFederation.certificate_authorities = "/unknown" - expect { DiasporaFederation.validate_config }.to raise_error ConfigurationError, - "certificate_authorities: File not found: /unknown" - DiasporaFederation.certificate_authorities = temp + it "allows certificate_authorities to be missing in test environment" do + ::Rails.env = "test" + DiasporaFederation.certificate_authorities = nil + expect { DiasporaFederation.validate_config }.not_to raise_error + end + + it "should fail in production if the certificate_authorities is missing" do + ::Rails.env = "production" + DiasporaFederation.certificate_authorities = nil + expect { DiasporaFederation.validate_config }.to raise_error ConfigurationError, + "certificate_authorities: Not configured" + end + + it "should fail in production if the certificate_authorities file is missing" do + ::Rails.env = "production" + DiasporaFederation.certificate_authorities = "/unknown" + expect { DiasporaFederation.validate_config }.to raise_error ConfigurationError, + "certificate_authorities: File not found: /unknown" + end + + after do + DiasporaFederation.certificate_authorities = @certificate_authorities + ::Rails.env = ENV["RAILS_ENV"] || "test" + end end it "should validate the callbacks" do