Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First draft of the Telegram strategy #152

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Telegram strategy: allow to invoke callback with string "init_data" k…
…ey to support post request params
  • Loading branch information
vheathen committed Jun 17, 2024
commit b2422172f55a764607ce1ae6de5bafc8ff7511f6
7 changes: 6 additions & 1 deletion lib/assent/strategies/telegram.ex
Original file line number Diff line number Diff line change
Expand Up @@ -142,14 +142,19 @@ defmodule Assent.Strategies.Telegram do

@type login_widget_response :: %{String.t() => String.t()}
@type mini_app_init_data :: String.t()
@type response_params :: %{init_data: mini_app_init_data()} | login_widget_response()
@type mini_app_response ::
%{init_data: mini_app_init_data()} | %{String.t() => mini_app_init_data()}
@type response_params :: mini_app_response() | login_widget_response()

@impl Assent.Strategy
def authorize_url(_config) do
{:error, "Telegram does not support direct authorization request, please check docs"}
end

@impl Assent.Strategy
def callback(config, %{"init_data" => init_data} = _response_params),
do: callback(config, %{init_data: init_data})

def callback(config, %{} = response_params) do
config = enrich_config(config)

Expand Down
10 changes: 9 additions & 1 deletion test/assent/strategies/telgram_test.exs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
defmodule Assent.Strategies.TelgramTest do
use ExUnit.Case


alias Assent.Strategies.Telegram

# 1_000 years
Expand Down Expand Up @@ -79,6 +78,15 @@ defmodule Assent.Strategies.TelgramTest do
Telegram.callback(@config_mini_app, @web_app_callback_request_params)

assert user == @web_app_claims

request_params_with_string_key = %{
"init_data" => @web_app_callback_request_params.init_data
}

assert {:ok, %{user: user}} =
Telegram.callback(@config_mini_app, request_params_with_string_key)

assert user == @web_app_claims
end

test "error if max auth validity exceeded for the login widget" do
Expand Down