Skip to content

Commit 7ec35cc

Browse files
author
Paul Philion
committed
Fixing permission problem: adding new users to users group. Added test case for empty last name. All tests pass.
1 parent 5006933 commit 7ec35cc

File tree

4 files changed

+39
-3
lines changed

4 files changed

+39
-3
lines changed

data/empty-name.eml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
MIME-Version: 1.0
2+
Date: Wed, 1 Nov 2023 14:28:46 -0700
3+
References: <CANgxLuvVTiJi3BGF4vN+MXN154pVJ7kYvwDOTJuTC_KYfe0teA@mail.gmail.com>
4+
In-Reply-To: <CANgxLuvVTiJi3BGF4vN+MXN154pVJ7kYvwDOTJuTC_KYfe0teA@mail.gmail.com>
5+
Message-ID: <CANgxLutVdUkfeyOPSkO8uuDhUWm+R+twkDn=BSYx-T8GQnk9sA@mail.gmail.com>
6+
Subject: Fwd: Another test ticket
7+
From: Yoyodyne <info@example.com>
8+
To: Babo <babo@example.org>
9+
Content-Type: multipart/alternative; boundary="000000000000d5d3b506091df47e"
10+
11+
--000000000000d5d3b506091df47e
12+
Content-Type: text/plain; charset="UTF-8"
13+
Content-Transfer-Encoding: quoted-printable
14+
15+
another test

redmine/users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ def create(self, email:str, first:str, last:str, user_login:str|None) -> User:
220220
# check status
221221
if r:
222222
user = User(**r['user'])
223-
223+
self.cache.cache_user(user)
224224
log.info(f"created user: {user.id} {user.login} {user.mail}")
225225

226226
return user

tests/test_imap.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def test_email_address_parsing2(self):
8585
addr = 'philion <philion@gmail.com>'
8686
first, last, email = self.imap.parse_email_address(addr)
8787
self.assertEqual("philion", first)
88-
self.assertEqual("", last)
88+
self.assertEqual("-", last)
8989
self.assertEqual("philion@gmail.com", email)
9090

9191
addr2 = 'Paul Philion <philion@acmerocket.com>'
@@ -325,3 +325,22 @@ def test_add_note(self):
325325
last_note = ticket.get_notes()[-1]
326326
self.assertEqual(last_note.user.id, user.id)
327327
self.assertEqual(last_note.notes, note)
328+
329+
330+
def test_empty_name(self):
331+
try:
332+
test_email = None
333+
user = None
334+
with open("data/empty-name.eml", 'rb') as file:
335+
message = self.imap.parse_message(file.read())
336+
log.debug(f"loaded message: {message}")
337+
self.imap.handle_message("test", message)
338+
_, _, test_email = self.imap.parse_email_address(message.from_address)
339+
340+
user = self.redmine.user_mgr.find(test_email)
341+
self.assertIsNotNone(user, f"Couldn't find user for {test_email}")
342+
self.assertEqual(test_email, user.mail)
343+
finally:
344+
if user:
345+
# remove the user after the test
346+
self.redmine.user_mgr.remove(user)

threader/imap.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def parse_email_address(self, email_addr):
6363
first, last = name.rsplit(None, 1)
6464
else:
6565
first = name
66-
last = ""
66+
last = "-" # empty string breaks redmine
6767
addr = m.group(2)
6868

6969
return first, last, addr
@@ -202,6 +202,8 @@ def handle_message(self, msg_id:str, message:Message):
202202
# create new user
203203
user = self.redmine.user_mgr.create(addr, first, last, user_login=None)
204204
log.info(f"Unknow user: {addr}, created new account.")
205+
# make sure user is in users group
206+
self.redmine.user_mgr.join_team(user, "users")
205207

206208
# upload any attachments
207209
self.redmine.ticket_mgr.upload_attachments(user, message.attachments)

0 commit comments

Comments
 (0)