Esempio n. 1
0
def test_fetch_expenses_spreadsheetid_not_exists(mocker):
    # RequestMockBuilderがMockなのに認証情報が必要になっているので回避するためのもの
    # 使い方が間違ってるのか?
    mocker.patch("google.auth.default", return_value=(None, None))
    # driver用
    mocker.patch(
        "google.oauth2.service_account.Credentials.from_service_account_file")
    mocker.patch("os.path.open")
    mocker.patch("pickle.dump")
    mocker.patch("pickle.load")

    requestBuilder = RequestMockBuilder(
        {
            "sheets.spreadsheets.get": (
                httplib2.Response({
                    "status": 404,
                    "reason": "Requested entity was not found."
                }),
                b"{}",
            )
        },
        check_unexpected=True,
    )
    service = googleapiclient.discovery.build("sheets",
                                              "v4",
                                              requestBuilder=requestBuilder)
    driver = SheetDriverImpl()
    driver.spreadsheets = service.spreadsheets()

    with pytest.raises(Exception):
        driver.fetch_expenses("1234")
 def test_fetch_google_scores(self):
     """
     Scenario: Evaluate GoogleApiClient#fetch_google_scores() method for a
     valid request
     Given a list of terms of type List[str]
     And start date in ISO format
     And end date in ISO format
     Then client retrieves a JSON object with an element "lines" inside
     """
     http = HttpMock(datafile('trends_discovery.json'), {'status': '200'})
     response = b'{"lines": [ { "term" : "a flu" , "points" : [] } ]}'
     request_builder = RequestMockBuilder(
         {'trends.getTimelinesForHealth': (None, response)})
     with patch.object(GoogleApiClient, '__init__', lambda x: None):
         instance = GoogleApiClient()
         instance.service = build(serviceName=SERVICE_NAME,
                                  version=SERVICE_VERSION,
                                  http=http,
                                  developerKey='APIKEY',
                                  requestBuilder=request_builder,
                                  cache_discovery=False,
                                  static_discovery=False)
         instance.block_until = None
         terms = ['flu']
         start = date.today() - timedelta(days=5)
         end = start + timedelta(days=1)
         result = instance.fetch_google_scores(terms, start, end)
         self.assertEqual(len(result), 1)
         self.assertIn('term', result[0])
         self.assertIn('points', result[0])
Esempio n. 3
0
    def test_preserve_an_existing_static_external_ip(self, *mocks):

        request_builder = RequestMockBuilder({
            "compute.addresses.insert": (self.alreadyExistsResponse, b''),
            "compute.regionOperations.get":
            (self.successResponse, '{"status":"DONE"}')
        })
        compute = build("compute",
                        "v1",
                        self.http,
                        requestBuilder=request_builder)
        original_instance_template = read_json_file(
            "sample_instance_template.json")
        original_network_interface = original_instance_template[
            "networkInterfaces"][0]
        new_network_interface = preserve_ip_addresses_handler(
            compute, self.project, self.new_instance, self.new_network_info,
            original_network_interface, self.region, True)
        self.assertEqual(new_network_interface["network"],
                         self.new_network_info["network"])
        self.assertEqual(new_network_interface["subnetwork"],
                         self.new_network_info["subnetwork"])
        # external IP is unchanged
        self.assertEqual(new_network_interface["accessConfigs"],
                         original_network_interface["accessConfigs"])
        # internal IP is ephemeral
        self.assertFalse("networkIP" in new_network_interface)
 def test_backend_error(self):
     """
     Scenario: Evaluate behaviour when Google API returns http/500 (Backend Error)
     Given a list of terms of type List[str]
     And start date in ISO format
     And end date in ISO format
     When Google API returns HTTP 403
     Then GoogleApiClient#fetch_google_scores() logs the HttpError
     """
     http = HttpMock(datafile('trends_discovery.json'), {'status': '200'})
     error_bytes = b'{"error" : { ' \
                   b'"code" : 500, ' \
                   b'"message" : "Backend Error", ' \
                   b'"errors" : [{ "reason" : "backendError" }] } }'
     response = Response({'status': 500})
     request_builder = RequestMockBuilder(
         {'trends.getTimelinesForHealth': (response, error_bytes)})
     with patch.object(GoogleApiClient, '__init__', lambda x: None):
         instance = GoogleApiClient()
         instance.service = build(serviceName=SERVICE_NAME,
                                  version=SERVICE_VERSION,
                                  http=http,
                                  developerKey='APIKEY',
                                  requestBuilder=request_builder,
                                  cache_discovery=False,
                                  static_discovery=False)
         instance.block_until = None
         terms = ['flu']
         start = date.today() - timedelta(days=5)
         end = start + timedelta(days=1)
         with self.assertLogs(level='WARNING') as logContext:
             instance.fetch_google_scores(terms, start, end)
         self.assertListEqual(logContext.output, [
             'WARNING:root:<HttpError 500 when requesting None returned "Backend Error". Details: "Backend Error">'
         ])
