Exemplo n.º 1
0
    def ListSubscriptions():  # pylint: disable=unused-variable
        """List all visible subscriptions based on identity.

    This is an API handler, which requires that we have an authenticated user
    making the request. We'll require that the user be a service account
    (from the main dashboard service).

    """

        try:
            list_request = json_format.Parse(request.get_data(),
                                             sheriff_config_pb2.ListRequest())
        except json_format.ParseError as error:
            return jsonify(
                {'messages': [{
                    'severity': 'ERROR',
                    'text': '%s' % (error)
                }]}), 400
        list_response = sheriff_config_pb2.ListResponse()
        configs = list(luci_config.ListAllConfigs(datastore_client))
        configs = match_policy.FilterSubscriptionsByIdentity(
            auth_client, list_request, configs)
        for config_set, revision, subscription in configs:
            subscription_metadata = list_response.subscriptions.add()
            subscription_metadata.config_set = config_set
            subscription_metadata.revision = revision
            subscription_metadata.subscription.CopyFrom(subscription)
            # We shouldn't use patterns outside the sheriff-config in any case.
            # Maybe allow being explicitily requsted for debug usage later.
            del subscription_metadata.subscription.patterns[:]
        return (json_format.MessageToJson(list_response,
                                          preserving_proto_field_name=True),
                200, {
                    'Content-Type': 'application/json'
                })
Exemplo n.º 2
0
    def testListPrivate(self):
        configs = [
            ('', '',
             sheriff_pb2.Subscription(
                 name='Private',
                 visibility=sheriff_pb2.Subscription.INTERNAL_ONLY,
             )),
            ('', '',
             sheriff_pb2.Subscription(
                 name='Public',
                 visibility=sheriff_pb2.Subscription.PUBLIC,
             )),
        ]
        http = HttpMockSequenceWithDiscovery([
            ({
                'status': '200'
            }, '{ "is_member": true }'),
            ({
                'status': '200'
            }, '{ "is_member": false }'),
        ])
        _ = service_client.CreateServiceClient(
            'https://luci-config.appspot.com/_ah/api',
            'config',
            'v1',
            http=http)
        auth_client = service_client.CreateServiceClient(
            'https://chrome-infra-auth.appspot.com/_ah/api',
            'auth',
            'v1',
            http=http)
        request = sheriff_config_pb2.ListRequest(identity_email='foo@bar1')
        configs = match_policy.FilterSubscriptionsByIdentity(
            auth_client, request, configs)
        self.assertEqual(['Private', 'Public'],
                         [s.name for _, _, s in configs])

        request = sheriff_config_pb2.ListRequest(identity_email='foo@bar2')
        configs = match_policy.FilterSubscriptionsByIdentity(
            auth_client, request, configs)
        self.assertEqual(['Public'], [s.name for _, _, s in configs])

        request = sheriff_config_pb2.ListRequest()
        configs = match_policy.FilterSubscriptionsByIdentity(
            auth_client, request, configs)
        self.assertEqual(['Public'], [s.name for _, _, s in configs])