summaryrefslogtreecommitdiff
path: root/test/web/auth/basic_auth_test.exs
diff options
context:
space:
mode:
authorMaksim Pechnikov <parallel588@gmail.com>2020-05-01 06:21:59 +0300
committerMaksim Pechnikov <parallel588@gmail.com>2020-05-01 06:21:59 +0300
commita92c713d9c761563c72d0f660574878aa569249a (patch)
treece88697749dbe26331b255883b4fa9631002e8b4 /test/web/auth/basic_auth_test.exs
parent270c3fe446a374202b6d64ce487f7df29ecb1c14 (diff)
parent0dd863f8f53d30d37e35d4ec2c4e34d09a266a85 (diff)
downloadpleroma-a92c713d9c761563c72d0f660574878aa569249a.tar.gz
pleroma-a92c713d9c761563c72d0f660574878aa569249a.zip
Merge branch 'develop' into issue/1276-2
Diffstat (limited to 'test/web/auth/basic_auth_test.exs')
-rw-r--r--test/web/auth/basic_auth_test.exs46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/web/auth/basic_auth_test.exs b/test/web/auth/basic_auth_test.exs
new file mode 100644
index 000000000..64f8a6863
--- /dev/null
+++ b/test/web/auth/basic_auth_test.exs
@@ -0,0 +1,46 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.Auth.BasicAuthTest do
+ use Pleroma.Web.ConnCase
+
+ import Pleroma.Factory
+
+ test "with HTTP Basic Auth used, grants access to OAuth scope-restricted endpoints", %{
+ conn: conn
+ } do
+ user = insert(:user)
+ assert Comeonin.Pbkdf2.checkpw("test", user.password_hash)
+
+ basic_auth_contents =
+ (URI.encode_www_form(user.nickname) <> ":" <> URI.encode_www_form("test"))
+ |> Base.encode64()
+
+ # Succeeds with HTTP Basic Auth
+ response =
+ conn
+ |> put_req_header("authorization", "Basic " <> basic_auth_contents)
+ |> get("/api/v1/accounts/verify_credentials")
+ |> json_response(200)
+
+ user_nickname = user.nickname
+ assert %{"username" => ^user_nickname} = response
+
+ # Succeeds with a properly scoped OAuth token
+ valid_token = insert(:oauth_token, scopes: ["read:accounts"])
+
+ conn
+ |> put_req_header("authorization", "Bearer #{valid_token.token}")
+ |> get("/api/v1/accounts/verify_credentials")
+ |> json_response(200)
+
+ # Fails with a wrong-scoped OAuth token (proof of restriction)
+ invalid_token = insert(:oauth_token, scopes: ["read:something"])
+
+ conn
+ |> put_req_header("authorization", "Bearer #{invalid_token.token}")
+ |> get("/api/v1/accounts/verify_credentials")
+ |> json_response(403)
+ end
+end