123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- require 'rails_helper'
- describe Agents::PhantomJsCloudAgent do
- before do
- @valid_options = {
- 'name' => "XKCD",
- 'render_type' => "html",
- 'url' => "http://xkcd.com",
- 'mode' => 'clean',
- 'api_key' => '1234567890'
- }
- @checker = Agents::PhantomJsCloudAgent.new(:name => "xkcd", :options => @valid_options, :keep_events_for => 2.days)
- @checker.user = users(:jane)
- @checker.save!
- end
- describe "validations" do
- before do
- expect(@checker).to be_valid
- end
- it "should validate the presence of url" do
- @checker.options['url'] = "http://google.com"
- expect(@checker).to be_valid
- @checker.options['url'] = ""
- expect(@checker).not_to be_valid
- @checker.options['url'] = nil
- expect(@checker).not_to be_valid
- end
- end
- describe "emitting event" do
- it "should emit url as event" do
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22html%22%2C%22requestSettings%22%3A%7B%22userAgent%22%3A%22Huginn%20-%20https%3A%2F%2Fgithub.com%2Fhuginn%2Fhuginn%22%7D%7D")
- end
- it "should set render type as plain text" do
- @checker.options['render_type'] = 'plainText'
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22plainText%22%2C%22requestSettings%22%3A%7B%22userAgent%22%3A%22Huginn%20-%20https%3A%2F%2Fgithub.com%2Fhuginn%2Fhuginn%22%7D%7D")
- end
- it "should set render type as jpg" do
- @checker.options['render_type'] = 'jpg'
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22jpg%22%2C%22requestSettings%22%3A%7B%22userAgent%22%3A%22Huginn%20-%20https%3A%2F%2Fgithub.com%2Fhuginn%2Fhuginn%22%7D%7D")
- end
- it "should set output as json" do
- @checker.options['output_as_json'] = true
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22html%22%2C%22outputAsJson%22%3Atrue%2C%22requestSettings%22%3A%7B%22userAgent%22%3A%22Huginn%20-%20https%3A%2F%2Fgithub.com%2Fhuginn%2Fhuginn%22%7D%7D")
- end
- it "should not set ignore images" do
- @checker.options['ignore_images'] = false
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22html%22%2C%22requestSettings%22%3A%7B%22userAgent%22%3A%22Huginn%20-%20https%3A%2F%2Fgithub.com%2Fhuginn%2Fhuginn%22%7D%7D")
- end
- it "should set ignore images" do
- @checker.options['ignore_images'] = true
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22html%22%2C%22requestSettings%22%3A%7B%22ignoreImages%22%3Atrue%2C%22userAgent%22%3A%22Huginn%20-%20https%3A%2F%2Fgithub.com%2Fhuginn%2Fhuginn%22%7D%7D")
- end
- it "should set wait interval to zero" do
- @checker.options['wait_interval'] = '0'
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22html%22%2C%22requestSettings%22%3A%7B%22userAgent%22%3A%22Huginn%20-%20https%3A%2F%2Fgithub.com%2Fhuginn%2Fhuginn%22%2C%22wait_interval%22%3A%220%22%7D%7D")
- end
- it "should set user agent to BlackBerry" do
- @checker.options['user_agent'] = 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+'
- expect {
- @checker.check
- }.to change { @checker.events.count }.by(1)
- item,* = @checker.events.last(1)
- expect(item.payload['url']).to eq("https://phantomjscloud.com/api/browser/v2/1234567890/?request=%7B%22url%22%3A%22http%3A%2F%2Fxkcd.com%22%2C%22renderType%22%3A%22html%22%2C%22requestSettings%22%3A%7B%22userAgent%22%3A%22Mozilla%2F5.0%20%28BlackBerry%3B%20U%3B%20BlackBerry%209900%3B%20en%29%20AppleWebKit%2F534.11%2B%20%28KHTML%2C%20like%20Gecko%29%20Version%2F7.1.0.346%20Mobile%20Safari%2F534.11%2B%22%7D%7D")
- end
- end
- end
|