diff options
| author | Sachin Joshi <satchin.joshi@gmail.com> | 2019-07-19 11:43:42 +0545 | 
|---|---|---|
| committer | Sachin Joshi <satchin.joshi@gmail.com> | 2019-07-19 11:43:42 +0545 | 
| commit | de9906ad56bd25d6c8c38bef1307192df2e95445 (patch) | |
| tree | d84786cb8cf3361684c982d2109feccb7a42aaef /test/web | |
| parent | 18234cc44e6bc989e3e3cf15714c54b4fa05b9dd (diff) | |
| download | pleroma-de9906ad56bd25d6c8c38bef1307192df2e95445.tar.gz pleroma-de9906ad56bd25d6c8c38bef1307192df2e95445.zip  | |
change the structure of image ttl parsar
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/rich_media/aws_signed_url_test.exs | 70 | 
1 files changed, 57 insertions, 13 deletions
diff --git a/test/web/rich_media/aws_signed_url_test.exs b/test/web/rich_media/aws_signed_url_test.exs index 75bf6c6df..122787bc2 100644 --- a/test/web/rich_media/aws_signed_url_test.exs +++ b/test/web/rich_media/aws_signed_url_test.exs @@ -5,7 +5,7 @@  defmodule Pleroma.Web.RichMedia.TTL.AwsSignedUrlTest do    use ExUnit.Case, async: true -  test "amazon signed url is parsed and correct ttl is set for rich media" do +  test "s3 signed url is parsed correct for expiration time" do      url = "https://pleroma.social/amz"      {:ok, timestamp} = @@ -16,22 +16,66 @@ defmodule Pleroma.Web.RichMedia.TTL.AwsSignedUrlTest do      # in seconds      valid_till = 30 -    data = %{ -      image: -        "https://pleroma.s3.ap-southeast-1.amazonaws.com/sachin%20%281%29%20_a%20-%25%2Aasdasd%20BNN%20bnnn%20.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIBLWWK6RGDQXDLJQ%2F20190716%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=#{ -          timestamp -        }&X-Amz-Expires=#{valid_till}&X-Amz-Signature=04ffd6b98634f4b1bbabc62e0fac4879093cd54a6eed24fe8eb38e8369526bbf&X-Amz-SignedHeaders=host", -      locale: "en_US", -      site_name: "Pleroma", -      title: "PLeroma", -      url: url -    } +    metadata = construct_metadata(timestamp, valid_till, url) + +    expire_time = +      Timex.parse!(timestamp, "{ISO:Basic:Z}") |> Timex.to_unix() |> Kernel.+(valid_till) + +    assert expire_time == Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.ttl(metadata, url) +  end + +  test "s3 signed url is parsed and correct ttl is set for rich media" do +    url = "https://pleroma.social/amz" + +    {:ok, timestamp} = +      Timex.now() +      |> DateTime.truncate(:second) +      |> Timex.format("{ISO:Basic:Z}") + +    # in seconds +    valid_till = 30 + +    metadata = construct_metadata(timestamp, valid_till, url) + +    body = """ +    <meta name="twitter:card" content="Pleroma" /> +    <meta name="twitter:site" content="Pleroma" /> +    <meta name="twitter:title" content="Pleroma" /> +    <meta name="twitter:description" content="Pleroma" /> +    <meta name="twitter:image" content="#{Map.get(metadata, :image)}" /> +    """ + +    Tesla.Mock.mock(fn +      %{ +        method: :get, +        url: "https://pleroma.social/amz" +      } -> +        %Tesla.Env{status: 200, body: body} +    end) + +    Cachex.put(:rich_media_cache, url, metadata) + +    Pleroma.Web.RichMedia.Parser.set_ttl_based_on_image({:ok, metadata}, url) -    Cachex.put(:rich_media_cache, url, data) -    assert {:ok, _} = Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.run(data, url)      {:ok, cache_ttl} = Cachex.ttl(:rich_media_cache, url)      # as there is delay in setting and pulling the data from cache we ignore 1 second      assert_in_delta(valid_till * 1000, cache_ttl, 1000)    end + +  defp construct_s3_url(timestamp, valid_till) do +    "https://pleroma.s3.ap-southeast-1.amazonaws.com/sachin%20%281%29%20_a%20-%25%2Aasdasd%20BNN%20bnnn%20.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIBLWWK6RGDQXDLJQ%2F20190716%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=#{ +      timestamp +    }&X-Amz-Expires=#{valid_till}&X-Amz-Signature=04ffd6b98634f4b1bbabc62e0fac4879093cd54a6eed24fe8eb38e8369526bbf&X-Amz-SignedHeaders=host" +  end + +  defp construct_metadata(timestamp, valid_till, url) do +    %{ +      image: construct_s3_url(timestamp, valid_till), +      site: "Pleroma", +      title: "Pleroma", +      description: "Pleroma", +      url: url +    } +  end  end  | 
