about summary refs log tree commit diff
path: root/spec/controllers/api
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-11-08 23:22:44 +0100
committerEugen Rochko <eugen@zeonfederated.com>2016-11-08 23:29:08 +0100
commit9aecc0f48a046e0a05b8ca69511f8b72756fb431 (patch)
tree636bb2399ec2f853af5ebd593af6c75e311c7dd7 /spec/controllers/api
parent86574ea5248219fa35ecb0748920df9ff1ce6110 (diff)
Move timelines API from statuses to its own controller, add a check for
resources that require a user context vs those that don't (such as public timeline)

/api/v1/statuses/public   -> /api/v1/timelines/public
/api/v1/statuses/home     -> /api/v1/timelines/home
/api/v1/statuses/mentions -> /api/v1/timelines/mentions
/api/v1/statuses/tag/:tag -> /api/v1/timelines/tag/:tag
Diffstat (limited to 'spec/controllers/api')
-rw-r--r--spec/controllers/api/v1/statuses_controller_spec.rb32
-rw-r--r--spec/controllers/api/v1/timelines_controller_spec.rb80
2 files changed, 80 insertions, 32 deletions
diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb
index 9f9bb0c4f..9b027daf8 100644
--- a/spec/controllers/api/v1/statuses_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses_controller_spec.rb
@@ -59,38 +59,6 @@ RSpec.describe Api::V1::StatusesController, type: :controller do
     end
   end
 
-  describe 'GET #home' do
-    it 'returns http success' do
-      get :home
-      expect(response).to have_http_status(:success)
-    end
-  end
-
-  describe 'GET #mentions' do
-    it 'returns http success' do
-      get :mentions
-      expect(response).to have_http_status(:success)
-    end
-  end
-
-  describe 'GET #public' do
-    it 'returns http success' do
-      get :public
-      expect(response).to have_http_status(:success)
-    end
-  end
-
-  describe 'GET #tag' do
-    before do
-      post :create, params: { status: 'It is a #test' }
-    end
-
-    it 'returns http success' do
-      get :tag, params: { id: 'test' }
-      expect(response).to have_http_status(:success)
-    end
-  end
-
   describe 'POST #create' do
     before do
       post :create, params: { status: 'Hello world' }
diff --git a/spec/controllers/api/v1/timelines_controller_spec.rb b/spec/controllers/api/v1/timelines_controller_spec.rb
new file mode 100644
index 000000000..c94519ac5
--- /dev/null
+++ b/spec/controllers/api/v1/timelines_controller_spec.rb
@@ -0,0 +1,80 @@
+require 'rails_helper'
+
+RSpec.describe Api::V1::TimelinesController, type: :controller do
+  render_views
+
+  let(:user)  { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+
+  before do
+    stub_request(:post, "https://pubsubhubbub.superfeedr.com/").to_return(:status => 200, :body => "", :headers => {})
+    allow(controller).to receive(:doorkeeper_token) { token }
+  end
+
+  context 'with a user context' do
+    let(:token) { double acceptable?: true, resource_owner_id: user.id }
+
+    describe 'GET #home' do
+      it 'returns http success' do
+        get :home
+        expect(response).to have_http_status(:success)
+      end
+    end
+
+    describe 'GET #mentions' do
+      it 'returns http success' do
+        get :mentions
+        expect(response).to have_http_status(:success)
+      end
+    end
+
+    describe 'GET #public' do
+      it 'returns http success' do
+        get :public
+        expect(response).to have_http_status(:success)
+      end
+    end
+
+    describe 'GET #tag' do
+      before do
+        PostStatusService.new.call(user.account, 'It is a #test')
+      end
+
+      it 'returns http success' do
+        get :tag, params: { id: 'test' }
+        expect(response).to have_http_status(:success)
+      end
+    end
+  end
+
+  context 'without a user context' do
+    let(:token) { double acceptable?: true, resource_owner_id: nil }
+
+    describe 'GET #home' do
+      it 'returns http unprocessable entity' do
+        get :home
+        expect(response).to have_http_status(:unprocessable_entity)
+      end
+    end
+
+    describe 'GET #mentions' do
+      it 'returns http unprocessable entity' do
+        get :mentions
+        expect(response).to have_http_status(:unprocessable_entity)
+      end
+    end
+
+    describe 'GET #public' do
+      it 'returns http success' do
+        get :public
+        expect(response).to have_http_status(:success)
+      end
+    end
+
+    describe 'GET #tag' do
+      it 'returns http success' do
+        get :tag, params: { id: 'test' }
+        expect(response).to have_http_status(:success)
+      end
+    end
+  end
+end