Пример #1
0
 def test_get_required_fields_with_defaults(self):
     test_org = Organisation(name='testorg', created_by='test')
     expected_org_defaults = {
         'services': {},
         'type': 'organisation',
         'state': 'pending',
         'star_rating': 0,
         'repositories': {}
     }
     returned_defaults = test_org.get_required_fields_with_defaults()
     assert expected_org_defaults == returned_defaults
Пример #2
0
 def test_get_required_fields_with_defaults(self):
     test_org = Organisation(name='testorg', created_by='test')
     expected_org_defaults = {
         'services': {},
         'type': 'organisation',
         'state': 'pending',
         'star_rating': 0,
         'repositories': {}
     }
     returned_defaults = test_org.get_required_fields_with_defaults()
     assert expected_org_defaults == returned_defaults
Пример #3
0
    def test_get_repository_no_service(self):
        organisation = Organisation(id="org1",
                                    type="organisation",
                                    name="organisation")

        with patch.object(Repository,
                          "get_parent",
                          return_value=make_future(organisation)):
            with patch.object(Service,
                              "get",
                              side_effect=couch.NotFound(
                                  HTTPError(404, 'Not Found'))) as get_service:
                repo = Repository(**self.REPOSITORY)
                user = User(**self.USER)
                result = yield repo.with_relations(user)

                get_service.assert_called_with('serv1')

                assert result == {
                    "organisation": {
                        "id": "org1",
                        "name": "organisation"
                    },
                    "name": "repository",
                    "created_by": "user1",
                    "state": "approved",
                    "service": {
                        "id": "serv1"
                    },
                    "id": "repo1"
                }
Пример #4
0
 def test_create_organisation(self):
     user = User()
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser')
         assert org.name == 'testorg'
         assert org.created_by == 'testuser'
Пример #5
0
 def test_create_organisation(self):
     user = User()
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser')
         assert org.name == 'testorg'
         assert org.created_by == 'testuser'
Пример #6
0
 def test_create_org_with_reference_links_empty_links(self):
     reference_links = {'links': {}}
     user = User()
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser',
                                         reference_links=reference_links)
         validate_schema(org)
         assert org.reference_links == {'links': {}}
Пример #7
0
class TestOrganisation():
    organisation = Organisation(id='org0')

    @pytest.mark.parametrize("role,expected", sys_role)
    def test_can_approve(self, role, expected):
        u = deepcopy(USER)
        u['role'] = role
        user = User(**u)
        func = partial(self.organisation.can_approve, user)
        result = IOLoop.instance().run_sync(func)
        assert result == expected
Пример #8
0
 def test_get_organisation_defaults(self):
     user = User(password='******', id='uid')
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser')
         assert org.repositories == {}
         assert org.services == {}
         assert org.state.name == 'pending'
         assert org.type == 'organisation'
         assert org.star_rating == 0
Пример #9
0
 def test_create_organisation_as_admin(self):
     user = User(password='******', role='administrator', id='uid')
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         with patch.object(Service, 'create', return_value=make_future(Service())):
             org = yield Organisation.create(user,
                                             name='testorg',
                                             created_by='testuser',
                                             id='testorgid')
             assert org.name == 'testorg'
             assert org.created_by == 'testuser'
             assert org.state.name == 'approved'
Пример #10
0
 def test_create_org_with_invalid_reference_url(self):
     user = User()
     reference_links = TEST_REFERENCE_LINKS['invalid_url']
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         with pytest.raises(MultipleInvalid) as exc:
             org = yield Organisation.create(user,
                                             name='testorg',
                                             created_by='testuser',
                                             reference_links=reference_links)
             validate_schema(org)
         assert exc.value.error_message == 'Missing URL scheme'
Пример #11
0
 def test_create_org_with_reference_links_with_extra_keys(self):
     user = User()
     reference_links = TEST_REFERENCE_LINKS['extra_keys']
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         with pytest.raises(MultipleInvalid) as exc:
             org = yield Organisation.create(user,
                                             name='testorg',
                                             created_by='testuser',
                                             reference_links=reference_links)
             validate_schema(org)
         assert exc.value.error_message == 'Key extra1 is not allowed'
Пример #12
0
 def test_create_org_with_reference_links_empty_links(self):
     reference_links = {'links': {}}
     user = User()
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser',
                                         reference_links=reference_links)
         validate_schema(org)
         assert org.reference_links == {'links': {}}
Пример #13
0
 def test_create_org_with_non_existent_redirect_id_type(self):
     user = User()
     reference_links = TEST_REFERENCE_LINKS['missing_links']
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         with pytest.raises(MultipleInvalid) as exc:
             org = yield Organisation.create(user,
                                             name='testorg',
                                             created_by='testuser',
                                             reference_links=reference_links)
             validate_schema(org)
         msg = 'Redirect ID type must point to one of the links\' ID types'
         assert exc.value.error_message == msg
