Skip to content

Commit 2729cd2

Browse files
authored
Merge pull request #485 from weakish/verify-change-mobile
feat(sms): request_change_phone_number & change_phone_number
2 parents a464105 + eb54015 commit 2729cd2

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

leancloud/user.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,25 @@ def reset_password_by_sms_code(cls, sms_code, new_password):
339339
params = {"password": new_password}
340340
client.put("/resetPasswordBySmsCode/" + sms_code, params)
341341

342+
# This should be an instance method.
343+
# However, to be consistent with other similar methods (`request_password_reset_by_sms_code`),
344+
# it is implemented as a class method.
345+
@classmethod
346+
def request_change_phone_number(cls, phone_number, ttl=None, validate_token=None):
347+
params = {"mobilePhoneNumber": phone_number}
348+
if ttl is not None:
349+
params["ttl"] = ttl
350+
if validate_token is not None:
351+
params["validate_token"] = validate_token
352+
client.post("/requestChangePhoneNumber", params)
353+
354+
# This should be an instance method and update the local date,
355+
# but it is implemented as a class method for the same reason as above.
356+
@classmethod
357+
def change_phone_number(cls, sms_code, phone_number):
358+
params = {"mobilePhoneNumber": phone_number, "code": sms_code}
359+
client.post("/changePhoneNumber", params)
360+
342361
@classmethod
343362
def verify_mobile_phone_number(cls, sms_code):
344363
client.post("/verfyMobilePhone/" + sms_code, {})

tests/test_user.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,30 @@ def test_request_mobile_phone_verify(): # type: () -> None
274274
raise e
275275

276276

277+
@with_setup(get_setup_func())
278+
def test_request_change_phone_number(): # type: () -> None
279+
user1 = User()
280+
user1.set("username", "user1_name")
281+
user1.set("password", "password")
282+
user1.login()
283+
try:
284+
User.request_change_phone_number("18611111112")
285+
except LeanCloudError as e:
286+
if e.code not in (119, 213, 601):
287+
raise e
288+
finally:
289+
user1.logout()
290+
291+
292+
@with_setup(get_setup_func())
293+
def test_change_phone_number(): # type: () -> None
294+
try:
295+
User.change_phone_number("123456", "18611111112")
296+
except LeanCloudError as e:
297+
if e.code != 603:
298+
raise e
299+
300+
277301
@with_setup(get_setup_func())
278302
def test_request_password_reset_by_sms_code(): # type: () -> None
279303
try:

0 commit comments

Comments
 (0)