Skip to content

Commit

Permalink
FIX: Logs api scope not working (discourse#25215)
Browse files Browse the repository at this point in the history
  • Loading branch information
oblakeerickson authored Jan 11, 2024
1 parent c569107 commit 6ebe61e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/route_matcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ def action_allowed?(request)
# message_bus is not a rails route, special handling
return true if actions.include?("message_bus") && request.fullpath =~ %r{\A/message-bus/.*/poll}

# logster is not a rails route, special handling
return true if actions.include?(Logster::Web) && request.fullpath =~ %r{\A/logs/.*\.json\z}

path_params = path_params_from_request(request)
actions.include? "#{path_params[:controller]}##{path_params[:action]}"
end
Expand Down
7 changes: 7 additions & 0 deletions spec/models/api_key_scope_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,12 @@
"/posts (POST)",
)
end

it "should return logster urls" do
expect(ApiKeyScope.find_urls(actions: [Logster::Web], methods: [])).to contain_exactly(
"/logs/messages.json (POST)",
"/logs/show/:id.json (GET)",
)
end
end
end
21 changes: 21 additions & 0 deletions spec/requests/admin/api_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,27 @@
expect(scope.allowed_parameters["topic_id"]).to contain_exactly("55")
end

it "creates an scope for /logs" do
post "/admin/api/keys.json",
params: {
key: {
description: "logs",
scopes: [{ scope_id: "logs:messages" }],
},
}
expect(response.status).to eq(200)

data = response.parsed_body
scope = ApiKeyScope.find_by(api_key_id: data.dig("key", "id"))

expect(scope.resource).to eq("logs")
expect(scope.action).to eq("messages")

api_key = data.dig("key", "key")
post "/logs/messages.json", headers: { "Api-Key": api_key, "Api-Username": "system" }
expect(response.status).to eq(200)
end

it "allows multiple parameters separated by a comma" do
post "/admin/api/keys.json",
params: {
Expand Down

0 comments on commit 6ebe61e

Please sign in to comment.