Esempio n. 5
0
 def test_other_http_error(self):
     # No error raises, and the original external IP will be used
     # in the new instance template
     request_builder = RequestMockBuilder({
         "compute.addresses.insert": (self.otherErrorResponse, b''),
         "compute.regionOperations.get":
         (self.successResponse, '{"status":"DONE"}')
     })
     compute = build("compute",
                     "v1",
                     self.http,
                     requestBuilder=request_builder)
     original_instance_template = read_json_file(
         "sample_instance_template.json")
     original_network_interface = original_instance_template[
         "networkInterfaces"][0]
     new_network_interface = preserve_ip_addresses_handler(
         compute, self.project, self.new_instance, self.new_network_info,
         original_network_interface, self.region, True)
     self.assertEqual(new_network_interface["network"],
                      self.new_network_info["network"])
     self.assertEqual(new_network_interface["subnetwork"],
                      self.new_network_info["subnetwork"])
     # external IP is ephemeral
     self.assertFalse("accessConfigs" in new_network_interface)
     # internal IP is ephemeral
     self.assertFalse("networkIP" in new_network_interface)
Esempio n. 6
0
 def test_default_response(self):
     requestBuilder = RequestMockBuilder({})
     plus = build('plus',
                  'v1',
                  http=self.http,
                  requestBuilder=requestBuilder)
     activity = plus.activities().get(activityId='tag:blah').execute()
     self.assertEqual({}, activity)
  def test_simple_response(self):
    requestBuilder = RequestMockBuilder({
        'plus.activities.get': (None, '{"foo": "bar"}')
        })
    plus = build('plus', 'v1', http=self.http, requestBuilder=requestBuilder)

    activity = plus.activities().get(activityId='tag:blah').execute()
    self.assertEqual({"foo": "bar"}, activity)
Esempio n. 8
0
    def mock_build(*args, **kwargs):
        response = open(datafile("youtube3_resp.json")).read()

        requestBuilder = RequestMockBuilder({'youtube.search.list': (None, response)})  # noqa: E501

        mockb = googleapiclient.discovery.build_from_document(
            api_discovery_json, developerKey="dummy",
            requestBuilder=requestBuilder)
        return mockb
 def test_default_response(self):
     requestBuilder = RequestMockBuilder({})
     plus = build("plus",
                  "v1",
                  http=self.http,
                  requestBuilder=requestBuilder,
                  static_discovery=False)
     activity = plus.activities().get(activityId="tag:blah").execute()
     self.assertEqual({}, activity)
Esempio n. 10
0
    def test_check_network_auto_mode_failure(self):
        request_builder = RequestMockBuilder(
            {
                "compute.networks.get": (
                    self.errorResponse, b"{Invalid resource}")})
        compute = build("compute", "v1", self.http,
                        requestBuilder=request_builder)

        with self.assertRaises(HttpError):
            check_network_auto_mode(compute, self.project, self.zone)
  def test_unexpected_call(self):
    requestBuilder = RequestMockBuilder({}, check_unexpected=True)

    plus = build('plus', 'v1', http=self.http, requestBuilder=requestBuilder)

    try:
      plus.activities().get(activityId='tag:blah').execute()
      self.fail('UnexpectedMethodError should have been raised')
    except UnexpectedMethodError:
      pass
Esempio n. 12
0
    def test_simple_response(self):
        requestBuilder = RequestMockBuilder(
            {"plus.activities.get": (None, '{"foo": "bar"}')})
        plus = build("plus",
                     "v1",
                     http=self.http,
                     requestBuilder=requestBuilder)

        activity = plus.activities().get(activityId="tag:blah").execute()
        self.assertEqual({"foo": "bar"}, activity)
