示例#1
0
    def test_open_group_asdict_with_links_svc(self, factories, links_svc):
        group = factories.OpenGroup(name='My Group', pubid='mygroup')
        presenter = GroupJSONPresenter(group, links_svc=links_svc)

        presenter.asdict()

        links_svc.get_all.assert_called_once_with(group)
示例#2
0
    def test_it_does_not_contain_deprecated_url(self, factories, GroupContext,
                                                links_svc):
        links_svc.get_all.return_value = {'html': 'foobar'}
        group = factories.Group()
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert 'url' not in presenter.asdict()
示例#3
0
    def test_it_contains_deprecated_url_if_html_link_present(
            self, factories, GroupResource_, links_svc):  # noqa: N803
        links_svc.get_all.return_value = {'html': 'foobar'}
        group = factories.Group()
        group_resource = GroupResource_(group)
        presenter = GroupJSONPresenter(group_resource)

        assert presenter.asdict()['url'] == 'foobar'
示例#4
0
    def test_it_does_not_expand_by_default(self, factories,
                                           GroupContext):  # noqa: N803
        group = factories.OpenGroup(name='My Group', pubid='mygroup')
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict()

        assert model['organization'] == group_context.organization.id
示例#5
0
    def test_it_ignores_unrecognized_expands(self, factories,
                                             GroupContext):  # noqa: N803
        group = factories.OpenGroup(name='My Group', pubid='mygroup')
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=['foobars', 'dingdong'])

        assert model['organization'] == group_context.organization.id
示例#6
0
    def test_expanded_scopes_uri_patterns_empty_if_no_scopes(
            self, factories, GroupContext):
        group = factories.OpenGroup()
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["scopes"])

        assert model["scopes"]["uri_patterns"] == []
示例#7
0
    def test_private_group_asdict_with_links_svc(self, factories, links_svc):
        group = factories.Group(name='My Group', pubid='mygroup')
        presenter = GroupJSONPresenter(group, links_svc=links_svc)
        links_svc.get_all.return_value = {'foo': 'bar'}

        model = presenter.asdict()

        links_svc.get_all.assert_called_once_with(group)
        assert model['urls'] == links_svc.get_all.return_value
示例#8
0
    def test_open_group_asdict_with_urls(self, factories):
        group = factories.OpenGroup(name='My Group', pubid='mygroup')
        route_url = mock.Mock(return_value='/group/a')
        presenter = GroupJSONPresenter(group, route_url=route_url)

        model = presenter.asdict()

        assert model['urls']['group'] == '/group/a'
        assert model['url'] == '/group/a'
示例#9
0
    def test_it_does_not_contain_deprecated_url(
        self, factories, GroupContext, links_svc
    ):
        links_svc.get_all.return_value = {"html": "foobar"}
        group = factories.Group()
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert "url" not in presenter.asdict()
示例#10
0
    def test_it_ignores_unrecognized_expands(self, factories, GroupContext):
        group = factories.OpenGroup(
            name="My Group", pubid="mygroup", organization=factories.Organization()
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["foobars", "dingdong"])

        assert model["organization"] == group_context.organization.id
示例#11
0
    def test_expanded_scopes_enforced_false_if_no_scopes(self, factories, GroupContext):
        group = factories.OpenGroup(enforce_scope=True)
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["scopes"])

        # Even though the model is configured to enforce scope, de facto
        # it can't if there are no scopes
        assert model["scopes"]["enforced"] is False
示例#12
0
    def test_expanded_scopes_uri_patterns_empty_if_no_scopes(
        self, factories, GroupContext
    ):
        group = factories.OpenGroup()
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["scopes"])

        assert model["scopes"]["uri_patterns"] == []
示例#13
0
    def test_it_does_not_expand_by_default(self, factories, GroupContext):
        group = factories.OpenGroup(name="My Group",
                                    pubid="mygroup",
                                    organization=factories.Organization())
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict()

        assert model["organization"] == group_context.organization.id
示例#14
0
    def test_it_ignores_unrecognized_expands(self, factories, GroupContext):
        group = factories.OpenGroup(
            name="My Group", pubid="mygroup", organization=factories.Organization()
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["foobars", "dingdong"])

        assert model["organization"] == group_context.organization.id
示例#15
0
    def test_expanded_scopes_enforced_false_if_no_scopes(self, factories, GroupContext):
        group = factories.OpenGroup(enforce_scope=True)
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["scopes"])

        # Even though the model is configured to enforce scope, de facto
        # it can't if there are no scopes
        assert model["scopes"]["enforced"] is False
