summaryrefslogtreecommitdiff
path: root/test/web/oauth/oauth_controller_test.exs
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-21 10:32:27 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-21 10:32:27 +0300
commit503d966e9f7d4c41a1bfbd215b375443a858564a (patch)
tree634499f234fcd8d9f2b81523c66eaaf339ee52f8 /test/web/oauth/oauth_controller_test.exs
parentdcae5914d1f7d540e3c20be5988d5e3547a349cd (diff)
parentab36459464311389c2929ff1c48537889066a9f8 (diff)
downloadpleroma-503d966e9f7d4c41a1bfbd215b375443a858564a.tar.gz
pleroma-503d966e9f7d4c41a1bfbd215b375443a858564a.zip
Merge branch 'develop' into admin-be
Diffstat (limited to 'test/web/oauth/oauth_controller_test.exs')
-rw-r--r--test/web/oauth/oauth_controller_test.exs78
1 files changed, 40 insertions, 38 deletions
diff --git a/test/web/oauth/oauth_controller_test.exs b/test/web/oauth/oauth_controller_test.exs
index 9cc534f57..59f4674eb 100644
--- a/test/web/oauth/oauth_controller_test.exs
+++ b/test/web/oauth/oauth_controller_test.exs
@@ -568,29 +568,34 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
describe "POST /oauth/authorize" do
test "redirects with oauth authorization, " <>
- "keeping only non-admin scopes for non-admin user" do
- app = insert(:oauth_app, scopes: ["read", "write", "admin"])
+ "granting requested app-supported scopes to both admin- and non-admin users" do
+ app_scopes = ["read", "write", "admin", "secret_scope"]
+ app = insert(:oauth_app, scopes: app_scopes)
redirect_uri = OAuthController.default_redirect_uri(app)
non_admin = insert(:user, is_admin: false)
admin = insert(:user, is_admin: true)
+ scopes_subset = ["read:subscope", "write", "admin"]
- for {user, expected_scopes} <- %{
- non_admin => ["read:subscope", "write"],
- admin => ["read:subscope", "write", "admin"]
- } do
+ # In case scope param is missing, expecting _all_ app-supported scopes to be granted
+ for user <- [non_admin, admin],
+ {requested_scopes, expected_scopes} <-
+ %{scopes_subset => scopes_subset, nil => app_scopes} do
conn =
- build_conn()
- |> post("/oauth/authorize", %{
- "authorization" => %{
- "name" => user.nickname,
- "password" => "test",
- "client_id" => app.client_id,
- "redirect_uri" => redirect_uri,
- "scope" => "read:subscope write admin",
- "state" => "statepassed"
+ post(
+ build_conn(),
+ "/oauth/authorize",
+ %{
+ "authorization" => %{
+ "name" => user.nickname,
+ "password" => "test",
+ "client_id" => app.client_id,
+ "redirect_uri" => redirect_uri,
+ "scope" => requested_scopes,
+ "state" => "statepassed"
+ }
}
- })
+ )
target = redirected_to(conn)
assert target =~ redirect_uri
@@ -631,34 +636,31 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
assert result =~ "Invalid Username/Password"
end
- test "returns 401 for missing scopes " <>
- "(including all admin-only scopes for non-admin user)" do
+ test "returns 401 for missing scopes" do
user = insert(:user, is_admin: false)
app = insert(:oauth_app, scopes: ["read", "write", "admin"])
redirect_uri = OAuthController.default_redirect_uri(app)
- for scope_param <- ["", "admin:read admin:write"] do
- result =
- build_conn()
- |> post("/oauth/authorize", %{
- "authorization" => %{
- "name" => user.nickname,
- "password" => "test",
- "client_id" => app.client_id,
- "redirect_uri" => redirect_uri,
- "state" => "statepassed",
- "scope" => scope_param
- }
- })
- |> html_response(:unauthorized)
+ result =
+ build_conn()
+ |> post("/oauth/authorize", %{
+ "authorization" => %{
+ "name" => user.nickname,
+ "password" => "test",
+ "client_id" => app.client_id,
+ "redirect_uri" => redirect_uri,
+ "state" => "statepassed",
+ "scope" => ""
+ }
+ })
+ |> html_response(:unauthorized)
- # Keep the details
- assert result =~ app.client_id
- assert result =~ redirect_uri
+ # Keep the details
+ assert result =~ app.client_id
+ assert result =~ redirect_uri
- # Error message
- assert result =~ "This action is outside the authorized scopes"
- end
+ # Error message
+ assert result =~ "This action is outside the authorized scopes"
end
test "returns 401 for scopes beyond app scopes hierarchy", %{conn: conn} do