Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
synapse
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Maunium
synapse
Commits
04f4b5f6
Commit
04f4b5f6
authored
5 years ago
by
dklimpel
Browse files
Options
Downloads
Patches
Plain Diff
add tests
parent
99bbe177
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
tests/handlers/test_profile.py
+3
-3
3 additions, 3 deletions
tests/handlers/test_profile.py
tests/rest/client/v2_alpha/test_account.py
+308
-0
308 additions, 0 deletions
tests/rest/client/v2_alpha/test_account.py
with
311 additions
and
3 deletions
tests/handlers/test_profile.py
+
3
−
3
View file @
04f4b5f6
...
...
@@ -70,7 +70,7 @@ class ProfileTestCase(unittest.TestCase):
yield
self
.
store
.
create_profile
(
self
.
frank
.
localpart
)
self
.
handler
=
hs
.
get_profile_handler
()
self
.
config
=
hs
.
config
self
.
hs
=
hs
@defer.inlineCallbacks
def
test_get_my_name
(
self
):
...
...
@@ -93,7 +93,7 @@ class ProfileTestCase(unittest.TestCase):
@defer.inlineCallbacks
def
test_set_my_name_if_disabled
(
self
):
self
.
config
.
disable_set_displayname
=
True
self
.
hs
.
config
.
disable_set_displayname
=
True
# Set first displayname is allowed, if displayname is null
self
.
store
.
set_profile_displayname
(
self
.
frank
.
localpart
,
"
Frank
"
)
...
...
@@ -164,7 +164,7 @@ class ProfileTestCase(unittest.TestCase):
@defer.inlineCallbacks
def
test_set_my_avatar_if_disabled
(
self
):
self
.
config
.
disable_set_avatar_url
=
True
self
.
hs
.
config
.
disable_set_avatar_url
=
True
# Set first time avatar is allowed, if displayname is null
self
.
store
.
set_profile_avatar_url
(
...
...
This diff is collapsed.
Click to expand it.
tests/rest/client/v2_alpha/test_account.py
+
308
−
0
View file @
04f4b5f6
...
...
@@ -325,3 +325,311 @@ class DeactivateTestCase(unittest.HomeserverTestCase):
)
self
.
render
(
request
)
self
.
assertEqual
(
request
.
code
,
200
)
class
ThreepidEmailRestTestCase
(
unittest
.
HomeserverTestCase
):
servlets
=
[
account
.
register_servlets
,
login
.
register_servlets
,
synapse
.
rest
.
admin
.
register_servlets_for_client_rest_resource
,
]
def
make_homeserver
(
self
,
reactor
,
clock
):
config
=
self
.
default_config
()
# Email config.
self
.
email_attempts
=
[]
def
sendmail
(
smtphost
,
from_addr
,
to_addrs
,
msg
,
**
kwargs
):
self
.
email_attempts
.
append
(
msg
)
return
config
[
"
email
"
]
=
{
"
enable_notifs
"
:
False
,
"
template_dir
"
:
os
.
path
.
abspath
(
pkg_resources
.
resource_filename
(
"
synapse
"
,
"
res/templates
"
)
),
"
smtp_host
"
:
"
127.0.0.1
"
,
"
smtp_port
"
:
20
,
"
require_transport_security
"
:
False
,
"
smtp_user
"
:
None
,
"
smtp_pass
"
:
None
,
"
notif_from
"
:
"
test@example.com
"
,
}
config
[
"
public_baseurl
"
]
=
"
https://example.com
"
self
.
hs
=
self
.
setup_test_homeserver
(
config
=
config
,
sendmail
=
sendmail
)
return
self
.
hs
def
prepare
(
self
,
reactor
,
clock
,
hs
):
self
.
store
=
hs
.
get_datastore
()
self
.
user_id
=
self
.
register_user
(
"
kermit
"
,
"
test
"
)
self
.
user_id_tok
=
self
.
login
(
"
kermit
"
,
"
test
"
)
self
.
email
=
"
test@example.com
"
self
.
url_3pid
=
b
"
account/3pid
"
def
test_add_email
(
self
):
"""
Test add mail to profile
"""
client_secret
=
"
foobar
"
session_id
=
self
.
_request_token
(
self
.
email
,
client_secret
)
self
.
assertEquals
(
len
(
self
.
email_attempts
),
1
)
link
=
self
.
_get_link_from_email
()
self
.
_validate_token
(
link
)
request
,
channel
=
self
.
make_request
(
"
POST
"
,
b
"
/_matrix/client/unstable/account/3pid/add
"
,
{
"
client_secret
"
:
client_secret
,
"
sid
"
:
session_id
,
"
auth
"
:
{
"
type
"
:
"
m.login.password
"
,
"
user
"
:
self
.
user_id
,
"
password
"
:
"
test
"
,
},
},
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
# Get user
request
,
channel
=
self
.
make_request
(
"
GET
"
,
self
.
url_3pid
,
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertEqual
(
"
email
"
,
channel
.
json_body
[
"
threepids
"
][
0
][
"
medium
"
])
self
.
assertEqual
(
self
.
email
,
channel
.
json_body
[
"
threepids
"
][
0
][
"
address
"
])
def
test_add_email_if_disabled
(
self
):
"""
Test add mail to profile if disabled
"""
self
.
hs
.
config
.
disable_3pid_changes
=
True
client_secret
=
"
foobar
"
session_id
=
self
.
_request_token
(
self
.
email
,
client_secret
)
self
.
assertEquals
(
len
(
self
.
email_attempts
),
1
)
link
=
self
.
_get_link_from_email
()
self
.
_validate_token
(
link
)
request
,
channel
=
self
.
make_request
(
"
POST
"
,
b
"
/_matrix/client/unstable/account/3pid/add
"
,
{
"
client_secret
"
:
client_secret
,
"
sid
"
:
session_id
,
"
auth
"
:
{
"
type
"
:
"
m.login.password
"
,
"
user
"
:
self
.
user_id
,
"
password
"
:
"
test
"
,
},
},
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
400
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertEqual
(
"
3PID changes disabled on this server
"
,
channel
.
json_body
[
"
error
"
])
# Get user
request
,
channel
=
self
.
make_request
(
"
GET
"
,
self
.
url_3pid
,
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertFalse
(
channel
.
json_body
[
"
threepids
"
])
def
test_delete_email
(
self
):
"""
Test delete mail from profile
"""
# Add a threepid
self
.
get_success
(
self
.
store
.
user_add_threepid
(
user_id
=
self
.
user_id
,
medium
=
"
email
"
,
address
=
self
.
email
,
validated_at
=
0
,
added_at
=
0
,
)
)
request
,
channel
=
self
.
make_request
(
"
POST
"
,
b
"
account/3pid/delete
"
,
{
"
medium
"
:
"
email
"
,
"
address
"
:
self
.
email
},
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
# Get user
request
,
channel
=
self
.
make_request
(
"
GET
"
,
self
.
url_3pid
,
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertFalse
(
channel
.
json_body
[
"
threepids
"
])
def
test_delete_email_if_disabled
(
self
):
"""
Test delete mail from profile if disabled
"""
self
.
hs
.
config
.
disable_3pid_changes
=
True
# Add a threepid
self
.
get_success
(
self
.
store
.
user_add_threepid
(
user_id
=
self
.
user_id
,
medium
=
"
email
"
,
address
=
self
.
email
,
validated_at
=
0
,
added_at
=
0
,
)
)
request
,
channel
=
self
.
make_request
(
"
POST
"
,
b
"
account/3pid/delete
"
,
{
"
medium
"
:
"
email
"
,
"
address
"
:
self
.
email
},
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
400
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertEqual
(
"
3PID changes disabled on this server
"
,
channel
.
json_body
[
"
error
"
])
# Get user
request
,
channel
=
self
.
make_request
(
"
GET
"
,
self
.
url_3pid
,
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertEqual
(
"
email
"
,
channel
.
json_body
[
"
threepids
"
][
0
][
"
medium
"
])
self
.
assertEqual
(
self
.
email
,
channel
.
json_body
[
"
threepids
"
][
0
][
"
address
"
])
def
test_cant_add_email_without_clicking_link
(
self
):
"""
Test that we do actually need to click the link in the email
"""
client_secret
=
"
foobar
"
session_id
=
self
.
_request_token
(
self
.
email
,
client_secret
)
self
.
assertEquals
(
len
(
self
.
email_attempts
),
1
)
# Attempt to add email without clicking the link
request
,
channel
=
self
.
make_request
(
"
POST
"
,
b
"
/_matrix/client/unstable/account/3pid/add
"
,
{
"
client_secret
"
:
client_secret
,
"
sid
"
:
session_id
,
"
auth
"
:
{
"
type
"
:
"
m.login.password
"
,
"
user
"
:
self
.
user_id
,
"
password
"
:
"
test
"
,
},
},
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
400
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertEqual
(
"
No validated 3pid session found
"
,
channel
.
json_body
[
"
error
"
])
# Get user
request
,
channel
=
self
.
make_request
(
"
GET
"
,
self
.
url_3pid
,
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertFalse
(
channel
.
json_body
[
"
threepids
"
])
def
test_no_valid_token
(
self
):
"""
Test that we do actually need to request a token and can
'
t just
make a session up.
"""
client_secret
=
"
foobar
"
session_id
=
"
weasle
"
# Attempt to add email without even requesting an email
request
,
channel
=
self
.
make_request
(
"
POST
"
,
b
"
/_matrix/client/unstable/account/3pid/add
"
,
{
"
client_secret
"
:
client_secret
,
"
sid
"
:
session_id
,
"
auth
"
:
{
"
type
"
:
"
m.login.password
"
,
"
user
"
:
self
.
user_id
,
"
password
"
:
"
test
"
,
},
},
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
400
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertEqual
(
"
No validated 3pid session found
"
,
channel
.
json_body
[
"
error
"
])
# Get user
request
,
channel
=
self
.
make_request
(
"
GET
"
,
self
.
url_3pid
,
access_token
=
self
.
user_id_tok
,
)
self
.
render
(
request
)
self
.
assertEqual
(
200
,
int
(
channel
.
result
[
"
code
"
]),
msg
=
channel
.
result
[
"
body
"
])
self
.
assertFalse
(
channel
.
json_body
[
"
threepids
"
])
def
_request_token
(
self
,
email
,
client_secret
):
request
,
channel
=
self
.
make_request
(
"
POST
"
,
b
"
account/3pid/email/requestToken
"
,
{
"
client_secret
"
:
client_secret
,
"
email
"
:
email
,
"
send_attempt
"
:
1
},
)
self
.
render
(
request
)
self
.
assertEquals
(
200
,
channel
.
code
,
channel
.
result
)
return
channel
.
json_body
[
"
sid
"
]
def
_validate_token
(
self
,
link
):
# Remove the host
path
=
link
.
replace
(
"
https://example.com
"
,
""
)
request
,
channel
=
self
.
make_request
(
"
GET
"
,
path
,
shorthand
=
False
)
self
.
render
(
request
)
self
.
assertEquals
(
200
,
channel
.
code
,
channel
.
result
)
def
_get_link_from_email
(
self
):
assert
self
.
email_attempts
,
"
No emails have been sent
"
raw_msg
=
self
.
email_attempts
[
-
1
].
decode
(
"
UTF-8
"
)
mail
=
Parser
().
parsestr
(
raw_msg
)
text
=
None
for
part
in
mail
.
walk
():
if
part
.
get_content_type
()
==
"
text/plain
"
:
text
=
part
.
get_payload
(
decode
=
True
).
decode
(
"
UTF-8
"
)
break
if
not
text
:
self
.
fail
(
"
Could not find text portion of email to parse
"
)
match
=
re
.
search
(
r
"
https://example.com\S+
"
,
text
)
assert
match
,
"
Could not find link in email
"
return
match
.
group
(
0
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment