diff options
author | David Celis <me@davidcel.is> | 2017-04-09 09:33:40 -0700 |
---|---|---|
committer | Eugen <eugen@zeonfederated.com> | 2017-04-09 18:33:40 +0200 |
commit | d4fe6cd2bfee50cfcde5de5c3f58240552e9c71d (patch) | |
tree | d4a7cf3666e6310652fac11f3078506b7ab44b54 /spec/controllers/api | |
parent | ea6c930c04762bef00b42dad16a17b71b8acc93b (diff) |
Allow users to update their Account in the API (#1179)
* Allow users to update their Account in the API It would be nice for API clients to be able to allow users to update their accounts without having to wrap Mastodon in a web view. This patch adds an API endpoint to let users submit a PATCH for their account. Signed-off-by: David Celis <me@davidcel.is> * Add /api/v1/accounts/update_credentials to the API docs Signed-off-by: David Celis <me@davidcel.is>
Diffstat (limited to 'spec/controllers/api')
-rw-r--r-- | spec/controllers/api/v1/accounts_controller_spec.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb index 5d36b0159..98c87bf16 100644 --- a/spec/controllers/api/v1/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -24,6 +24,39 @@ RSpec.describe Api::V1::AccountsController, type: :controller do end end + describe 'PATCH #update_credentials' do + it 'returns http success' do + expect(user.account.avatar).not_to exist + expect(user.account.header).not_to exist + + avatar = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png')) + header = File.read(Rails.root.join('app', 'assets', 'images', 'mastodon-getting-started.png')) + params = { + display_name: "Alice Isn't Dead", + note: "Hi!\n\nToot toot!", + avatar: "data:image/png;base64,#{Base64.encode64(avatar)}", + header: "data:image/png;base64,#{Base64.encode64(header)}" + } + patch :update_credentials, params: params + expect(response).to have_http_status(:success) + + user.reload + + expect(user.account.display_name).to eq("Alice Isn't Dead") + expect(user.account.note).to eq("Hi!\n\nToot toot!") + expect(user.account.avatar).to exist + expect(user.account.header).to exist + end + + it 'respects Account validations' do + note = "This is too long. " * 10 + error = { error: 'The account could not be updated: Note is too long (maximum is 160 characters)' }.to_json + patch :update_credentials, params: { note: note } + expect(response).to have_http_status(:unprocessable_entity) + expect(response.body).to eq(error) + end + end + describe 'GET #statuses' do it 'returns http success' do get :statuses, params: { id: user.account.id } |