Index: third_party/google-endpoints/test/test_label_descriptor.py |
diff --git a/third_party/google-endpoints/test/test_label_descriptor.py b/third_party/google-endpoints/test/test_label_descriptor.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9985356c082c60ae5328850d203825faaf5ef28b |
--- /dev/null |
+++ b/third_party/google-endpoints/test/test_label_descriptor.py |
@@ -0,0 +1,252 @@ |
+# Copyright 2016 Google Inc. All Rights Reserved. |
+# |
+# Licensed under the Apache License, Version 2.0 (the "License"); |
+# you may not use this file except in compliance with the License. |
+# You may obtain a copy of the License at |
+# |
+# http://www.apache.org/licenses/LICENSE-2.0 |
+# |
+# Unless required by applicable law or agreed to in writing, software |
+# distributed under the License is distributed on an "AS IS" BASIS, |
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+# See the License for the specific language governing permissions and |
+# limitations under the License. |
+ |
+from __future__ import absolute_import |
+ |
+import base64 |
+import datetime |
+import unittest2 |
+from expects import be_none, be_true, expect, equal, raise_error |
+ |
+from google.api.control import label_descriptor, messages, report_request |
+ |
+_KNOWN = label_descriptor.KnownLabels |
+ValueType = label_descriptor.ValueType |
+ |
+class KnownLabelsBase(object): |
+ SUBJECT = None |
+ GIVEN_INFO = report_request.Info( |
+ api_method = 'dummy_method', |
+ api_version = 'dummy_version', |
+ location = 'dummy_location', |
+ referer = 'dummy_referer' |
+ ) |
+ WANTED_LABEL_DICT = {} |
+ |
+ def _matching_descriptor(self, hide_default=False): |
+ res = messages.LabelDescriptor( |
+ key=self.SUBJECT.label_name, |
+ valueType=self.SUBJECT.value_type) |
+ if res.valueType == ValueType.STRING and hide_default: |
+ res.valueType = None |
+ return res |
+ |
+ def _not_matched(self): |
+ d = self._matching_descriptor() |
+ d.valueType = ValueType.INT64 # no known labels have this type |
+ return d |
+ |
+ def test_should_be_supported(self): |
+ expect(_KNOWN.is_supported(self._matching_descriptor())).to(be_true) |
+ expect(_KNOWN.is_supported( |
+ self._matching_descriptor(hide_default=True))).to(be_true) |
+ expect(_KNOWN.is_supported(self._not_matched())).not_to(be_true) |
+ |
+ def test_should_be_matched_correctly(self): |
+ expect(self.SUBJECT.matches(self._matching_descriptor())).to(be_true) |
+ expect(self.SUBJECT.matches( |
+ self._matching_descriptor(hide_default=True))).to(be_true) |
+ expect(self.SUBJECT.matches(self._not_matched())).not_to(be_true) |
+ |
+ def test_should_update_request_info(self): |
+ given_dict = {} |
+ self.SUBJECT.do_labels_update(self.GIVEN_INFO, given_dict) |
+ expect(given_dict).to(equal(self.WANTED_LABEL_DICT)) |
+ |
+ |
+class TestCredentialIdWithNoCreds(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.CREDENTIAL_ID |
+ |
+ |
+class TestCredentialIdWithApiKey(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.CREDENTIAL_ID |
+ GIVEN_INFO = report_request.Info( |
+ api_key = 'dummy_api_key', |
+ ) |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: 'apiKey:dummy_api_key'} |
+ |
+ |
+class TestCredentialIdWithAuthIssuer(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.CREDENTIAL_ID |
+ GIVEN_INFO = report_request.Info( |
+ auth_issuer = 'dummy_issuer', |
+ auth_audience = 'dummy_audience' |
+ ) |
+ WANTED_VALUE = 'jwtAuth:issuer=' + base64.urlsafe_b64encode('dummy_issuer') |
+ WANTED_VALUE += '&audience=' + base64.urlsafe_b64encode('dummy_audience') |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: WANTED_VALUE} |
+ |
+ |
+class EndUser(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.END_USER |
+ |
+ |
+class EndUserCountry(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.END_USER_COUNTRY |
+ |
+ |
+class ErrorType(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.ERROR_TYPE |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '2xx'} |
+ |
+ |
+class Protocol(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.PROTOCOL |
+ WANTED_LABEL_DICT = { |
+ SUBJECT.label_name: report_request.ReportedProtocols.UNKNOWN.name |
+ } |
+ |
+ |
+class Referer(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.REFERER |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: 'dummy_referer'} |
+ |
+ |
+class ResponseCode(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.RESPONSE_CODE |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '200'} |
+ |
+ |
+class ResponseCodeClass(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.RESPONSE_CODE_CLASS |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '2xx'} |
+ |
+ |
+class StatusCodeWithOkStatus(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.STATUS_CODE |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '0'} |
+ |
+ |
+class StatusCodeWithKnown4XXStatus(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.STATUS_CODE |
+ GIVEN_INFO = report_request.Info( |
+ response_code = 401, |
+ ) |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '16'} |
+ |
+ |
+class StatusCodeWithUnknown4XXStatus(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.STATUS_CODE |
+ GIVEN_INFO = report_request.Info( |
+ response_code = 477, |
+ ) |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '9'} |
+ |
+ |
+class StatusCodeWithKnown5XXStatus(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.STATUS_CODE |
+ GIVEN_INFO = report_request.Info( |
+ response_code = 501, |
+ ) |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '12'} |
+ |
+ |
+class StatusCodeWithUnknown5XXStatus(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.STATUS_CODE |
+ GIVEN_INFO = report_request.Info( |
+ response_code = 577, |
+ ) |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '13'} |
+ |
+ |
+class StatusCodeWithUnknownStatus(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.STATUS_CODE |
+ GIVEN_INFO = report_request.Info( |
+ response_code = 777, |
+ ) |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: '2'} |
+ |
+ |
+class GaeCloneId(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GAE_CLONE_ID |
+ |
+ |
+class GaeModuleId(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GAE_MODULE_ID |
+ |
+ |
+class GaeReplicaIndex(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GAE_REPLICA_INDEX |
+ |
+ |
+class GaeVersionId(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GAE_VERSION_ID |
+ |
+ |
+class GcpLocation(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_LOCATION |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: 'dummy_location'} |
+ |
+ |
+class GcpProject(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_PROJECT |
+ |
+ |
+class GcpRegion(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_REGION |
+ |
+ |
+class GcpResourceId(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_RESOURCE_ID |
+ |
+ |
+class GcpResourceType(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_RESOURCE_TYPE |
+ |
+ |
+class GcpService(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_SERVICE |
+ |
+ |
+class GcpZone(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_ZONE |
+ |
+ |
+class GcpUid(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_UID |
+ |
+ |
+class GcpApiMethod(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_API_METHOD |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: 'dummy_method'} |
+ |
+ |
+class GcpApiVersion(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.GCP_API_VERSION |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: 'dummy_version'} |
+ |
+ |
+class SccCallerIp(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.SCC_CALLER_IP |
+ |
+ |
+class SccPlatform(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.SCC_PLATFORM |
+ WANTED_LABEL_DICT = { |
+ SUBJECT.label_name: report_request.ReportedPlatforms.UNKNOWN.name |
+ } |
+ |
+ |
+class SccReferer(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.SCC_REFERER |
+ |
+ |
+class SccServiceAgent(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.SCC_SERVICE_AGENT |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: label_descriptor.SERVICE_AGENT} |
+ |
+ |
+class SccUserAgent(KnownLabelsBase, unittest2.TestCase): |
+ SUBJECT = _KNOWN.SCC_USER_AGENT |
+ WANTED_LABEL_DICT = {SUBJECT.label_name: label_descriptor.USER_AGENT} |