Пример #14
0
 def test_create_org_with_redirect_id_type(self):
     reference_links = TEST_REFERENCE_LINKS['valid']
     user = User()
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser',
                                         reference_links=reference_links)
         validate_schema(org)
         assert org.reference_links['redirect_id_type'] == 'id1'
         assert org.reference_links['links']['id1'] == 'https://id1.com'
         assert org.reference_links['links']['id2'] == 'https://id2.com'
Пример #15
0
 def test_get_organisation_defaults(self):
     user = User(password='******', id='uid')
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser')
         assert org.repositories == {}
         assert org.services == {}
         assert org.state.name == 'pending'
         assert org.type == 'organisation'
         assert org.star_rating == 0
Пример #16
0
 def test_create_org_with_reference_links_with_extra_keys(self):
     user = User()
     reference_links = TEST_REFERENCE_LINKS['extra_keys']
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         with pytest.raises(MultipleInvalid) as exc:
             org = yield Organisation.create(
                 user,
                 name='testorg',
                 created_by='testuser',
                 reference_links=reference_links)
             validate_schema(org)
         assert exc.value.error_message == 'Key extra1 is not allowed'
Пример #17
0
 def test_update_redirect_id_type(self):
     orgs = {'testorgid': {'state': 'approved', 'role': 'administrator'}}
     user = User(password='******', id='testuserid', organisations=orgs)
     reference_links = TEST_REFERENCE_LINKS['valid']
     updated_reference_links = TEST_REFERENCE_LINKS['valid2']
     with patch.object(Organisation, '_save', return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         _id='testorgid',
                                         name='testorg',
                                         created_by='testuser',
                                         reference_links=reference_links)
         validate_schema(org)
         yield org.update(user, reference_links=updated_reference_links)
         validate_schema(org)
Пример #18
0
 def test_create_org_with_invalid_reference_url(self):
     user = User()
     reference_links = TEST_REFERENCE_LINKS['invalid_url']
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         with pytest.raises(MultipleInvalid) as exc:
             org = yield Organisation.create(
                 user,
                 name='testorg',
                 created_by='testuser',
                 reference_links=reference_links)
             validate_schema(org)
         assert exc.value.error_message == 'Missing URL scheme'
Пример #19
0
 def test_create_org_with_redirect_id_type(self):
     reference_links = TEST_REFERENCE_LINKS['valid']
     user = User()
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         name='testorg',
                                         created_by='testuser',
                                         reference_links=reference_links)
         validate_schema(org)
         assert org.reference_links['redirect_id_type'] == 'id1'
         assert org.reference_links['links']['id1'] == 'https://id1.com'
         assert org.reference_links['links']['id2'] == 'https://id2.com'
Пример #20
0
 def test_create_organisation_as_admin(self):
     user = User(password='******', role='administrator', id='uid')
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         with patch.object(Service,
                           'create',
                           return_value=make_future(Service())):
             org = yield Organisation.create(user,
                                             name='testorg',
                                             created_by='testuser',
                                             id='testorgid')
             assert org.name == 'testorg'
             assert org.created_by == 'testuser'
             assert org.state.name == 'approved'
Пример #21
0
 def test_create_org_with_non_existent_redirect_id_type(self):
     user = User()
     reference_links = TEST_REFERENCE_LINKS['missing_links']
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         with pytest.raises(MultipleInvalid) as exc:
             org = yield Organisation.create(
                 user,
                 name='testorg',
                 created_by='testuser',
                 reference_links=reference_links)
             validate_schema(org)
         msg = 'Redirect ID type must point to one of the links\' ID types'
         assert exc.value.error_message == msg
Пример #22
0
 def test_update_redirect_id_type(self):
     orgs = {'testorgid': {'state': 'approved', 'role': 'administrator'}}
     user = User(password='******', id='testuserid', organisations=orgs)
     reference_links = TEST_REFERENCE_LINKS['valid']
     updated_reference_links = TEST_REFERENCE_LINKS['valid2']
     with patch.object(Organisation,
                       '_save',
                       return_value=make_future(None)):
         org = yield Organisation.create(user,
                                         _id='testorgid',
                                         name='testorg',
                                         created_by='testuser',
                                         reference_links=reference_links)
         validate_schema(org)
         yield org.update(user, reference_links=updated_reference_links)
         validate_schema(org)
