def METHOD_NAME(self, m):
    # test: if django already has a user with the same username as social_user,
    #       to avoid duplication, a new user should be created with a random string
    #       appended to its username
    # expect for only 1 user: anonymous user
    self.assertEqual(User.objects.all().count(), 1)
    # manually create a new user named self.social_username
    self.user = User.objects.create_user(
        username=self.social_username,
        email=self.social_email,
        password="top_secret",
    )
    # expect for 2 users: anonymous and self.social_username
    self.assertEqual(User.objects.all().count(), 2)
    username_new, social, backend = self.run_oauth(m)
    # expect for 3 users
    self.assertEqual(User.objects.all().count(), 3)
    # test username
    self.assertEqual(User.objects.filter(username=username_new).count(), 1)
    self.assertTrue(len(username_new) > len(self.social_username))
    self.assertEqual(
        username_new[0 : len(self.social_username)], self.social_username
    )
    # check extra_data
    extra_data_dict = social.extra_data
    self.assertEqual(extra_data_dict["access_token"], self.access_token)
    self.assertEqual(extra_data_dict["refresh_token"], self.refresh_token)
    self.assertEqual(extra_data_dict["expires_in"], self.expires_in)
    self.assertEqual(extra_data_dict["token_type"], self.token_type)
    self.assertEqual(extra_data_dict["scope"], self.scope)