diff --git a/app/models/external_person.rb b/app/models/external_person.rb index 2f4df6f..0e972b6 100644 --- a/app/models/external_person.rb +++ b/app/models/external_person.rb @@ -6,6 +6,8 @@ class ExternalPerson < ActiveRecord::Base validates_uniqueness_of :identifier, scope: :source + validates_presence_of :source, :email, :created_at + attr_accessible :source, :email, :created_at def self.get_or_create(webfinger) @@ -74,6 +76,24 @@ class ExternalPerson < ActiveRecord::Base Profile.none end + def tasks + Task.none + end + + def suggested_profiles + ProfileSuggestion.none + end + def suggested_people + ProfileSuggestion.none + end + def suggested_communities + ProfileSuggestion.none + end + + def add_friend(friend, group = nil) + false + end + def follows?(profile) false end @@ -96,6 +116,8 @@ class ExternalPerson < ActiveRecord::Base end def content_type + # This is not really going to be used anywhere that matters + # so we are hardcodding it here. 'image/png' end end diff --git a/test/unit/external_person_test.rb b/test/unit/external_person_test.rb new file mode 100644 index 0000000..fe6c127 --- /dev/null +++ b/test/unit/external_person_test.rb @@ -0,0 +1,104 @@ +# encoding: UTF-8 +require_relative "../test_helper" + +class PersonTest < ActiveSupport::TestCase + fixtures :environments + + def setup + @external_person = ExternalPerson.create!(identifier: 'johnlock', + name: 'John Lock', + source: 'anerenvironment.org', + email: 'john@lock.org', + created_at: Date.yesterday + ) + end + + should 'have no permissions' do + assert_equivalent [], @external_person.role_assignments + refute @external_person.has_permission?(:manage_friends) + end + + should 'have no suggested profiles' do + assert_equivalent [], @external_person.suggested_communities + assert_equivalent [], @external_person.suggested_people + assert_equivalent [], @external_person.suggested_profiles + end + + should 'have no friendships' do + refute @external_person.add_friend(fast_create(Person)) + assert_equivalent [], @external_person.friendships + end + + should 'not be a member of any communities' do + community = fast_create(Community) + refute community.add_member(@external_person) + assert_equivalent [], @external_person.memberships + end + + should 'not have any favorite enterprises' do + assert_equivalent [], @external_person.favorite_enterprises + end + + should 'be a person' do + assert @external_person.person? + end + + should 'not be a community, organization or enterprise' do + refute @external_person.community? + refute @external_person.enterprise? + refute @external_person.organization? + end + + should 'never be an admin for environments' do + refute @external_person.is_admin? + env = Environment.default + env.add_admin @external_person + refute @external_person.is_admin?(env) + assert_equivalent [], env.admins + end + + should 'redirect after login based on environment settings' do + assert_respond_to ExternalPerson.new, :preferred_login_redirection + environment = fast_create(Environment, :redirection_after_login => 'site_homepage') + profile = fast_create(ExternalPerson, :environment_id => environment.id) + assert_equal 'site_homepage', profile.preferred_login_redirection + end + + should 'have an avatar from its original environment' do + assert_match /http:\/\/#{@external_person.source}\/.*/, @external_person.avatar + end + + should 'generate a custom profile icon based on its avatar' do + end + + should 'have an url to its profile on its original environment' do + end + + should 'have a public profile url' do + end + + should 'have an admin url to its profile on its original environment' do + end + + should 'respond to lat and lng' do + assert_respond_to ExternalPerson.new, :lat + assert_respond_to ExternalPerson.new, :lng + assert_nil @external_person.lat + assert_nil @external_person.lng + end + + should 'never be a friend of another person' do + end + + should 'never send a friend request to another person' do + end + + should 'not follow another profile' do + end + + should 'have an image' do + end + + should 'profile image has public filename and mimetype' do + end +end diff --git a/test/unit/external_user_test.rb b/test/unit/external_user_test.rb new file mode 100644 index 0000000..3604637 --- /dev/null +++ b/test/unit/external_user_test.rb @@ -0,0 +1,10 @@ +# encoding: UTF-8 +require_relative "../test_helper" + +class ExternalUserTest < ActiveSupport::TestCase + # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead. + # Then, you can remove it from this and the functional test. + include AuthenticatedTestHelper + fixtures :users, :environments + +end -- libgit2 0.21.2