require 'rails_helper' require 'webmock/rspec' RSpec.describe XmppExchangeContactsJob, type: :job do let(:user) { create :user, cn: "willherschel", ou: "kosmos.org" } subject(:job) { described_class.perform_later(user, 'isaacnewton', 'kosmos.org') } before do stub_request(:post, "http://xmpp.example.com/api/add_rosteritem") .to_return(status: 200, body: "", headers: {}) end it "posts add_rosteritem commands to the ejabberd API" do perform_enqueued_jobs { job } expect(WebMock).to have_requested(:post, "http://xmpp.example.com/api/add_rosteritem") .with { |req| req.body == '{"localuser":"isaacnewton","localhost":"kosmos.org","user":"willherschel","host":"kosmos.org","nick":"willherschel","group":"Buddies","subs":"both"}' } expect(WebMock).to have_requested(:post, "http://xmpp.example.com/api/add_rosteritem") .with { |req| req.body == '{"localuser":"willherschel","localhost":"kosmos.org","user":"isaacnewton","host":"kosmos.org","nick":"isaacnewton","group":"Buddies","subs":"both"}' } end after do clear_enqueued_jobs clear_performed_jobs end end