From c497200d0361c3d2ae0cbe228079cc705e2e89b0 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Fri, 12 Jun 2015 22:10:50 +0200 Subject: [PATCH] add basic receive controller - remove dummy-test - mount engine on / in dummy-app --- .../diaspora_federation/receive_controller.rb | 25 ++++++++++++++++ config/routes.rb | 4 +++ .../receive_controller_spec.rb | 29 +++++++++++++++++++ spec/dummy_spec.rb | 6 ---- test/dummy/config/routes.rb | 3 +- 5 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 app/controllers/diaspora_federation/receive_controller.rb create mode 100644 spec/controllers/diaspora_federation/receive_controller_spec.rb delete mode 100644 spec/dummy_spec.rb diff --git a/app/controllers/diaspora_federation/receive_controller.rb b/app/controllers/diaspora_federation/receive_controller.rb new file mode 100644 index 0000000..563c253 --- /dev/null +++ b/app/controllers/diaspora_federation/receive_controller.rb @@ -0,0 +1,25 @@ +require_dependency "diaspora_federation/application_controller" + +module DiasporaFederation + class ReceiveController < ApplicationController + before_action :check_for_xml, only: %i(public private) + + def public + Rails.logger.info "received a public message" + Rails.logger.info CGI.unescape(params[:xml]) + render nothing: true, status: :ok + end + + def private + Rails.logger.info "received a private message for #{params[:guid]}" + Rails.logger.info CGI.unescape(params[:xml]) + render nothing: true, status: :ok + end + + private + + def check_for_xml + render nothing: true, status: 422 if params[:xml].nil? + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 0453f2c..de3c0f8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,2 +1,6 @@ DiasporaFederation::Engine.routes.draw do + controller :receive do + post "receive/public" => :public, :as => "receive_public" + post "receive/users/:guid" => :private, :as => "receive_private" + end end diff --git a/spec/controllers/diaspora_federation/receive_controller_spec.rb b/spec/controllers/diaspora_federation/receive_controller_spec.rb new file mode 100644 index 0000000..df98e6f --- /dev/null +++ b/spec/controllers/diaspora_federation/receive_controller_spec.rb @@ -0,0 +1,29 @@ +module DiasporaFederation + describe ReceiveController, type: :controller do + routes { DiasporaFederation::Engine.routes } + + describe "#public" do + it "succeeds" do + post :public, xml: "" + expect(response).to be_success + end + + it "returns a 422 if no xml is passed" do + post :public + expect(response.code).to eq("422") + end + end + + describe "#private" do + it "succeeds" do + post :private, guid: "any-guid", xml: "" + expect(response).to be_success + end + + it "returns a 422 if no xml is passed" do + post :private, guid: "any-guid" + expect(response.code).to eq("422") + end + end + end +end diff --git a/spec/dummy_spec.rb b/spec/dummy_spec.rb deleted file mode 100644 index 3bca5dd..0000000 --- a/spec/dummy_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -describe "Dummy" do - # dummy test - it "should be true" do - expect(true).to be_truthy - end -end diff --git a/test/dummy/config/routes.rb b/test/dummy/config/routes.rb index 8522406..5c8255c 100644 --- a/test/dummy/config/routes.rb +++ b/test/dummy/config/routes.rb @@ -1,4 +1,3 @@ Rails.application.routes.draw do - - mount DiasporaFederation::Engine => "/diaspora_federation" + mount DiasporaFederation::Engine => "/" end