Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F7687229
conn_case.ex
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
conn_case.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.ConnCase
do
@moduledoc
"""
This module defines the test case to be used by
tests that require setting up a connection.
Such tests rely on `Phoenix.ConnTest` and also
import other functionality to make it easier
to build common datastructures and query the data layer.
Finally, if the test case interacts with the database,
it cannot be async. For this reason, every test runs
inside a transaction which is reset at the beginning
of the test unless the test case is marked as async.
"""
use
ExUnit.CaseTemplate
alias
Pleroma.DataCase
using
do
quote
do
# Import conveniences for testing with connections
import
Plug.Conn
import
Phoenix.ConnTest
use
Pleroma.Tests.Helpers
import
Pleroma.Web.Router.Helpers
alias
Pleroma.Config
# The default endpoint for testing
@endpoint
Pleroma.Web.Endpoint
# Sets up OAuth access with specified scopes
defp
oauth_access
(
scopes
,
opts
\\
[])
do
user
=
Keyword
.
get_lazy
(
opts
,
:user
,
fn
->
Pleroma.Factory
.
insert
(
:user
)
end
)
token
=
Keyword
.
get_lazy
(
opts
,
:oauth_token
,
fn
->
Pleroma.Factory
.
insert
(
:oauth_token
,
user
:
user
,
scopes
:
scopes
)
end
)
conn
=
build_conn
()
|>
assign
(
:user
,
user
)
|>
assign
(
:token
,
token
)
%{
user
:
user
,
token
:
token
,
conn
:
conn
}
end
defp
request_content_type
(%{
conn
:
conn
})
do
conn
=
put_req_header
(
conn
,
"content-type"
,
"multipart/form-data"
)
[
conn
:
conn
]
end
defp
empty_json_response
(
conn
)
do
body
=
response
(
conn
,
204
)
response_content_type
(
conn
,
:json
)
body
end
defp
json_response_and_validate_schema
(
%{
private
:
%{
operation_id
:
op_id
}}
=
conn
,
status
)
do
{
spec
,
lookup
}
=
OpenApiSpex.Plug.PutApiSpec
.
get_spec_and_operation_lookup
(
conn
)
content_type
=
conn
|>
Plug.Conn
.
get_resp_header
(
"content-type"
)
|>
List
.
first
()
|>
String
.
split
(
";"
)
|>
List
.
first
()
status
=
Plug.Conn.Status
.
code
(
status
)
unless
lookup
[
op_id
]
.
responses
[
status
]
do
err
=
"Response schema not found for
#{
status
}
#{
conn
.
method
}
#{
conn
.
request_path
}
"
flunk
(
err
)
end
schema
=
lookup
[
op_id
]
.
responses
[
status
]
.
content
[
content_type
]
.
schema
json
=
if
status
==
204
,
do
:
empty_json_response
(
conn
),
else
:
json_response
(
conn
,
status
)
case
OpenApiSpex
.
cast_value
(
json
,
schema
,
spec
)
do
{
:ok
,
_data
}
->
json
{
:error
,
errors
}
->
errors
=
Enum
.
map
(
errors
,
fn
error
->
message
=
OpenApiSpex.Cast.Error
.
message
(
error
)
path
=
OpenApiSpex.Cast.Error
.
path_to_string
(
error
)
"
#{
message
}
at
#{
path
}
"
end
)
flunk
(
"Response does not conform to schema of
#{
op_id
}
operation:
#{
Enum
.
join
(
errors
,
"
\n
"
)
}
\n
#{
inspect
(
json
)
}
"
)
end
end
defp
json_response_and_validate_schema
(
conn
,
_status
)
do
flunk
(
"Response schema not found for
#{
conn
.
method
}
#{
conn
.
request_path
}
#{
conn
.
status
}
"
)
end
end
end
setup
tags
do
DataCase
.
setup_multi_process_mode
(
tags
)
DataCase
.
setup_streamer
(
tags
)
DataCase
.
stub_pipeline
()
Mox
.
verify_on_exit!
()
{
:ok
,
conn
:
Phoenix.ConnTest
.
build_conn
()}
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Sep 3, 7:43 PM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
439209
Default Alt Text
conn_case.ex (3 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment