Beispiel #1
0
    def test_read_renders_form_if_group_has_no_creator(self, pyramid_request, group):
        group.creator = None
        view = GroupEditViews(group, pyramid_request)

        ctx = view.read()

        assert ctx["form"] == self._expected_form(group)
Beispiel #2
0
    def test_read_renders_form_if_group_has_no_creator(self, pyramid_request, group):
        group.creator = None
        view = GroupEditViews(group, pyramid_request)

        ctx = view.read()

        assert ctx["form"] == self._expected_form(group)
Beispiel #3
0
    def test_delete_deletes_group(self, group, delete_group_service,
                                  pyramid_request, routes):
        view = GroupEditViews(GroupContext(group), pyramid_request)

        view.delete()

        delete_group_service.delete.assert_called_once_with(group)
Beispiel #4
0
    def test_read_renders_form_if_group_has_no_creator(self, pyramid_request,
                                                       group):
        group.creator = None
        view = GroupEditViews(GroupContext(group), pyramid_request)

        response = view.read()

        assert response["form"] == self._expected_form(group)
Beispiel #5
0
    def test_delete_deletes_group(self, group, delete_group_svc,
                                  pyramid_request, routes):

        view = GroupEditViews(group, pyramid_request)

        view.delete()

        delete_group_svc.delete.assert_called_once_with(group)
Beispiel #6
0
    def test_delete_deletes_group(
        self, group, delete_group_svc, pyramid_request, routes
    ):

        view = GroupEditViews(group, pyramid_request)

        view.delete()

        delete_group_svc.delete.assert_called_once_with(group)
Beispiel #7
0
    def test_update_proxies_to_update_service_on_success(
        self,
        factories,
        pyramid_request,
        user_service,
        list_organizations_service,
        handle_form_submission,
        group_update_service,
        group,
        GroupScope,
    ):

        fetched_user = factories.User()
        user_service.fetch.return_value = fetched_user
        updated_org = factories.Organization()

        list_organizations_service.organizations.return_value.append(
            updated_org)

        def call_on_success(  # pylint:disable=unused-argument
                request, form, on_success, on_failure):
            return on_success({
                "creator":
                fetched_user.username,
                "description":
                "New description",
                "group_type":
                "open",
                "name":
                "Updated group",
                "organization":
                updated_org.pubid,
                "scopes":
                ["http://somewhereelse.com", "http://www.gladiolus.org"],
                "members": [],
                "enforce_scope":
                False,
            })

        handle_form_submission.side_effect = call_on_success
        view = GroupEditViews(GroupContext(group), pyramid_request)

        response = view.update()

        group_update_service.update.assert_called_once_with(
            group,
            organization=updated_org,
            creator=fetched_user,
            description="New description",
            name="Updated group",
            scopes=[
                GroupScope(scope=scope) for scope in
                ["http://somewhereelse.com", "http://www.gladiolus.org"]
            ],
            enforce_scope=False,
        )
        assert response["form"] == self._expected_form(group)
Beispiel #8
0
    def test_update_proxies_to_update_svc_on_success(
        self,
        factories,
        pyramid_request,
        user_svc,
        list_orgs_svc,
        handle_form_submission,
        group_update_svc,
        group,
        GroupScope,
    ):

        fetched_user = factories.User()
        user_svc.fetch.return_value = fetched_user
        updated_org = factories.Organization()

        list_orgs_svc.organizations.return_value.append(updated_org)

        def call_on_success(request, form, on_success, on_failure):
            return on_success({
                "creator":
                fetched_user.username,
                "description":
                "New description",
                "group_type":
                "open",
                "name":
                "Updated group",
                "organization":
                updated_org.pubid,
                "origins":
                ["http://somewhereelse.com", "http://www.gladiolus.org"],
                "members": [],
                "enforce_scope":
                False,
            })

        handle_form_submission.side_effect = call_on_success
        view = GroupEditViews(group, pyramid_request)

        ctx = view.update()

        group_update_svc.update.assert_called_once_with(
            group,
            organization=updated_org,
            creator=fetched_user,
            description="New description",
            name="Updated group",
            scopes=[
                GroupScope(origin=o) for o in
                ["http://somewhereelse.com", "http://www.gladiolus.org"]
            ],
            enforce_scope=False,
        )
        assert ctx["form"] == self._expected_form(group)
Beispiel #9
0
    def test_read_renders_form(self, pyramid_request, factories, group):
        factories.Annotation(groupid=group.pubid)
        factories.Annotation(groupid=group.pubid)

        view = GroupEditViews(group, pyramid_request)

        ctx = view.read()

        assert ctx["form"] == self._expected_form(group)
        assert ctx["pubid"] == group.pubid
        assert ctx["group_name"] == group.name
        assert ctx["member_count"] == len(group.members)
        assert ctx["annotation_count"] == 2
Beispiel #10
0
    def test_read_renders_form(self, pyramid_request, factories, group):
        factories.Annotation(groupid=group.pubid)
        factories.Annotation(groupid=group.pubid)

        view = GroupEditViews(group, pyramid_request)

        ctx = view.read()

        assert ctx["form"] == self._expected_form(group)
        assert ctx["pubid"] == group.pubid
        assert ctx["group_name"] == group.name
        assert ctx["member_count"] == len(group.members)
        assert ctx["annotation_count"] == 2
Beispiel #11
0
    def test_update_proxies_to_update_svc_on_success(
        self,
        factories,
        pyramid_request,
        user_svc,
        list_orgs_svc,
        handle_form_submission,
        group_update_svc,
        group,
        GroupScope,
    ):

        fetched_user = factories.User()
        user_svc.fetch.return_value = fetched_user
        updated_org = factories.Organization()

        list_orgs_svc.organizations.return_value.append(updated_org)

        def call_on_success(request, form, on_success, on_failure):
            return on_success(
                {
                    "creator": fetched_user.username,
                    "description": "New description",
                    "group_type": "open",
                    "name": "Updated group",
                    "organization": updated_org.pubid,
                    "scopes": ["http://somewhereelse.com", "http://www.gladiolus.org"],
                    "members": [],
                    "enforce_scope": False,
                }
            )

        handle_form_submission.side_effect = call_on_success
        view = GroupEditViews(group, pyramid_request)

        ctx = view.update()

        group_update_svc.update.assert_called_once_with(
            group,
            organization=updated_org,
            creator=fetched_user,
            description="New description",
            name="Updated group",
            scopes=[
                GroupScope(scope=o)
                for o in ["http://somewhereelse.com", "http://www.gladiolus.org"]
            ],
            enforce_scope=False,
        )
        assert ctx["form"] == self._expected_form(group)
Beispiel #12
0
    def test_read_lists_organizations_in_groups_authority(
            self, pyramid_request, group, default_org, CreateAdminGroupSchema,
            list_orgs_svc):
        GroupEditViews(group, pyramid_request)

        list_orgs_svc.organizations.assert_called_with(group.authority)
        schema = CreateAdminGroupSchema.return_value
        (_, call_kwargs) = schema.bind.call_args
        assert call_kwargs["organizations"] == {default_org.pubid: default_org}
Beispiel #13
0
    def test_update_updates_group_members_on_success(
        self,
        factories,
        pyramid_request,
        group_create_svc,
        user_svc,
        group_members_svc,
        handle_form_submission,
        list_orgs_svc,
    ):
        group = factories.RestrictedGroup(
            pubid="testgroup", organization=factories.Organization()
        )
        list_orgs_svc.organizations.return_value = [group.organization]

        fetched_user = factories.User()
        user_svc.fetch.return_value = fetched_user

        def call_on_success(request, form, on_success, on_failure):
            return on_success(
                {
                    "authority": pyramid_request.default_authority,
                    "creator": fetched_user.username,
                    "description": "a desc",
                    "group_type": "restricted",
                    "name": "a name",
                    "members": ["phil", "sue"],
                    "organization": group.organization.pubid,
                    "scopes": ["http://www.example.com"],
                    "enforce_scope": group.enforce_scope,
                }
            )

        handle_form_submission.side_effect = call_on_success
        view = GroupEditViews(group, pyramid_request)

        view.update()

        group_members_svc.update_members.assert_any_call(
            group, [fetched_user.userid, fetched_user.userid]
        )
Beispiel #14
0
    def test_update_updates_group_members_on_success(
        self,
        factories,
        pyramid_request,
        group_create_svc,
        user_service,
        group_members_svc,
        handle_form_submission,
        list_orgs_svc,
    ):
        group = factories.RestrictedGroup(
            pubid="testgroup", organization=factories.Organization()
        )
        list_orgs_svc.organizations.return_value = [group.organization]

        fetched_user = factories.User()
        user_service.fetch.return_value = fetched_user

        def call_on_success(request, form, on_success, on_failure):
            return on_success(
                {
                    "authority": pyramid_request.default_authority,
                    "creator": fetched_user.username,
                    "description": "a desc",
                    "group_type": "restricted",
                    "name": "a name",
                    "members": ["phil", "sue"],
                    "organization": group.organization.pubid,
                    "scopes": ["http://www.example.com"],
                    "enforce_scope": group.enforce_scope,
                }
            )

        handle_form_submission.side_effect = call_on_success
        view = GroupEditViews(group, pyramid_request)

        view.update()

        group_members_svc.update_members.assert_any_call(
            group, [fetched_user.userid, fetched_user.userid]
        )
Beispiel #15
0
    def test_it_binds_schema(self, pyramid_request, group, user_svc,
                             default_org, CreateAdminGroupSchema):

        GroupEditViews(group, pyramid_request)

        schema = CreateAdminGroupSchema.return_value
        schema.bind.assert_called_with(
            request=pyramid_request,
            group=group,
            user_svc=user_svc,
            organizations={default_org.pubid: default_org},
        )
Beispiel #16
0
    def test_it_binds_schema(
        self,
        pyramid_request,
        group,
        user_service,
        organization,
        AdminGroupSchema,
    ):
        GroupEditViews(GroupContext(group), pyramid_request)

        schema = AdminGroupSchema.return_value
        schema.bind.assert_called_with(
            request=pyramid_request,
            group=group,
            user_svc=user_service,
            organizations={organization.pubid: organization},
        )
Beispiel #17
0
    def test_read_lists_organizations_in_groups_authority(
        self,
        pyramid_request,
        group,
        organization,
        AdminGroupSchema,
        list_organizations_service,
    ):
        GroupEditViews(GroupContext(group), pyramid_request)

        list_organizations_service.organizations.assert_called_with(
            group.authority)
        schema = AdminGroupSchema.return_value
        (_, call_kwargs) = schema.bind.call_args
        assert call_kwargs["organizations"] == {
            organization.pubid: organization
        }