Пример #23
0
    def test_update_reference_links_with_extra_keys(self):
        orgs = {'testorgid': {'state': 'approved', 'role': 'administrator'}}
        user = User(password='******', id='testuserid', organisations=orgs)
        reference_links = TEST_REFERENCE_LINKS['valid']
        updated_reference_links = TEST_REFERENCE_LINKS['extra_keys']
        with patch.object(Organisation, '_save', return_value=make_future(None)):
            org = yield Organisation.create(user,
                                            _id='testorgid',
                                            name='testorg',
                                            created_by='testuser',
                                            reference_links=reference_links)
            validate_schema(org)

            with pytest.raises(MultipleInvalid) as exc:
                yield org.update(user, reference_links=updated_reference_links)
                validate_schema(org)
            assert exc.value.error_message == 'Key extra1 is not allowed'
Пример #24
0
    def test_update_non_existent_redirect_id_type(self):
        orgs = {'testorgid': {'state': 'approved', 'role': 'administrator'}}
        user = User(password='******', id='testuserid', organisations=orgs)
        reference_links = TEST_REFERENCE_LINKS['valid']
        updated_reference_links = TEST_REFERENCE_LINKS['missing_id_type_in_links']
        with patch.object(Organisation, '_save', return_value=make_future(None)):
            org = yield Organisation.create(user,
                                            _id='testorgid',
                                            name='testorg',
                                            created_by='testuser',
                                            reference_links=reference_links)
            validate_schema(org)

            with pytest.raises(MultipleInvalid) as exc:
                yield org.update(user, reference_links=updated_reference_links)
                validate_schema(org)
            msg = 'Redirect ID type must point to one of the links\' ID types'
            assert exc.value.error_message == msg
Пример #25
0
    def test_update_reference_links_with_extra_keys(self):
        orgs = {'testorgid': {'state': 'approved', 'role': 'administrator'}}
        user = User(password='******', id='testuserid', organisations=orgs)
        reference_links = TEST_REFERENCE_LINKS['valid']
        updated_reference_links = TEST_REFERENCE_LINKS['extra_keys']
        with patch.object(Organisation,
                          '_save',
                          return_value=make_future(None)):
            org = yield Organisation.create(user,
                                            _id='testorgid',
                                            name='testorg',
                                            created_by='testuser',
                                            reference_links=reference_links)
            validate_schema(org)

            with pytest.raises(MultipleInvalid) as exc:
                yield org.update(user, reference_links=updated_reference_links)
                validate_schema(org)
            assert exc.value.error_message == 'Key extra1 is not allowed'
Пример #26
0
    def test_update_non_existent_redirect_id_type(self):
        orgs = {'testorgid': {'state': 'approved', 'role': 'administrator'}}
        user = User(password='******', id='testuserid', organisations=orgs)
        reference_links = TEST_REFERENCE_LINKS['valid']
        updated_reference_links = TEST_REFERENCE_LINKS[
            'missing_id_type_in_links']
        with patch.object(Organisation,
                          '_save',
                          return_value=make_future(None)):
            org = yield Organisation.create(user,
                                            _id='testorgid',
                                            name='testorg',
                                            created_by='testuser',
                                            reference_links=reference_links)
            validate_schema(org)

            with pytest.raises(MultipleInvalid) as exc:
                yield org.update(user, reference_links=updated_reference_links)
                validate_schema(org)
            msg = 'Redirect ID type must point to one of the links\' ID types'
            assert exc.value.error_message == msg
Пример #27
0
    def test_get_repository(self):
        organisation = Organisation(id="org1",
                                    type="organisation",
                                    name="organisation")
        service = Service(id="serv1",
                          type="service",
                          name="service",
                          organisation_id="org2",
                          location="https://example.com")

        with patch.object(Repository,
                          "get_parent",
                          return_value=make_future(organisation)):
            with patch.object(
                    Service, "get",
                    return_value=make_future(service)) as get_service:
                repo = Repository(**self.REPOSITORY)
                user = User(**self.USER)
                result = yield repo.with_relations(user)

                get_service.assert_called_with('serv1')

                assert result == {
                    "organisation": {
                        "id": "org1",
                        "name": "organisation"
                    },
                    "name": "repository",
                    "created_by": "user1",
                    "state": "approved",
                    "service": {
                        "id": "serv1",
                        "name": "service",
                        "organisation_id": "org2",
                        "location": "https://example.com"
                    },
                    "id": "repo1"
                }
Пример #28
0
ADMINS = [
    '*****@*****.**',
    '*****@*****.**',
]
ADMIN = User(_id='admin1', name='admin user', email='*****@*****.**')
USER = User(
    first_name='test first',
    last_name='test last',
    verification_hash='testhash',
    password=User.hash_password('password0'),
    has_agreed_to_terms=True,
    email='*****@*****.**',
    _id='test id'
)
ORGANISATION = Organisation(
    _id='org1',
    name='test organisation'
)
REPOSITORY = Repository(
    id='repo1',
    organisation_id=ORGANISATION.id,
    name='test repo'
)


def setup_module():
    admins_patch = patch('accounts.models.email.views.admin_emails.values',
                         return_value=make_future(ADMINS))
    admins_patch.start()


def teardown_module():