Use body_as_json directly instead of via local var assignment (#31696)

This commit is contained in:
Matt Jankowski 2024-09-03 04:03:08 -04:00 committed by GitHub
parent e5155c50fd
commit 24a0b20408
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 123 additions and 113 deletions

View file

@ -114,10 +114,11 @@ describe '/api/v1/accounts' do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
.to include(
expect(json[:following]).to be true following: true,
expect(json[:requested]).to be false requested: false
)
expect(user.account.following?(other_account)).to be true expect(user.account.following?(other_account)).to be true
end end
@ -133,10 +134,11 @@ describe '/api/v1/accounts' do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
.to include(
expect(json[:following]).to be false following: false,
expect(json[:requested]).to be true requested: true
)
expect(user.account.requested?(other_account)).to be true expect(user.account.requested?(other_account)).to be true
end end

View file

@ -96,10 +96,11 @@ RSpec.describe 'Canonical Email Blocks' do
subject subject
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
.to include(
expect(json[:id]).to eq(canonical_email_block.id.to_s) id: eq(canonical_email_block.id.to_s),
expect(json[:canonical_email_hash]).to eq(canonical_email_block.canonical_email_hash) canonical_email_hash: eq(canonical_email_block.canonical_email_hash)
)
end end
end end

View file

@ -133,10 +133,8 @@ RSpec.describe 'Domain Blocks' do
it 'creates a domain block with the expected domain name and severity', :aggregate_failures do it 'creates a domain block with the expected domain name and severity', :aggregate_failures do
subject subject
body = body_as_json
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(body).to match a_hash_including( expect(body_as_json).to match a_hash_including(
{ {
domain: 'foo.bar.com', domain: 'foo.bar.com',
severity: 'silence', severity: 'silence',
@ -156,10 +154,8 @@ RSpec.describe 'Domain Blocks' do
it 'creates a domain block with the expected domain name and severity', :aggregate_failures do it 'creates a domain block with the expected domain name and severity', :aggregate_failures do
subject subject
body = body_as_json
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(body).to match a_hash_including( expect(body_as_json).to match a_hash_including(
{ {
domain: 'foo.bar.com', domain: 'foo.bar.com',
severity: 'suspend', severity: 'suspend',

View file

@ -88,10 +88,12 @@ RSpec.describe 'IP Blocks' do
subject subject
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json
expect(json[:ip]).to eq("#{ip_block.ip}/#{ip_block.ip.prefix}") expect(body_as_json)
expect(json[:severity]).to eq(ip_block.severity.to_s) .to include(
ip: eq("#{ip_block.ip}/#{ip_block.ip.prefix}"),
severity: eq(ip_block.severity.to_s)
)
end end
context 'when ip block does not exist' do context 'when ip block does not exist' do
@ -118,11 +120,12 @@ RSpec.describe 'IP Blocks' do
subject subject
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
.to include(
expect(json[:ip]).to eq("#{params[:ip]}/32") ip: eq("#{params[:ip]}/32"),
expect(json[:severity]).to eq(params[:severity]) severity: eq(params[:severity]),
expect(json[:comment]).to eq(params[:comment]) comment: eq(params[:comment])
)
end end
context 'when the required ip param is not provided' do context 'when the required ip param is not provided' do

View file

@ -61,9 +61,10 @@ RSpec.describe 'Apps' do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(Doorkeeper::Application.find_by(name: client_name)).to be_present expect(Doorkeeper::Application.find_by(name: client_name)).to be_present
body = body_as_json expect(body_as_json)
.to include(
expect(body[:scopes]).to eq Doorkeeper.config.default_scopes.to_a scopes: Doorkeeper.config.default_scopes.to_a
)
end end
end end
@ -81,9 +82,10 @@ RSpec.describe 'Apps' do
expect(app).to be_present expect(app).to be_present
expect(app.scopes.to_s).to eq 'read' expect(app.scopes.to_s).to eq 'read'
body = body_as_json expect(body_as_json)
.to include(
expect(body[:scopes]).to eq ['read'] scopes: %w(read)
)
end end
end end
@ -163,10 +165,11 @@ RSpec.describe 'Apps' do
expect(app.redirect_uri).to eq redirect_uris expect(app.redirect_uri).to eq redirect_uris
expect(app.redirect_uris).to eq redirect_uris.split expect(app.redirect_uris).to eq redirect_uris.split
body = body_as_json expect(body_as_json)
.to include(
expect(body[:redirect_uri]).to eq redirect_uris redirect_uri: redirect_uris,
expect(body[:redirect_uris]).to eq redirect_uris.split redirect_uris: redirect_uris.split
)
end end
end end
@ -184,10 +187,11 @@ RSpec.describe 'Apps' do
expect(app.redirect_uri).to eq redirect_uris.join "\n" expect(app.redirect_uri).to eq redirect_uris.join "\n"
expect(app.redirect_uris).to eq redirect_uris expect(app.redirect_uris).to eq redirect_uris
body = body_as_json expect(body_as_json)
.to include(
expect(body[:redirect_uri]).to eq redirect_uris.join "\n" redirect_uri: redirect_uris.join("\n"),
expect(body[:redirect_uris]).to eq redirect_uris redirect_uris: redirect_uris
)
end end
end end

View file

@ -55,10 +55,8 @@ RSpec.describe 'Blocks' do
it 'queries the blocks in range according to max_id', :aggregate_failures do it 'queries the blocks in range according to max_id', :aggregate_failures do
subject subject
response_body = body_as_json expect(body_as_json)
.to contain_exactly(include(id: blocks.first.target_account.id.to_s))
expect(response_body.size).to be 1
expect(response_body[0][:id]).to eq(blocks[0].target_account.id.to_s)
end end
end end
@ -68,10 +66,8 @@ RSpec.describe 'Blocks' do
it 'queries the blocks in range according to since_id', :aggregate_failures do it 'queries the blocks in range according to since_id', :aggregate_failures do
subject subject
response_body = body_as_json expect(body_as_json)
.to contain_exactly(include(id: blocks[2].target_account.id.to_s))
expect(response_body.size).to be 1
expect(response_body[0][:id]).to eq(blocks[2].target_account.id.to_s)
end end
end end
end end

View file

@ -37,9 +37,7 @@ RSpec.describe 'FeaturedTags' do
it 'returns an empty body' do it 'returns an empty body' do
get '/api/v1/featured_tags', headers: headers get '/api/v1/featured_tags', headers: headers
body = body_as_json expect(body_as_json).to be_empty
expect(body).to be_empty
end end
end end
@ -49,10 +47,10 @@ RSpec.describe 'FeaturedTags' do
it 'returns only the featured tags belonging to the requesting user' do it 'returns only the featured tags belonging to the requesting user' do
get '/api/v1/featured_tags', headers: headers get '/api/v1/featured_tags', headers: headers
body = body_as_json expect(body_as_json.pluck(:id))
expected_ids = user_featured_tags.pluck(:id).map(&:to_s) .to match_array(
user_featured_tags.pluck(:id).map(&:to_s)
expect(body.pluck(:id)).to match_array(expected_ids) )
end end
end end
end end
@ -69,9 +67,10 @@ RSpec.describe 'FeaturedTags' do
it 'returns the correct tag name' do it 'returns the correct tag name' do
post '/api/v1/featured_tags', headers: headers, params: params post '/api/v1/featured_tags', headers: headers, params: params
body = body_as_json expect(body_as_json)
.to include(
expect(body[:name]).to eq(params[:name]) name: params[:name]
)
end end
it 'creates a new featured tag for the requesting user' do it 'creates a new featured tag for the requesting user' do
@ -142,9 +141,7 @@ RSpec.describe 'FeaturedTags' do
it 'returns an empty body' do it 'returns an empty body' do
delete "/api/v1/featured_tags/#{id}", headers: headers delete "/api/v1/featured_tags/#{id}", headers: headers
body = body_as_json expect(body_as_json).to be_empty
expect(body).to be_empty
end end
it 'deletes the featured tag', :inline_jobs do it 'deletes the featured tag', :inline_jobs do

View file

@ -17,13 +17,12 @@ RSpec.describe 'API Markers' do
end end
it 'returns markers', :aggregate_failures do it 'returns markers', :aggregate_failures do
json = body_as_json
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json.key?(:home)).to be true expect(body_as_json)
expect(json[:home][:last_read_id]).to eq '123' .to include(
expect(json.key?(:notifications)).to be true home: include(last_read_id: '123'),
expect(json[:notifications][:last_read_id]).to eq '456' notifications: include(last_read_id: '456')
)
end end
end end

View file

@ -58,10 +58,8 @@ RSpec.describe 'Mutes' do
it 'queries mutes in range according to max_id', :aggregate_failures do it 'queries mutes in range according to max_id', :aggregate_failures do
subject subject
body = body_as_json expect(body_as_json)
.to contain_exactly(include(id: mutes.first.target_account_id.to_s))
expect(body.size).to eq 1
expect(body[0][:id]).to eq mutes[0].target_account_id.to_s
end end
end end
@ -71,10 +69,8 @@ RSpec.describe 'Mutes' do
it 'queries mutes in range according to since_id', :aggregate_failures do it 'queries mutes in range according to since_id', :aggregate_failures do
subject subject
body = body_as_json expect(body_as_json)
.to contain_exactly(include(id: mutes[1].target_account_id.to_s))
expect(body.size).to eq 1
expect(body[0][:id]).to eq mutes[1].target_account_id.to_s
end end
end end

View file

@ -24,11 +24,14 @@ describe 'API V1 Statuses Reblogs' do
expect(user.account.reblogged?(status)).to be true expect(user.account.reblogged?(status)).to be true
hash_body = body_as_json expect(body_as_json)
.to include(
expect(hash_body[:reblog][:id]).to eq status.id.to_s reblog: include(
expect(hash_body[:reblog][:reblogs_count]).to eq 1 id: status.id.to_s,
expect(hash_body[:reblog][:reblogged]).to be true reblogs_count: 1,
reblogged: true
)
)
end end
end end
@ -57,11 +60,12 @@ describe 'API V1 Statuses Reblogs' do
expect(user.account.reblogged?(status)).to be false expect(user.account.reblogged?(status)).to be false
hash_body = body_as_json expect(body_as_json)
.to include(
expect(hash_body[:id]).to eq status.id.to_s id: status.id.to_s,
expect(hash_body[:reblogs_count]).to eq 0 reblogs_count: 0,
expect(hash_body[:reblogged]).to be false reblogged: false
)
end end
end end
@ -81,11 +85,12 @@ describe 'API V1 Statuses Reblogs' do
expect(user.account.reblogged?(status)).to be false expect(user.account.reblogged?(status)).to be false
hash_body = body_as_json expect(body_as_json)
.to include(
expect(hash_body[:id]).to eq status.id.to_s id: status.id.to_s,
expect(hash_body[:reblogs_count]).to eq 0 reblogs_count: 0,
expect(hash_body[:reblogged]).to be false reblogged: false
)
end end
end end

View file

@ -32,10 +32,8 @@ RSpec.describe 'Suggestions' do
it 'returns accounts' do it 'returns accounts' do
subject subject
body = body_as_json expect(body_as_json)
.to contain_exactly(include(id: bob.id.to_s), include(id: jeff.id.to_s))
expect(body.size).to eq 2
expect(body.pluck(:id)).to match_array([bob, jeff].map { |i| i.id.to_s })
end end
context 'with limit param' do context 'with limit param' do

View file

@ -42,9 +42,11 @@ RSpec.describe 'API V2 Filters Keywords' do
it 'creates a filter', :aggregate_failures do it 'creates a filter', :aggregate_failures do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
expect(json[:keyword]).to eq 'magic' .to include(
expect(json[:whole_word]).to be false keyword: 'magic',
whole_word: false
)
filter = user.account.custom_filters.first filter = user.account.custom_filters.first
expect(filter).to_not be_nil expect(filter).to_not be_nil
@ -71,9 +73,11 @@ RSpec.describe 'API V2 Filters Keywords' do
it 'responds with the keyword', :aggregate_failures do it 'responds with the keyword', :aggregate_failures do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
expect(json[:keyword]).to eq 'foo' .to include(
expect(json[:whole_word]).to be false keyword: 'foo',
whole_word: false
)
end end
context "when trying to access another user's filter keyword" do context "when trying to access another user's filter keyword" do

View file

@ -43,8 +43,10 @@ RSpec.describe 'API V2 Filters Statuses' do
it 'creates a filter', :aggregate_failures do it 'creates a filter', :aggregate_failures do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
expect(json[:status_id]).to eq status.id.to_s .to include(
status_id: status.id.to_s
)
filter = user.account.custom_filters.first filter = user.account.custom_filters.first
expect(filter).to_not be_nil expect(filter).to_not be_nil
@ -71,8 +73,10 @@ RSpec.describe 'API V2 Filters Statuses' do
it 'responds with the filter', :aggregate_failures do it 'responds with the filter', :aggregate_failures do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
json = body_as_json expect(body_as_json)
expect(json[:status_id]).to eq status_filter.status_id.to_s .to include(
status_id: status_filter.status.id.to_s
)
end end
context "when trying to access another user's filter keyword" do context "when trying to access another user's filter keyword" do

View file

@ -58,12 +58,15 @@ RSpec.describe 'Filters' do
it 'returns a filter with keywords', :aggregate_failures do it 'returns a filter with keywords', :aggregate_failures do
subject subject
json = body_as_json expect(body_as_json)
.to include(
expect(json[:title]).to eq 'magic' title: 'magic',
expect(json[:filter_action]).to eq 'hide' filter_action: 'hide',
expect(json[:context]).to eq ['home'] context: %w(home),
expect(json[:keywords].map { |keyword| keyword.slice(:keyword, :whole_word) }).to match [{ keyword: 'magic', whole_word: true }] keywords: contain_exactly(
include(keyword: 'magic', whole_word: true)
)
)
end end
it 'creates a filter', :aggregate_failures do it 'creates a filter', :aggregate_failures do

View file

@ -129,9 +129,11 @@ describe 'The /.well-known/webfinger endpoint' do
end end
it 'returns links for the internal account' do it 'returns links for the internal account' do
json = body_as_json expect(body_as_json)
expect(json[:subject]).to eq 'acct:mastodon.internal@cb6e6126.ngrok.io' .to include(
expect(json[:aliases]).to eq ['https://cb6e6126.ngrok.io/actor'] subject: 'acct:mastodon.internal@cb6e6126.ngrok.io',
aliases: ['https://cb6e6126.ngrok.io/actor']
)
end end
end end