PageRenderTime 33ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/spec/models/mixins/miq_web_server_worker_mixin_spec.rb

https://gitlab.com/aljesusg/manageiqtest
Ruby | 83 lines | 67 code | 16 blank | 0 comment | 0 complexity | 9c74590ff457ffca305797bfb401a0ee MD5 | raw file
  1. describe MiqWebServerWorkerMixin do
  2. it "build_uri (ipv6)" do
  3. test_class = Class.new do
  4. include MiqWebServerWorkerMixin
  5. end
  6. allow(test_class).to receive_messages(:binding_address => "::1")
  7. expect(test_class.build_uri(123)).to eq "http://[::1]:123"
  8. end
  9. let(:test_class) do
  10. Class.new do
  11. include MiqWebServerWorkerMixin
  12. end
  13. end
  14. before do
  15. @token = Rails.application.config.secret_token
  16. @secrets = Rails.application.secrets
  17. MiqDatabase.seed
  18. end
  19. after do
  20. Rails.application.config.secret_token = @token
  21. Rails.application.secrets = @secrets
  22. end
  23. it ".configure_secret_token defaults to MiqDatabase session_secret_token" do
  24. Rails.application.config.secret_token = nil
  25. test_class.configure_secret_token
  26. expect(Rails.application.secrets[:secret_token]).to eq(MiqDatabase.first.session_secret_token)
  27. end
  28. it ".configure_secret_token accepts an input token" do
  29. Rails.application.config.secret_token = nil
  30. token = SecureRandom.hex(64)
  31. test_class.configure_secret_token(token)
  32. expect(Rails.application.secrets[:secret_token]).to eq(token)
  33. end
  34. it ".configure_secret_token does not reset secrets when token already configured" do
  35. Rails.application.config.secret_token = SecureRandom.hex(64)
  36. Rails.application.secrets = nil
  37. Rails.application.secrets
  38. test_class.configure_secret_token
  39. expect(Rails.application.secrets[:secret_token]).to eq(Rails.application.config.secret_token)
  40. end
  41. it "#rails_server_options" do
  42. w = FactoryGirl.create(:miq_ui_worker, :uri => "http://127.0.0.1:3000")
  43. expect(w.rails_server_options).to have_attributes(
  44. :Port => 3000,
  45. :Host => w.class.binding_address,
  46. :environment => Rails.env.to_s,
  47. :app => Rails.application
  48. )
  49. end
  50. it "overloading and calling super on a class method" do
  51. before = test_class.binding_address
  52. test_class.class_eval do
  53. def self.binding_address
  54. super + "JUNK"
  55. end
  56. end
  57. expect(test_class.binding_address).to eq(before + "JUNK")
  58. end
  59. describe '#rails_application' do
  60. let(:websocket_worker) { FactoryGirl.create(:miq_websocket_worker, :uri => 'http://127.0.0.1:3000') }
  61. let(:ui_worker) { FactoryGirl.create(:miq_ui_worker, :uri => 'http://127.0.0.1:3000') }
  62. it 'provides access to the Rack/Rails application' do
  63. expect(websocket_worker.rails_application).to be_a_kind_of(WebsocketServer)
  64. expect(ui_worker.rails_application).to be_a_kind_of(Vmdb::Application)
  65. end
  66. end
  67. end