22from osf .exceptions import ValidationValueError
33
44from types import SimpleNamespace
5- from osf .models import validators , OSFUser
5+ from osf .models import validators , OSFUser , NotableDomain , SpamStatus
66from osf .models .validators import has_domain_in_user_fields_for_names
77from osf_tests .factories import SubjectFactory
88
@@ -160,7 +160,9 @@ def test_validate_expand_subject_hierarchy():
160160)
161161def test_has_domain_in_user_fields (user_data ):
162162 user = mock_user (user_data )
163- assert has_domain_in_user_fields_for_names (user ) is False
163+ result , message = has_domain_in_user_fields_for_names (user )
164+ assert result is False
165+ assert message == SpamStatus .UNKNOWN
164166
165167
166168@pytest .mark .parametrize (
@@ -186,8 +188,55 @@ def test_has_domain_in_user_fields(user_data):
186188 'middle_names' : 'www.google.com' ,
187189 'suffix' : 'M.Sc.' ,
188190 },
191+ {
192+ 'fullname' : 'Judith Hateren' ,
193+ 'given_name' : 'Judith' ,
194+ 'family_name' : 'Hateren' ,
195+ 'middle_names' : 'google.com' ,
196+ 'suffix' : 'M.Sc.' ,
197+ },
189198 ]
190199)
191200def test_has_domain_in_user_fields_fail (user_data ):
192201 user = mock_user (user_data )
193- assert has_domain_in_user_fields_for_names (user ) is True
202+ result , message = has_domain_in_user_fields_for_names (user )
203+ assert result is True
204+ assert message == SpamStatus .SPAM
205+
206+ @pytest .mark .parametrize (
207+ 'user_data' ,
208+ [
209+ {
210+ 'fullname' : 'Judith Sarah' ,
211+ 'given_name' : 'Judith' ,
212+ 'family_name' : 'Preuss' ,
213+ 'middle_names' : 'osf.io' ,
214+ 'suffix' : 'M.Sc.' ,
215+ },
216+ ]
217+ )
218+ def test_has_notable_domain_in_user_fields (user_data ):
219+ NotableDomain .objects .get_or_create (domain = 'osf.io' , note = NotableDomain .Note .IGNORED )
220+ user = mock_user (user_data )
221+ result , message = has_domain_in_user_fields_for_names (user )
222+ assert result is False
223+ assert message == SpamStatus .HAM
224+
225+ @pytest .mark .parametrize (
226+ 'user_data' ,
227+ [
228+ {
229+ 'fullname' : 'Judith Sarah' ,
230+ 'given_name' : 'Judith' ,
231+ 'family_name' : 'Preuss' ,
232+ 'middle_names' : 'osf.io' ,
233+ 'suffix' : 'M.Sc.' ,
234+ },
235+ ]
236+ )
237+ def test_has_no_notable_domain_in_user_fields (user_data ):
238+ NotableDomain .objects .get_or_create (domain = 'google.com' , note = NotableDomain .Note .IGNORED )
239+ user = mock_user (user_data )
240+ result , message = has_domain_in_user_fields_for_names (user )
241+ assert result is True
242+ assert message == SpamStatus .SPAM
0 commit comments