|
21 | 21 |
|
22 | 22 | from __future__ import print_function |
23 | 23 | from .testlinkapigeneric import TestlinkAPIGeneric, TestLinkHelper |
24 | | -from .testlinkerrors import TLArgError |
| 24 | +from .testlinkerrors import TLArgError, TLResponseError |
25 | 25 | import sys |
26 | 26 |
|
27 | 27 |
|
@@ -512,6 +512,36 @@ def getProjectIDByName(self, projectName): |
512 | 512 | result = project['id'] |
513 | 513 | break |
514 | 514 | return result |
| 515 | + |
| 516 | + def ensureUserExist(self, login, **userArgs): |
| 517 | + """ combines getUserByLogin() + createUser() |
| 518 | + creates new user only, when login not exist |
| 519 | + |
| 520 | + returns userID |
| 521 | + |
| 522 | + userArgs defines optional key value pairs used to create new user |
| 523 | + - firstname Default 'unknown' |
| 524 | + - lastname Default 'via pyTLapi' |
| 525 | + - email Default 'unknown@example.com' |
| 526 | + - password Default None |
| 527 | + """ |
| 528 | + |
| 529 | + try: |
| 530 | + response = self.getUserByLogin(login) |
| 531 | + userID = response[0]['dbID'] |
| 532 | + except TLResponseError as tl_err: |
| 533 | + if tl_err.code == 10000: |
| 534 | + # Cannot Find User Login create new user |
| 535 | + name1 = userArgs.get('firstname', 'unknown') |
| 536 | + name2 = userArgs.get('lastname', 'via pyTLapi') |
| 537 | + mail = userArgs.get('email', 'unknown@example.com') |
| 538 | + pw = userArgs.get('password') |
| 539 | + userID = self.createUser(login, name1, name2, mail, password=pw) |
| 540 | + else: |
| 541 | + # seems to be another response failure - we forward it |
| 542 | + raise |
| 543 | + |
| 544 | + return userID |
515 | 545 |
|
516 | 546 |
|
517 | 547 | if __name__ == "__main__": |
|
0 commit comments