|
24 | 24 | import synapse.rest.admin
|
25 | 25 | from synapse.api.constants import UserTypes
|
26 | 26 | from synapse.api.errors import Codes, HttpResponseException, ResourceLimitError
|
27 |
| -from synapse.rest.client.v1 import login, room |
| 27 | +from synapse.rest.client.v1 import login, profile, room |
28 | 28 | from synapse.rest.client.v2_alpha import sync
|
29 | 29 |
|
30 | 30 | from tests import unittest
|
|
34 | 34 |
|
35 | 35 | class UserRegisterTestCase(unittest.HomeserverTestCase):
|
36 | 36 |
|
37 |
| - servlets = [synapse.rest.admin.register_servlets_for_client_rest_resource] |
| 37 | + servlets = [ |
| 38 | + synapse.rest.admin.register_servlets_for_client_rest_resource, |
| 39 | + profile.register_servlets, |
| 40 | + ] |
38 | 41 |
|
39 | 42 | def make_homeserver(self, reactor, clock):
|
40 | 43 |
|
@@ -325,6 +328,120 @@ def nonce():
|
325 | 328 | self.assertEqual(400, int(channel.result["code"]), msg=channel.result["body"])
|
326 | 329 | self.assertEqual("Invalid user type", channel.json_body["error"])
|
327 | 330 |
|
| 331 | + def test_displayname(self): |
| 332 | + """ |
| 333 | + Test that displayname of new user is set |
| 334 | + """ |
| 335 | + |
| 336 | + # set no displayname |
| 337 | + request, channel = self.make_request("GET", self.url) |
| 338 | + self.render(request) |
| 339 | + nonce = channel.json_body["nonce"] |
| 340 | + |
| 341 | + want_mac = hmac.new(key=b"shared", digestmod=hashlib.sha1) |
| 342 | + want_mac.update(nonce.encode("ascii") + b"\x00bob1\x00abc123\x00notadmin") |
| 343 | + want_mac = want_mac.hexdigest() |
| 344 | + |
| 345 | + body = json.dumps( |
| 346 | + {"nonce": nonce, "username": "bob1", "password": "abc123", "mac": want_mac} |
| 347 | + ) |
| 348 | + request, channel = self.make_request("POST", self.url, body.encode("utf8")) |
| 349 | + self.render(request) |
| 350 | + |
| 351 | + self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"]) |
| 352 | + self.assertEqual("@bob1:test", channel.json_body["user_id"]) |
| 353 | + |
| 354 | + request, channel = self.make_request("GET", "/profile/@bob1:test/displayname") |
| 355 | + self.render(request) |
| 356 | + self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"]) |
| 357 | + self.assertEqual("bob1", channel.json_body["displayname"]) |
| 358 | + |
| 359 | + # displayname is None |
| 360 | + request, channel = self.make_request("GET", self.url) |
| 361 | + self.render(request) |
| 362 | + nonce = channel.json_body["nonce"] |
| 363 | + |
| 364 | + want_mac = hmac.new(key=b"shared", digestmod=hashlib.sha1) |
| 365 | + want_mac.update(nonce.encode("ascii") + b"\x00bob2\x00abc123\x00notadmin") |
| 366 | + want_mac = want_mac.hexdigest() |
| 367 | + |
| 368 | + body = json.dumps( |
| 369 | + { |
| 370 | + "nonce": nonce, |
| 371 | + "username": "bob2", |
| 372 | + "displayname": None, |
| 373 | + "password": "abc123", |
| 374 | + "mac": want_mac, |
| 375 | + } |
| 376 | + ) |
| 377 | + request, channel = self.make_request("POST", self.url, body.encode("utf8")) |
| 378 | + self.render(request) |
| 379 | + |
| 380 | + self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"]) |
| 381 | + self.assertEqual("@bob2:test", channel.json_body["user_id"]) |
| 382 | + |
| 383 | + request, channel = self.make_request("GET", "/profile/@bob2:test/displayname") |
| 384 | + self.render(request) |
| 385 | + self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"]) |
| 386 | + self.assertEqual("bob2", channel.json_body["displayname"]) |
| 387 | + |
| 388 | + # displayname is empty |
| 389 | + request, channel = self.make_request("GET", self.url) |
| 390 | + self.render(request) |
| 391 | + nonce = channel.json_body["nonce"] |
| 392 | + |
| 393 | + want_mac = hmac.new(key=b"shared", digestmod=hashlib.sha1) |
| 394 | + want_mac.update(nonce.encode("ascii") + b"\x00bob3\x00abc123\x00notadmin") |
| 395 | + want_mac = want_mac.hexdigest() |
| 396 | + |
| 397 | + body = json.dumps( |
| 398 | + { |
| 399 | + "nonce": nonce, |
| 400 | + "username": "bob3", |
| 401 | + "displayname": "", |
| 402 | + "password": "abc123", |
| 403 | + "mac": want_mac, |
| 404 | + } |
| 405 | + ) |
| 406 | + request, channel = self.make_request("POST", self.url, body.encode("utf8")) |
| 407 | + self.render(request) |
| 408 | + |
| 409 | + self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"]) |
| 410 | + self.assertEqual("@bob3:test", channel.json_body["user_id"]) |
| 411 | + |
| 412 | + request, channel = self.make_request("GET", "/profile/@bob3:test/displayname") |
| 413 | + self.render(request) |
| 414 | + self.assertEqual(404, int(channel.result["code"]), msg=channel.result["body"]) |
| 415 | + |
| 416 | + # set displayname |
| 417 | + request, channel = self.make_request("GET", self.url) |
| 418 | + self.render(request) |
| 419 | + nonce = channel.json_body["nonce"] |
| 420 | + |
| 421 | + want_mac = hmac.new(key=b"shared", digestmod=hashlib.sha1) |
| 422 | + want_mac.update(nonce.encode("ascii") + b"\x00bob4\x00abc123\x00notadmin") |
| 423 | + want_mac = want_mac.hexdigest() |
| 424 | + |
| 425 | + body = json.dumps( |
| 426 | + { |
| 427 | + "nonce": nonce, |
| 428 | + "username": "bob4", |
| 429 | + "displayname": "Bob's Name", |
| 430 | + "password": "abc123", |
| 431 | + "mac": want_mac, |
| 432 | + } |
| 433 | + ) |
| 434 | + request, channel = self.make_request("POST", self.url, body.encode("utf8")) |
| 435 | + self.render(request) |
| 436 | + |
| 437 | + self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"]) |
| 438 | + self.assertEqual("@bob4:test", channel.json_body["user_id"]) |
| 439 | + |
| 440 | + request, channel = self.make_request("GET", "/profile/@bob4:test/displayname") |
| 441 | + self.render(request) |
| 442 | + self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"]) |
| 443 | + self.assertEqual("Bob's Name", channel.json_body["displayname"]) |
| 444 | + |
328 | 445 | @override_config(
|
329 | 446 | {"limit_usage_by_mau": True, "max_mau_value": 2, "mau_trial_days": 0}
|
330 | 447 | )
|
|
0 commit comments