mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-03-28 11:41:31 -04:00
* feat: Add API token generation and authentication This commit introduces API token generation and authentication for write operations. - Adds a section to the user's profile edit page to generate and display an API token. - Reuses the `authentications` table to store the API token, avoiding the need for a database migration. - Implements token-based authentication for the API using the `Authorization: Token token=...` header. - Enables write operations for all API resources and ensures they are protected by the new authentication mechanism. - Adds feature and request specs to test the new functionality. * feat: Add API token generation and authentication This commit introduces API token generation and authentication for write operations. - Adds a section to the user's profile edit page to generate and display an API token. - Reuses the `authentications` table to store the API token, avoiding the need for a database migration. - Implements token-based authentication for the API using the `Authorization: Token token=...` header. - Enables write operations for all API resources and ensures they are protected by the new authentication mechanism. - Adds feature and request specs to test the new functionality. * Mark as editable * Refactor * WIP - Authentication * Implement more test coverage * Split 401 and 403 * Before Create hooks * Update harvest specs, defaulting to the first plant part - this may not be right * Update coverage * Update coverage * Rubocop * Rubocop * Rubocop * Fix coverage * For now, mark photos immutable again * Fix specs * Fix specs * Rubocop * Fix specs --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
39 lines
963 B
Ruby
39 lines
963 B
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe "member token management", :js do
|
|
include_context 'signed in member'
|
|
|
|
before do
|
|
visit edit_member_registration_path
|
|
click_on "Apps"
|
|
end
|
|
|
|
it "can generate an API token" do
|
|
expect(page).to have_no_content("Your API token is")
|
|
click_on "Generate API Token"
|
|
expect(page).to have_content("Your API token is")
|
|
member.reload
|
|
expect(member.api_token).to be_present
|
|
end
|
|
|
|
context "with an existing token" do
|
|
before do
|
|
member.regenerate_api_token
|
|
visit edit_member_registration_path
|
|
click_on "Apps"
|
|
end
|
|
|
|
it "can regenerate an API token" do
|
|
old_token = member.api_token.token
|
|
expect(page).to have_content("Your API token is")
|
|
accept_confirm do
|
|
click_on "Regenerate"
|
|
end
|
|
expect(page).to have_content("Your API token is")
|
|
expect(member.reload.api_token.token).not_to eq(old_token)
|
|
end
|
|
end
|
|
end
|