Skip to content
Extraits de code Groupes Projets
publics_controller_spec.rb 2,75 ko
Newer Older
  • Learn to ignore specific revisions
  • Raphael's avatar
    Raphael a validé
    #   Copyright (c) 2010, Diaspora Inc.  This file is
    
    Raphael's avatar
    Raphael a validé
    #   licensed under the Affero General Public License version 3 or later.  See
    
    Raphael's avatar
    Raphael a validé
    #   the COPYRIGHT file.
    
    require 'spec_helper'
    
    maxwell's avatar
    maxwell a validé
    describe PublicsController do
    
    ilya's avatar
    ilya a validé
      render_views
    
      let(:user)   { Factory.create(:user) }
    
      let(:person) { Factory(:person) }
    
    maxwell's avatar
    maxwell a validé
    
      describe '#receive' do
    
        let(:xml) { "<walruses></walruses>" }
    
    
        it 'succeeds' do
          post :receive, "id" => user.person.id.to_s, "xml" => xml
          response.should be_success
        end
    
        it 'enqueues a receive job' do
          Resque.should_receive(:enqueue).with(Jobs::ReceiveSalmon, user.id, xml).once
          post :receive, "id" => user.person.id.to_s, "xml" => xml
    
    maxwell's avatar
    maxwell a validé
        end
    
        it 'unescapes the xml before sending it to receive_salmon' do
          aspect = user.aspects.create(:name => 'foo')
          post1 = user.post(:status_message, :message => 'moms', :to => [aspect.id])
          xml2 = post1.to_diaspora_xml
    
          user2 = Factory(:user)
    
    
          salmon_factory = Salmon::SalmonSlap.create(user, xml2)
          enc_xml = salmon_factory.xml_for(user2.person)
    
          Resque.should_receive(:enqueue).with(Jobs::ReceiveSalmon, user.id, enc_xml).once
    
          post :receive, "id" => user.person.id.to_s, "xml" => CGI::escape(enc_xml)
        end
    
    
        it 'returns a 422 if no xml is passed' do
          post :receive, "id" => person.id.to_s
          response.code.should == '422'
    
    maxwell's avatar
    maxwell a validé
    
    
        it 'returns a 404 if no user is found' do
          post :receive, "id" => person.id.to_s, "xml" => xml
          response.should be_not_found
        end
    
        it "succeeds" do
          post :hcard, "id" => user.person.id.to_s
          response.should be_success
        end
    
        it 'sets the person' do
          post :hcard, "id" => user.person.id.to_s
    
          assigns[:person].should == user.person
        end
    
        it 'does not query by user id' do
    
          post :hcard, "id" => user.id.to_s
    
          response.should be_not_found
    
    maxwell's avatar
    maxwell a validé
      describe '#webfinger' do
    
        it "succeeds when the person and user exist locally" do
    
          post :webfinger, 'q' => user.person.diaspora_handle
          response.should be_success
        end
    
        it "404s when the person exists remotely because it is local only" do
          stub_success('me@mydiaspora.pod.com')
          post :webfinger, 'q' => 'me@mydiaspora.pod.com'
          response.should be_not_found
        end
    
        it "404s when the person is local but doesn't have an owner" do
          person = Factory(:person)
          post :webfinger, 'q' => person.diaspora_handle
          response.should be_not_found
        end
    
        it "404s when the person does not exist locally or remotely" do
          stub_failure('me@mydiaspora.pod.com')
          post :webfinger, 'q' => 'me@mydiaspora.pod.com'
          response.should be_not_found
    
    maxwell's avatar
    maxwell a validé
    end