示例#16
0
    def test_it_sets_organization_None_if_group_has_no_organization(
            self, factories, GroupContext):
        group = factories.OpenGroup(name='My Group', pubid='mygroup')
        group.organization = None
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict()

        assert model['organization'] is None
示例#17
0
    def test_it_expands_organizations(self, factories, GroupContext,
                                      OrganizationJSONPresenter):  # noqa: N803
        group = factories.OpenGroup(name='My Group', pubid='mygroup')
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=['organization'])

        assert model['organization'] == OrganizationJSONPresenter(
            group_context.organization).asdict.return_value
示例#18
0
    def test_expanded_organizations_None_if_missing(
        self, factories, GroupContext, OrganizationJSONPresenter
    ):
        group = factories.OpenGroup(name="My Group", pubid="mygroup")
        group.organization = None
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["organization"])

        assert model["organization"] is None
示例#19
0
    def test_it_does_not_expand_by_default(self, factories, GroupContext):
        group = factories.OpenGroup(
            name="My Group", pubid="mygroup", organization=factories.Organization()
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict()

        assert model["organization"] == group_context.organization.id
        assert "scopes" not in model
示例#20
0
    def test_expanded_organizations_None_if_missing(
        self, factories, GroupContext, OrganizationJSONPresenter
    ):
        group = factories.OpenGroup(name="My Group", pubid="mygroup")
        group.organization = None
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["organization"])

        assert model["organization"] is None
示例#21
0
    def test_it_sets_organization_None_if_group_has_no_organization(
        self, factories, GroupContext
    ):
        group = factories.OpenGroup(name="My Group", pubid="mygroup")
        group.organization = None
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict()

        assert model["organization"] is None
示例#22
0
    def test_it_expands_organizations(self, factories, GroupContext,
                                      OrganizationJSONPresenter):
        group = factories.OpenGroup(name="My Group",
                                    pubid="mygroup",
                                    organization=factories.Organization())
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["organization"])

        assert (model["organization"] == OrganizationJSONPresenter(
            group_context.organization).asdict.return_value)
示例#23
0
    def test_private_group_asdict_no_links_svc(self, factories):
        group = factories.Group(name='My Group', pubid='mygroup')

        presenter = GroupJSONPresenter(group)

        assert presenter.asdict() == {
            'name': 'My Group',
            'id': 'mygroup',
            'type': 'private',
            'public': False,
            'scoped': False,
            'urls': {}
        }
示例#24
0
    def test_open_group_asdict_no_urls(self, factories):
        group = factories.OpenGroup(name='My Group', pubid='mygroup')

        presenter = GroupJSONPresenter(group)

        assert presenter.asdict() == {
            'name': 'My Group',
            'id': 'mygroup',
            'type': 'open',
            'public': True,
            'scoped': False,
            'urls': {}
        }
示例#25
0
    def test_it_expands_organizations(
        self, factories, GroupContext, OrganizationJSONPresenter
    ):
        group = factories.OpenGroup(
            name="My Group", pubid="mygroup", organization=factories.Organization()
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["organization"])

        assert (
            model["organization"]
            == OrganizationJSONPresenter(group_context.organization).asdict.return_value
        )
示例#26
0
    def test_open_group_asdict(self, factories, GroupContext,
                               links_svc):  # noqa: N803
        group = factories.OpenGroup(name='My Group', pubid='mygroup')
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert presenter.asdict() == {
            'name': 'My Group',
            'id': group_context.id,
            'organization': group_context.organization.id,
            'type': 'open',
            'public': True,
            'scoped': False,
            'links': links_svc.get_all.return_value,
        }
示例#27
0
    def test_open_scoped_group_asdict(self, factories):
        group = factories.OpenGroup(
            name='My Group',
            pubid='groupy',
            scopes=[factories.GroupScope(origin='http://foo.com')])

        presenter = GroupJSONPresenter(group)

        assert presenter.asdict() == {
            'name': 'My Group',
            'id': 'groupy',
            'type': 'open',
            'public': True,
            'scoped': True,
            'urls': {}
        }
示例#28
0
    def test_private_group_asdict(self, factories, GroupContext, links_svc):
        group = factories.Group(name='My Group',
                                pubid='mygroup',
                                organization=factories.Organization())
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert presenter.asdict() == {
            'name': 'My Group',
            'id': 'mygroup',
            'organization': group_context.organization.id,
            'type': 'private',
            'public': False,
            'scoped': False,
            'links': links_svc.get_all.return_value,
        }
示例#29
0
    def test_private_group_asdict(self, factories, GroupResource_,
                                  links_svc):  # noqa: N803
        group = factories.Group(name='My Group', pubid='mygroup')
        group_resource = GroupResource_(group)
        presenter = GroupJSONPresenter(group_resource)

        assert presenter.asdict() == {
            'name': 'My Group',
            'id': 'mygroup',
            'organization': group_resource.organization.id,
            'type': 'private',
            'public': False,
            'scoped': False,
            'urls': links_svc.get_all.return_value,
            'links': links_svc.get_all.return_value,
        }
