spec/lib/flapjack/data/contact_spec.rb in flapjack-0.6.51 vs spec/lib/flapjack/data/contact_spec.rb in flapjack-0.6.52

- old
+ new

@@ -1,55 +1,93 @@ require 'spec_helper' require 'flapjack/data/contact' +require 'flapjack/data/entity_check' describe Flapjack::Data::Contact, :redis => true do - def add_contacts + before(:each) do Flapjack::Data::Contact.add({'id' => '362', 'first_name' => 'John', 'last_name' => 'Johnson', - 'email' => 'johnj@example.com' }, + 'email' => 'johnj@example.com', + 'media' => { + 'pagerduty' => { + 'service_key' => '123456789012345678901234', + 'subdomain' => 'flpjck', + 'username' => 'flapjack', + 'password' => 'very_secure' + } + }}, :redis => @redis) + Flapjack::Data::Contact.add({'id' => '363', 'first_name' => 'Jane', 'last_name' => 'Janeley', 'email' => 'janej@example.com'}, :redis => @redis) end it "returns a list of all contacts" do - add_contacts - contacts = Flapjack::Data::Contact.all(:redis => @redis) contacts.should_not be_nil contacts.should be_an(Array) contacts.should have(2).contacts contacts[0].name.should == 'Jane Janeley' contacts[1].name.should == 'John Johnson' end it "finds a contact by id" do - add_contacts - contact = Flapjack::Data::Contact.find_by_id('362', :redis => @redis) contact.should_not be_nil contact.name.should == "John Johnson" end - it "finds all contacts for a check on an entity" - it "deletes all contacts" do - add_contacts - Flapjack::Data::Contact.delete_all(:redis => @redis) contact = Flapjack::Data::Contact.find_by_id('362', :redis => @redis) contact.should be_nil contact = Flapjack::Data::Contact.find_by_id('363', :redis => @redis) contact.should be_nil end - it "returns pagerduty credentials for a contact" + it "returns a list of entities and their checks for a contact" do + entity_name = 'abc-123' - it "returns a list of entities for a contact" + Flapjack::Data::Entity.add({'id' => '5000', + 'name' => entity_name, + 'contacts' => ['362']}, + :redis => @redis) + + ec = Flapjack::Data::EntityCheck.for_entity_name(entity_name, 'PING', :redis => @redis) + t = Time.now.to_i + ec.update_state('ok', :timestamp => t, :summary => 'a') + + contact = Flapjack::Data::Contact.find_by_id('362', :redis => @redis) + eandcs = contact.entities_and_checks + eandcs.should_not be_nil + eandcs.should be_an(Array) + eandcs.should have(1).entity_and_checks + + eandc = eandcs.first + eandc.should be_a(Hash) + + entity = eandc[:entity] + entity.name.should == entity_name + checks = eandc[:checks] + checks.should be_a(Set) + checks.should have(1).check + checks.should include('PING') + end + + it "returns pagerduty credentials for a contact" do + contact = Flapjack::Data::Contact.find_by_id('362', :redis => @redis) + credentials = contact.pagerduty_credentials + credentials.should_not be_nil + credentials.should be_a(Hash) + credentials.should == {'service_key' => '123456789012345678901234', + 'subdomain' => 'flpjck', + 'username' => 'flapjack', + 'password' => 'very_secure'} + end end