Esempio n. 13
0
 def test_check_network_auto_mode_success(self):
     request_builder = RequestMockBuilder(
         {
             "compute.networks.get": (
                 self.successResponse, '{"autoCreateSubnetworks": true}')})
     compute = build("compute", "v1", self.http,
                     requestBuilder=request_builder)
     auto_mode_status = check_network_auto_mode(compute, self.project,
                                                self.zone)
     self.assertEqual(auto_mode_status, True)
Esempio n. 14
0
 def test_delete_instance_failure(self):
     request_builder = RequestMockBuilder(
         {
             "compute.instances.delete": (
                 self.errorResponse, b"{Invalid resource}")})
     compute = build("compute", "v1", self.http,
                     requestBuilder=request_builder)
     with self.assertRaises(HttpError):
         delete_instance(compute, self.project, self.zone,
                         self.instance_template)
  def test_simple_matching_dict_body(self):
    requestBuilder = RequestMockBuilder({
        'zoo.animals.insert': (None, '{"data": {"foo": "bar"}}',
                                    {'data': {'foo': 'bar'}})
        })
    zoo = build('zoo', 'v1', http=self.zoo_http, requestBuilder=requestBuilder)

    activity = zoo.animals().insert(
        body={'data': {'foo': 'bar'}}).execute()
    self.assertEqual({'foo': 'bar'}, activity)
Esempio n. 16
0
    def test_wait_for_region_operation_failure(self):
        request_builder = RequestMockBuilder(
            {
                "compute.regionOperations.get": (
                    self.errorResponse, b'Invalid Resource')})
        compute = build("compute", "v1", self.http,
                        requestBuilder=request_builder)

        with self.assertRaises(HttpError):
            wait_for_region_operation(compute, self.project, self.region, {})
Esempio n. 17
0
    def test_preserve_external_ip_failure(self):
        request_builder = RequestMockBuilder(
            {
                "compute.addresses.insert": (
                    self.errorResponse, b"{Invalid resource}")})
        compute = build("compute", "v1", self.http,
                        requestBuilder=request_builder)

        with self.assertRaises(HttpError):
            preserve_external_ip_address(compute, self.project, self.region,
                                         self.external_ip_address_body)
Esempio n. 18
0
    def test_attach_disk_failure(self):
        request_builder = RequestMockBuilder(
            {
                "compute.instances.attachDisk": (
                    self.errorResponse, b"{Invalid resource}")})
        compute = build("compute", "v1", self.http,
                        requestBuilder=request_builder)

        with self.assertRaises(HttpError):
            attach_disk(compute, self.project, self.zone, self.instance,
                        self.boot_disk)
  def test_simple_expected_body(self):
    requestBuilder = RequestMockBuilder({
        'zoo.animals.insert': (None, '{"data": {"foo": "bar"}}', '{}')
        })
    zoo = build('zoo', 'v1', http=self.zoo_http, requestBuilder=requestBuilder)

    try:
      zoo.animals().insert(body='').execute()
      self.fail('UnexpectedBodyError should have been raised')
    except UnexpectedBodyError:
      pass
Esempio n. 20
0
    def test_basic_region_waiting(self):
        request_builder = RequestMockBuilder(
            {
                "compute.regionOperations.get": (
                    self.successResponse,
                    '{"status":"RUNNING"}')})
        compute = build("compute", "v1", self.http,
                        requestBuilder=request_builder)

        with self.assertRaises(StopIteration):
            wait_for_region_operation(compute, self.project,
                                      self.region, {})
Esempio n. 21
0
    def test_error_in_region_waiting(self):
        request_builder = RequestMockBuilder(
            {
                "compute.regionOperations.get": (
                    self.successResponse,
                    '{"status":"DONE", "error":"something wrong"}')})
        compute = build("compute", "v1", self.http,
                        requestBuilder=request_builder)

        with self.assertRaises(RegionOperationsError):
            wait_for_region_operation(compute, self.project,
                                      self.region, {})
Esempio n. 22
0
 def test_get_zone_success(self):
     request_builder = RequestMockBuilder(
         {
             "compute.zones.get": (
                 self.successResponse, '{"foo": "bar"}')})
     compute = build("compute", "v1", self.http,
                     requestBuilder=request_builder)
     get_zone_operation = get_zone(compute, self.project, self.zone)
     self.assertEqual(
         get_zone_operation,
         {
             "foo": "bar"}
     )
