Авторизация для подписок Graphql (Absinthe) с токеном - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь добавить аутентификацию к этому тесту подписки , так как я получаю Not Authorized при запуске mix test. Я видел, что вам нужно добавить мутацию для входа в функцию push_doc, но мне было интересно. Есть ли способ использовать только токен для аутентификации, как обычные мутации, которые используют:

conn =
      build_conn()
      |> put_req_header("authorization", @token)
      |> get("/api", query: @query)

    assert json_response(conn, 200) == %{
       "data" => %{
          "authors" => [%{"name" => "Jennifer"}]
       }
    }

Это мой текущий тест на подписку:

test "1. Subscribe to createAuthor", %{socket: socket} do

    # setup a subscription
    ref = push_doc(socket, @subscription)
    assert_reply(ref, :ok, %{subscriptionId: subscription_id})

    # run a mutation to trigger the subscription
    ref = push_doc(socket, @mutation)
    assert_reply(ref, :ok, reply)

    assert %{
         data: %{
           "createAuthor" => %{
             "name" => "Jennifer"
           }
         }
       } = reply

    # check to see if we got subscription data
    expected = %{
      result: %{
        data: %{
          "createAuthor" => %{
            "name" => "Jennifer"
          }
        }
      },
      subscriptionId: subscription_id
    }

    assert_push("subscription:data", push)
    assert expected == push
end

Мой общий вопрос. Могу ли я только передать token (который я жестко запрограммировал) в функцию аутентификации для подписок?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вы можете сделать токен со сроком действия около 100 лет, подписанный вашим ключом. Жесткий код, и это хорошо навсегда, если вы используете один и тот же SK.

Вы добавляете "Bearer" перед своим токеном?

0 голосов
/ 09 июля 2018

Мне удалось сделать тест следующим образом, сделав мутацию, используя put_req_header()

test "1. Subscribe to createAuthor", %{socket: socket} do
    # setup a subscription
    ref = push_doc(socket, @subscription)
    assert_reply(ref, :ok, %{subscriptionId: subscription_id})

    # run a mutation to trigger the subscription
    conn =
      post(
        build_conn()
        |> put_req_header("authorization", @token),
        "/api",
        query: @mutation
      )

    assert json_response(conn, 200) == %{
             "data" => %{
               "createAuthor" => %{
                 "name" => "Jennifer"
               }
             }
           }

    # check to see if we got subscription data
    expected = %{
      result: %{
        data: %{
          "createAuthor" => %{
            "name" => "Jennifer"
          }
        }
      },
      subscriptionId: subscription_id
    }

    assert_push("subscription:data", push)
    assert expected == push
  end
...