aboutsummaryrefslogtreecommitdiff
path: root/spec/controllers/accounts_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/accounts_controller_spec.rb')
-rw-r--r--spec/controllers/accounts_controller_spec.rb88
1 files changed, 65 insertions, 23 deletions
diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb
index 93bf2c83f..f7d0b1af5 100644
--- a/spec/controllers/accounts_controller_spec.rb
+++ b/spec/controllers/accounts_controller_spec.rb
@@ -48,10 +48,17 @@ RSpec.describe AccountsController, type: :controller do
expect(response).to have_http_status(404)
end
end
+ end
- context 'when account is suspended' do
+ context 'as HTML' do
+ let(:format) { 'html' }
+
+ it_behaves_like 'preliminary checks'
+
+ context 'when account is permanently suspended' do
before do
account.suspend!
+ account.deletion_request.destroy
end
it 'returns http gone' do
@@ -59,12 +66,17 @@ RSpec.describe AccountsController, type: :controller do
expect(response).to have_http_status(410)
end
end
- end
- context 'as HTML' do
- let(:format) { 'html' }
+ context 'when account is temporarily suspended' do
+ before do
+ account.suspend!
+ end
- it_behaves_like 'preliminary checks'
+ it 'returns http forbidden' do
+ get :show, params: { username: account.username, format: format }
+ expect(response).to have_http_status(403)
+ end
+ end
shared_examples 'common response characteristics' do
it 'returns http success' do
@@ -325,6 +337,29 @@ RSpec.describe AccountsController, type: :controller do
it_behaves_like 'preliminary checks'
+ context 'when account is suspended permanently' do
+ before do
+ account.suspend!
+ account.deletion_request.destroy
+ end
+
+ it 'returns http gone' do
+ get :show, params: { username: account.username, format: format }
+ expect(response).to have_http_status(410)
+ end
+ end
+
+ context 'when account is suspended temporarily' do
+ before do
+ account.suspend!
+ end
+
+ it 'returns http success' do
+ get :show, params: { username: account.username, format: format }
+ expect(response).to have_http_status(200)
+ end
+ end
+
context do
before do
get :show, params: { username: account.username, format: format }
@@ -348,24 +383,8 @@ RSpec.describe AccountsController, type: :controller do
context 'in authorized fetch mode' do
let(:authorized_fetch_mode) { true }
- it 'returns http success' do
- expect(response).to have_http_status(200)
- end
-
- it 'returns application/activity+json' do
- expect(response.content_type).to eq 'application/activity+json'
- end
-
- it_behaves_like 'cachable response'
-
- it 'returns Vary header with Signature' do
- expect(response.headers['Vary']).to include 'Signature'
- end
-
- it 'renders bare minimum account' do
- json = body_as_json
- expect(json).to include(:id, :type, :preferredUsername, :inbox, :publicKey)
- expect(json).to_not include(:name, :summary)
+ it 'returns http unauthorized' do
+ expect(response).to have_http_status(401)
end
end
end
@@ -451,6 +470,29 @@ RSpec.describe AccountsController, type: :controller do
it_behaves_like 'preliminary checks'
+ context 'when account is permanently suspended' do
+ before do
+ account.suspend!
+ account.deletion_request.destroy
+ end
+
+ it 'returns http gone' do
+ get :show, params: { username: account.username, format: format }
+ expect(response).to have_http_status(410)
+ end
+ end
+
+ context 'when account is temporarily suspended' do
+ before do
+ account.suspend!
+ end
+
+ it 'returns http forbidden' do
+ get :show, params: { username: account.username, format: format }
+ expect(response).to have_http_status(403)
+ end
+ end
+
shared_examples 'common response characteristics' do
it 'returns http success' do
expect(response).to have_http_status(200)