60
61
"last_name": "User",
61
62
"email": "foo@example.com"})
64
def make_response_ax(self, schema="http://axschema.org/",
65
fullname="Some User", nickname="someuser", email="foo@example.com",
66
first=None, last=None):
67
endpoint = OpenIDServiceEndpoint()
68
message = Message(OPENID2_NS)
70
("nickname", schema + "namePerson/friendly", nickname),
71
("fullname", schema + "namePerson", fullname),
72
("email", schema + "contact/email", email),
76
("first", "http://axschema.org/namePerson/first", first))
79
("last", "http://axschema.org/namePerson/last", last))
81
message.setArg(AX_NS, "mode", "fetch_response")
82
for (alias, uri, value) in attributes:
83
message.setArg(AX_NS, "type.%s" % alias, uri)
84
message.setArg(AX_NS, "value.%s" % alias, value)
85
return SuccessResponse(
86
endpoint, message, signed_fields=message.toPostArgs().keys())
63
88
def test_extract_user_details_ax(self):
64
endpoint = OpenIDServiceEndpoint()
65
message = Message(OPENID2_NS)
67
("nickname", "http://axschema.org/namePerson/friendly", "someuser"),
68
("fullname", "http://axschema.org/namePerson", "Some User"),
69
("email", "http://axschema.org/contact/email", "foo@example.com"),
71
message.setArg(AX_NS, "mode", "fetch_response")
72
for (alias, uri, value) in attributes:
73
message.setArg(AX_NS, "type.%s" % alias, uri)
74
message.setArg(AX_NS, "value.%s" % alias, value)
75
response = SuccessResponse(
76
endpoint, message, signed_fields=message.toPostArgs().keys())
89
response = self.make_response_ax(fullname="Some User",
90
nickname="someuser", email="foo@example.com")
78
92
data = self.backend._extract_user_details(response)
79
94
self.assertEqual(data, {"nickname": "someuser",
80
95
"first_name": "Some",
81
96
"last_name": "User",
82
97
"email": "foo@example.com"})
84
99
def test_extract_user_details_ax_split_name(self):
85
endpoint = OpenIDServiceEndpoint()
86
message = Message(OPENID2_NS)
88
("nickname", "http://axschema.org/namePerson/friendly", "someuser"),
89
# Include this key too to show that the split data takes
91
("fullname", "http://axschema.org/namePerson", "Bad Data"),
92
("first", "http://axschema.org/namePerson/first", "Some"),
93
("last", "http://axschema.org/namePerson/last", "User"),
94
("email", "http://axschema.org/contact/email", "foo@example.com"),
96
message.setArg(AX_NS, "mode", "fetch_response")
97
for (alias, uri, value) in attributes:
98
message.setArg(AX_NS, "type.%s" % alias, uri)
99
message.setArg(AX_NS, "value.%s" % alias, value)
100
response = SuccessResponse(
101
endpoint, message, signed_fields=message.toPostArgs().keys())
100
# Include fullname too to show that the split data takes
102
response = self.make_response_ax(
103
fullname="Bad Data", first="Some", last="User")
103
105
data = self.backend._extract_user_details(response)
104
107
self.assertEqual(data, {"nickname": "someuser",
105
108
"first_name": "Some",
106
109
"last_name": "User",
107
110
"email": "foo@example.com"})
109
112
def test_extract_user_details_ax_broken_myopenid(self):
110
endpoint = OpenIDServiceEndpoint()
111
message = Message(OPENID2_NS)
113
("nickname", "http://schema.openid.net/namePerson/friendly",
115
("fullname", "http://schema.openid.net/namePerson", "Some User"),
116
("email", "http://schema.openid.net/contact/email",
119
message.setArg(AX_NS, "mode", "fetch_response")
120
for (alias, uri, value) in attributes:
121
message.setArg(AX_NS, "type.%s" % alias, uri)
122
message.setArg(AX_NS, "value.%s" % alias, value)
123
response = SuccessResponse(
124
endpoint, message, signed_fields=message.toPostArgs().keys())
113
response = self.make_response_ax(
114
schema="http://schema.openid.net/", fullname="Some User",
115
nickname="someuser", email="foo@example.com")
126
117
data = self.backend._extract_user_details(response)
127
119
self.assertEqual(data, {"nickname": "someuser",
128
120
"first_name": "Some",
129
121
"last_name": "User",
130
122
"email": "foo@example.com"})
124
def test_update_user_details_long_names(self):
125
response = self.make_response_ax()
126
user = User.objects.create_user('someuser', 'someuser@example.com',
128
data = dict(first_name=u"Some56789012345678901234567890123",
129
last_name=u"User56789012345678901234567890123",
130
email=u"someotheruser@example.com")
132
self.backend.update_user_details(user, data, response)
134
self.assertEqual("Some56789012345678901234567890", user.first_name)
135
self.assertEqual("User56789012345678901234567890", user.last_name)
137
def test_extract_user_details_name_with_trailing_space(self):
138
response = self.make_response_ax(fullname="SomeUser ")
140
data = self.backend._extract_user_details(response)
142
self.assertEqual("", data['first_name'])
143
self.assertEqual("SomeUser", data['last_name'])
145
def test_extract_user_details_name_with_thin_space(self):
146
response = self.make_response_ax(fullname=u"Some\u2009User")
148
data = self.backend._extract_user_details(response)
150
self.assertEqual("Some", data['first_name'])
151
self.assertEqual("User", data['last_name'])
133
155
return unittest.TestLoader().loadTestsFromName(__name__)