Sha256: d152a5c60fbf46416201d409e6fac128e604a4db87658e09552c41cf1b596c1e

Contents?: true

Size: 1.85 KB

Versions: 9

Compression:

Stored size: 1.85 KB

Contents

# encoding: utf-8
require "logstash/devutils/rspec/spec_helper"
require 'logstash/inputs/xmpp'
require_relative '../support/xmpp4r_mocks.rb'

describe LogStash::Inputs::Xmpp do
  let(:rooms) { ['logstash', 'kibana'] }
  let(:config) do
    {
      'user' => 'foo@domain.org/chat',
      'password' => 'bAr',
      'rooms' => rooms
    }
  end

  before do
    allow(Jabber::Client).to receive(:new) do |jid|
      Jabber::ClientMock.new(jid)
    end

    allow(Jabber::MUC::SimpleMUCClient).to receive(:new) do |client|
      Jabber::MucClientMock.new(client)
    end
  end

  context 'when running' do
    let(:queue) { [] }
    let(:msg)   { 'Hello Logstash'}
    let(:inject_block) do
      -> { subject.client.inject_message(Jabber::MessageMock.new(msg)) }
    end

    subject { LogStash::Inputs::Xmpp.new(config) }

    before do
      subject.register
      plugin_thread = Thread.new(subject, queue) { |subj, que| subj.run(que) }
      sleep 0.01 until plugin_thread.status == 'sleep'
      inject_block.call
      subject.stop
    end

    context "when using Client" do
      it 'pushes normal events into a queue' do
        event = queue.first
        expect(event.get("message")).to eq(msg)
        expect(event.get("from")).to eq('bar@domain.org/chat')
      end
    end

    context "when using Rooms" do
      let(:inject_block) do
        -> do
          subject.muc_clients.each do |muc|
            muc.inject_message('now', 'bar', 'Hello Foo')
          end
        end
      end

      it 'pushes room events into a queue' do
        rooms.each do |room|
          event = queue.shift
          expect(event.get("message")).to eq('Hello Foo')
          expect(event.get("from")).to eq('bar')
          expect(event.get("room")).to eq(room)
        end
      end
    end
  end

  context 'when shutting down' do
    it_behaves_like "an interruptible input plugin"
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
logstash-input-xmpp-3.1.7 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.1.6 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.1.5 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.1.4 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.1.3 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.1.2 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.1.1 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.0.1 spec/inputs/xmpp_spec.rb
logstash-input-xmpp-3.0.0 spec/inputs/xmpp_spec.rb