示例#30
0
    def test_it_expands_scopes(self, factories, GroupContext):
        group = factories.OpenGroup(
            enforce_scope=False,
            scopes=[
                factories.GroupScope(origin="http://foo.com"),
                factories.GroupScope(origin="https://foo.com"),
            ],
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["scopes"])

        assert "scopes" in model
        assert model["scopes"]["enforced"] is False
        assert set(model["scopes"]["uri_patterns"]) == set(
            ["http://foo.com*", "https://foo.com*"])
示例#31
0
    def test_open_group_asdict(self, factories, GroupContext, links_svc):
        group = factories.OpenGroup(
            name="My Group", pubid="mygroup", organization=factories.Organization()
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert presenter.asdict() == {
            "name": "My Group",
            "id": group_context.id,
            "groupid": None,
            "organization": group_context.organization.id,
            "type": "open",
            "public": True,
            "scoped": False,
            "links": links_svc.get_all.return_value,
        }
示例#32
0
    def test_open_group_asdict(self, factories, GroupContext, links_svc):
        group = factories.OpenGroup(
            name="My Group", pubid="mygroup", organization=factories.Organization()
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert presenter.asdict() == {
            "name": "My Group",
            "id": group_context.id,
            "groupid": None,
            "organization": group_context.organization.id,
            "type": "open",
            "public": True,
            "scoped": False,
            "links": links_svc.get_all.return_value,
        }
示例#33
0
    def test_open_scoped_group_asdict(self, factories, GroupContext,
                                      links_svc):  # noqa: N803
        group = factories.OpenGroup(
            name='My Group',
            pubid='groupy',
            scopes=[factories.GroupScope(origin='http://foo.com')])
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert presenter.asdict() == {
            'name': 'My Group',
            'id': 'groupy',
            'type': 'open',
            'organization': group_context.organization.id,
            'public': True,
            'scoped': True,
            'links': links_svc.get_all.return_value,
        }
示例#34
0
    def test_it_expands_scopes(self, factories, GroupContext):
        group = factories.OpenGroup(
            enforce_scope=False,
            scopes=[
                factories.GroupScope(scope="http://foo.com/bar"),
                factories.GroupScope(scope="https://foo.com/baz"),
            ],
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        model = presenter.asdict(expand=["scopes"])

        assert "scopes" in model
        assert model["scopes"]["enforced"] is False
        assert set(model["scopes"]["uri_patterns"]) == set(
            ["http://foo.com/bar*", "https://foo.com/baz*"]
        )
示例#35
0
    def test_open_scoped_group_asdict(self, factories, GroupContext, links_svc):
        group = factories.OpenGroup(
            name="My Group",
            pubid="groupy",
            scopes=[factories.GroupScope(scope="http://foo.com")],
            organization=factories.Organization(),
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert presenter.asdict() == {
            "name": "My Group",
            "id": "groupy",
            "groupid": None,
            "type": "open",
            "organization": group_context.organization.id,
            "public": True,
            "scoped": True,
            "links": links_svc.get_all.return_value,
        }
示例#36
0
    def test_open_scoped_group_asdict(self, factories, GroupContext, links_svc):
        group = factories.OpenGroup(
            name="My Group",
            pubid="groupy",
            scopes=[factories.GroupScope(scope="http://foo.com")],
            organization=factories.Organization(),
        )
        group_context = GroupContext(group)
        presenter = GroupJSONPresenter(group_context)

        assert presenter.asdict() == {
            "name": "My Group",
            "id": "groupy",
            "groupid": None,
            "type": "open",
            "organization": group_context.organization.id,
            "public": True,
            "scoped": True,
            "links": links_svc.get_all.return_value,
        }
示例#37
0
    def test_it_returns_groupid_if_set(self, factories, GroupContext, links_svc):
        group = factories.Group(authority_provided_id="abc123")
        presenter = GroupJSONPresenter(GroupContext(group))

        assert presenter.asdict()["groupid"] == "group:[email protected]"
示例#38
0
    def test_it_returns_groupid_if_set(self, factories, GroupContext, links_svc):
        group = factories.Group(authority_provided_id="abc123")
        presenter = GroupJSONPresenter(GroupContext(group))

        assert presenter.asdict()["groupid"] == "group:[email protected]"
示例#39
0
 def present(group, expand=None):
     presenter = GroupJSONPresenter(group, pyramid_request)
     return presenter.asdict(expand=expand)