Skip to content

Commit

Permalink
labhub.py: Add error message when nick is empty
Browse files Browse the repository at this point in the history
All of the backends do not have `nick` attribute.
Hence an error will be shown whenever nick is empty.

Closes #632
  • Loading branch information
abhishalya committed Nov 6, 2018
1 parent b9d569d commit 4c61393
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 5 deletions.
12 changes: 12 additions & 0 deletions plugins/labhub.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ def invite_cmd(self, msg, match):
"""
invitee = match.group(1)
inviter = msg.frm.nick
if not inviter:
yield 'ERROR: The above command cannot be operated without nick.'
return

team = 'newcomers' if match.group(2) is None else match.group(2)
team = team.lower()
Expand Down Expand Up @@ -196,6 +199,9 @@ def callback_message(self, msg):
def create_issue_cmd(self, msg, match):
"""Create issues on GitHub and GitLab repositories.""" # Ignore QuotesBear, LineLengthBear, PyCodeStyleBear
user = msg.frm.nick
if not user:
yield 'ERROR: The above command cannot be operated without nick.'
return
repo_name = match.group(1)
iss_title = match.group(2)
iss_description = match.group(3) if match.group(3) is not None else ''
Expand Down Expand Up @@ -234,6 +240,9 @@ def unassign_cmd(self, msg, match):
issue_number = match.group(4)

user = msg.frm.nick
if not user:
yield 'ERROR: The above command cannot be operated without nick.'
return

try:
assert org == self.GH_ORG_NAME or org == self.GL_ORG_NAME
Expand Down Expand Up @@ -317,6 +326,9 @@ def assign_cmd(self, msg, match):
iss_number = match.group(4)

user = msg.frm.nick
if not user:
yield 'ERROR: The above command cannot be operated without nick.'
return

try:
assert org == self.GH_ORG_NAME or org == self.GL_ORG_NAME
Expand Down
33 changes: 28 additions & 5 deletions tests/labhub_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def setUp(self):
'GH_ORG_NAME': 'coala',
'GL_ORG_NAME': 'coala',
}
self.bot.sender._nick = 'batman'
self.labhub = self.load_plugin('LabHub', self.global_mocks, configs)

def test_invite_cmd(self):
Expand Down Expand Up @@ -102,6 +103,11 @@ def test_invite_cmd(self):
testbot.assertCommand('!invite meetto newcomers',
'Command "invite" / "invite meetto" not found.')

self.bot.sender._nick = None
testbot.assertCommand(
'!invite meet to newcomers',
'ERROR: The above command cannot be operated without nick.')

# not a member of org
mock_team_newcomers.is_member.return_value = False
mock_team_developers.is_member.return_value = False
Expand Down Expand Up @@ -156,7 +162,7 @@ def test_create_issue_cmd(self):
textwrap.dedent('''\
first line of body
second line of body
Opened by @None at [text]()''')
Opened by @batman at [text]()''')
)

testbot_public.assertCommand(
Expand All @@ -171,13 +177,18 @@ def test_create_issue_cmd(self):
'another title',
textwrap.dedent('''\
body
Opened by @None at [text]()''')
Opened by @batman at [text]()''')
)

testbot_public.assertCommand(
'!new issue coala title',
'repository that does not exist')

self.bot.sender._nick = None
testbot_public.assertCommand(
'!new issue coala title',
'ERROR: The above command cannot be operated without nick.')

# not a member of org
self.mock_team.is_member.return_value = False
testbot_public.assertCommand(
Expand All @@ -201,7 +212,7 @@ def test_unassign_cmd(self):
mock_iss = create_autospec(IGitt.GitHub.GitHubIssue)
self.mock_repo.get_issue.return_value = mock_iss
mock_iss.assignees = PropertyMock()
mock_iss.assignees = (None, )
mock_iss.assignees = ('batman', )
mock_iss.unassign = MagicMock()
self.mock_team.is_member.return_value = True
testbot = self
Expand All @@ -211,7 +222,7 @@ def test_unassign_cmd(self):
'you are unassigned now',
timeout=10000)
self.mock_repo.get_issue.assert_called_with(999)
mock_iss.unassign.assert_called_once_with(None)
mock_iss.unassign.assert_called_once_with('batman')

mock_iss.assignees = ('meetmangukiya', )
testbot.assertCommand(
Expand All @@ -226,6 +237,11 @@ def test_unassign_cmd(self):
'!unassign https://gitlab.com/example/test/issues/999',
'Repository not owned by our org.')

self.bot.sender._nick = None
testbot.assertCommand(
'!unassign https://gitlab.com/example/test/issues/999',
'ERROR: The above command cannot be operated without nick.')

# not a member of org
self.mock_team.is_member.return_value = False
testbot.assertCommand(
Expand Down Expand Up @@ -253,6 +269,13 @@ def test_assign_cmd(self):
testbot = self

cmd = '!assign https://github.com/{}/{}/issues/{}'

self.bot.sender._nick = None
testbot.assertCommand(
cmd.format('coa', 'a', '23'),
'ERROR: The above command cannot be operated without nick.')
self.bot.sender._nick = 'batman'

# no assignee, not newcomer
mock_issue.assignees = tuple()
self.mock_team.is_member.return_value = False
Expand Down Expand Up @@ -335,7 +358,7 @@ def test_assign_cmd(self):
'already assigned to someone')

# has assignee same as user
mock_issue.assignees = (None, )
mock_issue.assignees = ('batman', )
testbot.assertCommand(cmd.format('coala', 'a', '23'),
'already assigned to you')

Expand Down

0 comments on commit 4c61393

Please sign in to comment.