1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 13:19:39 +02:00

Fix rubocop linting issues in API chat endpoints

- Fix trailing whitespace
- Add missing final newlines
- Fix array bracket spacing
- Auto-corrected all layout issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Josh Pigford 2025-06-18 04:36:31 -05:00
parent 94202b2a6b
commit 404066eaa1
7 changed files with 56 additions and 56 deletions

View file

@ -6,25 +6,25 @@ class Api::V1::ChatsControllerTest < ActionDispatch::IntegrationTest
setup do
@user = users(:family_admin)
@user.update!(ai_enabled: true)
@oauth_app = Doorkeeper::Application.create!(
name: "Test API App",
redirect_uri: "https://example.com/callback",
scopes: "read write read_write"
)
@read_token = Doorkeeper::AccessToken.create!(
application: @oauth_app,
resource_owner_id: @user.id,
scopes: "read"
)
@write_token = Doorkeeper::AccessToken.create!(
application: @oauth_app,
resource_owner_id: @user.id,
scopes: "read_write"
)
@chat = chats(:one)
end
@ -32,13 +32,13 @@ class Api::V1::ChatsControllerTest < ActionDispatch::IntegrationTest
get "/api/v1/chats"
assert_response :unauthorized
end
test "should require AI to be enabled" do
@user.update!(ai_enabled: false)
get "/api/v1/chats", headers: bearer_auth_header(@read_token)
assert_response :forbidden
response_body = JSON.parse(response.body)
assert_equal "feature_disabled", response_body["error"]
end
@ -46,88 +46,88 @@ class Api::V1::ChatsControllerTest < ActionDispatch::IntegrationTest
test "should list chats with read scope" do
get "/api/v1/chats", headers: bearer_auth_header(@read_token)
assert_response :success
response_body = JSON.parse(response.body)
assert response_body["chats"].is_a?(Array)
assert response_body["pagination"].present?
end
test "should show chat with messages" do
get "/api/v1/chats/#{@chat.id}", headers: bearer_auth_header(@read_token)
assert_response :success
response_body = JSON.parse(response.body)
assert_equal @chat.id, response_body["id"]
assert response_body["messages"].is_a?(Array)
end
test "should create chat with write scope" do
assert_difference "Chat.count" do
post "/api/v1/chats",
post "/api/v1/chats",
params: { title: "New chat", message: "Hello AI" },
headers: bearer_auth_header(@write_token)
end
assert_response :created
response_body = JSON.parse(response.body)
assert_equal "New chat", response_body["title"]
end
test "should not create chat with read scope" do
post "/api/v1/chats",
post "/api/v1/chats",
params: { title: "New chat" },
headers: bearer_auth_header(@read_token)
assert_response :forbidden
end
test "should update chat" do
patch "/api/v1/chats/#{@chat.id}",
params: { title: "Updated title" },
headers: bearer_auth_header(@write_token)
assert_response :success
response_body = JSON.parse(response.body)
assert_equal "Updated title", response_body["title"]
end
test "should delete chat" do
assert_difference "Chat.count", -1 do
delete "/api/v1/chats/#{@chat.id}", headers: bearer_auth_header(@write_token)
end
assert_response :no_content
end
test "should not access other user's chat" do
other_user = users(:family_member)
other_user.update!(family: families(:empty))
other_chat = chats(:two)
other_chat.update!(user: other_user)
get "/api/v1/chats/#{other_chat.id}", headers: bearer_auth_header(@read_token)
assert_response :not_found
end
test "should support API key authentication" do
# Remove any existing API keys for this user
@user.api_keys.destroy_all
plain_key = ApiKey.generate_secure_key
api_key = @user.api_keys.build(
name: "Test API Key",
scopes: ["read_write"]
scopes: [ "read_write" ]
)
api_key.key = plain_key
api_key.save!
get "/api/v1/chats", headers: { "X-Api-Key" => plain_key }
assert_response :success
end
private
def bearer_auth_header(token)
{ "Authorization" => "Bearer #{token.token}" }
end
end
end

View file

@ -6,19 +6,19 @@ class Api::V1::MessagesControllerTest < ActionDispatch::IntegrationTest
setup do
@user = users(:family_admin)
@user.update!(ai_enabled: true)
@oauth_app = Doorkeeper::Application.create!(
name: "Test API App",
redirect_uri: "https://example.com/callback",
scopes: "read write read_write"
)
@write_token = Doorkeeper::AccessToken.create!(
application: @oauth_app,
resource_owner_id: @user.id,
scopes: "read_write"
)
@chat = chats(:one)
end
@ -26,30 +26,30 @@ class Api::V1::MessagesControllerTest < ActionDispatch::IntegrationTest
post "/api/v1/chats/#{@chat.id}/messages"
assert_response :unauthorized
end
test "should require AI to be enabled" do
@user.update!(ai_enabled: false)
post "/api/v1/chats/#{@chat.id}/messages",
params: { content: "Hello" },
headers: bearer_auth_header(@write_token)
assert_response :forbidden
end
test "should create message with write scope" do
assert_difference "Message.count" do
post "/api/v1/chats/#{@chat.id}/messages",
params: { content: "Test message", model: "gpt-4" },
headers: bearer_auth_header(@write_token)
end
assert_response :created
response_body = JSON.parse(response.body)
assert_equal "Test message", response_body["content"]
assert_equal "user_message", response_body["type"]
assert_equal "pending", response_body["ai_response_status"]
end
test "should enqueue assistant response job" do
assert_enqueued_with(job: AssistantResponseJob) do
post "/api/v1/chats/#{@chat.id}/messages",
@ -57,55 +57,55 @@ class Api::V1::MessagesControllerTest < ActionDispatch::IntegrationTest
headers: bearer_auth_header(@write_token)
end
end
test "should retry last assistant message" do
skip "Retry functionality needs debugging"
# Create an assistant message to retry
assistant_message = @chat.messages.create!(
type: "AssistantMessage",
content: "Previous response",
ai_model: "gpt-4"
)
assert_enqueued_with(job: AssistantResponseJob) do
post "/api/v1/chats/#{@chat.id}/messages/retry",
headers: bearer_auth_header(@write_token)
end
assert_response :accepted
response_body = JSON.parse(response.body)
assert response_body["message_id"].present?
end
test "should not retry if no assistant message exists" do
# Remove all assistant messages
@chat.messages.where(type: "AssistantMessage").destroy_all
post "/api/v1/chats/#{@chat.id}/messages/retry.json",
headers: bearer_auth_header(@write_token)
assert_response :unprocessable_entity
response_body = JSON.parse(response.body)
assert_equal "No assistant message to retry", response_body["error"]
end
test "should not access messages in other user's chat" do
other_user = users(:family_member)
other_user.update!(family: families(:empty))
other_chat = chats(:two)
other_chat.update!(user: other_user)
post "/api/v1/chats/#{other_chat.id}/messages",
params: { content: "Test" },
headers: bearer_auth_header(@write_token)
assert_response :not_found
end
private
def bearer_auth_header(token)
{ "Authorization" => "Bearer #{token.token}" }
end
end
end