Esempio n. 23
0
    def test_simple_expected_body(self):
        requestBuilder = RequestMockBuilder(
            {"zoo.animals.insert": (None, '{"data": {"foo": "bar"}}', "{}")})
        zoo = build("zoo",
                    "v1",
                    http=self.zoo_http,
                    requestBuilder=requestBuilder)

        try:
            zoo.animals().insert(body="").execute()
            self.fail("UnexpectedBodyError should have been raised")
        except UnexpectedBodyError:
            pass
  def test_errors(self):
    errorResponse = httplib2.Response({'status': 500, 'reason': 'Server Error'})
    requestBuilder = RequestMockBuilder({
        'plus.activities.list': (errorResponse, '{}')
        })
    plus = build('plus', 'v1', http=self.http, requestBuilder=requestBuilder)

    try:
      activity = plus.activities().list(collection='public', userId='me').execute()
      self.fail('An exception should have been thrown')
    except HttpError, e:
      self.assertEqual('{}', e.content)
      self.assertEqual(500, e.resp.status)
      self.assertEqual('Server Error', e.resp.reason)
    def test_unexpected_call(self):
        requestBuilder = RequestMockBuilder({}, check_unexpected=True)

        plus = build("plus",
                     "v1",
                     http=self.http,
                     requestBuilder=requestBuilder,
                     static_discovery=False)

        try:
            plus.activities().get(activityId="tag:blah").execute()
            self.fail("UnexpectedMethodError should have been raised")
        except UnexpectedMethodError:
            pass
Esempio n. 26
0
 def test_auto_mode_network(self):
     target_network_information = read_json_file(
         "sample_auto_mode_network.json")
     target_network = target_network_information["name"]
     request_builder = RequestMockBuilder(
         {
             "compute.networks.get": (
                 self.successResponse,
                 json.dumps(target_network_information))})
     compute = build("compute", "v1", self.http,
                     requestBuilder=request_builder)
     auto_mode = check_network_auto_mode(compute, self.project,
                                         target_network)
     self.assertEqual(auto_mode, True)
Esempio n. 27
0
 def test_stop_instance_success(self):
     request_builder = RequestMockBuilder(
         {
             "compute.instances.stop": (
                 self.successResponse, '{"foo": "bar"}')})
     compute = build("compute", "v1", self.http,
                     requestBuilder=request_builder)
     stop_instance_operation = stop_instance(compute, self.project,
                                             self.zone, self.instance)
     self.assertEqual(
         stop_instance_operation,
         {
             "foo": "bar"}
     )
Esempio n. 28
0
 def test_get_network_success(self):
     request_builder = RequestMockBuilder(
         {
             "compute.networks.get": (
                 self.successResponse, '{"foo": "bar"}')})
     compute = build("compute", "v1", self.http,
                     requestBuilder=request_builder)
     network_get_operation = get_network(compute, self.project,
                                         self.target_network)
     self.assertEqual(
         network_get_operation,
         {
             "foo": "bar"}
     )
Esempio n. 29
0
 def test_preserve_external_ip_success(self):
     request_builder = RequestMockBuilder(
         {
             "compute.addresses.insert": (
                 self.successResponse, '{"foo": "bar"}')})
     compute = build("compute", "v1", self.http,
                     requestBuilder=request_builder)
     preserve_external_ip_address_operation = preserve_external_ip_address(
         compute, self.project, self.region, self.external_ip_address_body)
     self.assertEqual(
         preserve_external_ip_address_operation,
         {
             "foo": "bar"}
     )
Esempio n. 30
0
    def test_change_to_legacy_network(self):
        target_legacy_network_information = read_json_file(
            "sample_legacy_network.json")
        target_legacy_network = target_legacy_network_information["name"]
        request_builder = RequestMockBuilder(
            {
                "compute.networks.get": (
                    self.successResponse,
                    json.dumps(target_legacy_network_information))})
        compute = build("compute", "v1", self.http,
                        requestBuilder=request_builder)

        with self.assertRaises(InvalidTargetNetworkError):
            check_network_auto_mode(compute, self.project,
                                    target_legacy_network)