예제 #1
0
 def patch(self, user_id, label_id, label_model):
     """
     Updates the specified label. This method supports patch semantics.
     :param label_id: the ID of the label to update.
     :param user_id: the user's email address.
     :param label_model: (LabelModel) model
     :return: response, (LabelModel) model
     """
     log_info("[Users.labels]: Patch the label with id: {label_id}".format(
         label_id=label_id))
     url = '{host}/{api}/{user_id}/labels/{label_id}'.format(
         host=self.host, api=self.api, user_id=user_id, label_id=label_id)
     body = {
         "name": label_model.name,
         "labelListVisibility": label_model.label_list_visibility,
         "messageListVisibility": label_model.message_list_visibility
     }
     http = HttpLib(url=url, json=body)
     http.auth_to_google(client=client, scope=scope_labels)
     http.send_patch()
     response_json = http.get_response_json(http.response)
     label_model = LabelModel().parse_response_to_model(response_json)
     log_info(
         '[Users.labels]: PATCH response: {status_code}, \n{model}'.format(
             status_code=http.get_response_status_code(http.response),
             model=label_model))
     return http.response, label_model
예제 #2
0
    def list(self, user_id, client_id=client):
        """

        Args:
            user_id (str): id пользователя
            client_id(dict): клиент под которым выполняется авторизация
        Returns:
            response (requests.Response)
            model_array (list)
        """
        api = HttpLib(url="{host}/{api}/{user_id}/messages".format(
            host=self.host, api=self.api, user_id=user_id))
        api.auth_to_google(client=client_id, scope=scope_mail)
        api.send_get()
        response = api.response
        model_array = []
        log_info(api.response.text)
        if api.get_response_json(response)["resultSizeEstimate"] == 0:

            model_array.append(MessageModel().get_empty_list_from_json(
                api.get_response_json(response)))
            return response, model_array

        else:
            json_array = api.get_response_json(response)["messages"]

            for item in json_array:
                model = MessageModel().get_basic_message_from_json(item)
                model_array.append(model)

            return response, model_array
 def calendar_list_insert(self, model_calendar_list):
     """
     Adds an entry to the user's calendar list.
     :param model_calendar_list<CalendarListModel>
     :return: response, model<CalendarListModel>
     """
     log_info("Send post request\nCalendarID = [{calendar_id}]".format(
         calendar_id=model_calendar_list.cal_id))
     body = {
         "id": model_calendar_list.cal_id,
         "defaultReminders": model_calendar_list.default_reminders,
         "notificationSettings": model_calendar_list.notification_settings,
         "summaryOverride": model_calendar_list.summary_override,
         "colorId": model_calendar_list.color_id
     }
     http = HttpLib(url=self.url, json=body)
     http.auth_to_google(client=client, scope=scope_calendar)
     request = http.send_post()
     response_json = request.get_response_json(request.response)
     model = CalendarListModel().pars_response_to_model(response_json)
     log_info(
         "Returned:\nResponse:\n{response}\nModel calendarList:\n{model}".
         format(response=create_string_from_json(response_json),
                model=model))
     return request.response, model
def get_file_size_by_name(file_name):
    file_size = get_file_size(
        get_config_path("test_files{sep}{file_name}".format(
            sep=os.sep, file_name=file_name)))
    log_info("Size {file_name} = {size}".format(file_name=file_name,
                                                size=file_size))
    return file_size
예제 #5
0
def check_that_message_added(json_obj, message_id):
    history_dict = get_value_from_json(json_obj, "history")
    check = check_history_message(history_dict, message_id, "messagesAdded")
    log_info("Checking that message {message_id} was added in history".format(
        message_id=message_id))
    assert check, "Message {message_id} was not added from history".format(
        message_id=message_id)
예제 #6
0
def patch_send_as(user_id, send_as_email):
    """
    Patch the specified send-as alias
    Args:
        user_id (str)
        send_as_email (str)
    Returns:
        model (SendAsModel)
    """
    request_body = {
        "sendAsEmail": send_as_email,
        "displayName": get_unique_string(),
        "signature": get_unique_string(),
    }
    expected_model = SendAsModel()
    expected_model.get_send_as_model_from_json(request_body)
    response = SettingsSendAsApi().patch_send_as(user_id, send_as_email,
                                                 request_body)
    response_code = HttpLib.get_response_status_code(response)
    response_text = HttpLib.get_response_text(response)
    log_info(
        "Patch the send_as. status code is: {code}, response text is: {text}".
        format(code=response_code, text=response_text))
    assert response_code == status_code_200, "Error in patching {sendas_email} send_as:{error},status code is: {code}".\
        format(sendas_email=send_as_email, error=response_text, code=response_code)
    return expected_model
예제 #7
0
def compare_colors(exp_color_model, act_color_model):
    log_info(
        "Compare colors models. Exp : \n{exp_color_model} \nAct: \n{act_color_model}"
        .format(exp_color_model=exp_color_model,
                act_color_model=act_color_model))
    assert exp_color_model.__eq__(act_color_model), "The ColorsModel are not equal. Exp = {expected}, Act = {actual}".\
        format(expected=exp_color_model, actual=act_color_model)
예제 #8
0
def get_quick_event(calendar_id, event_id):
    response, response_model = EventsApi().get_quick_event(calendar_id, event_id)
    log_info("Get quick event status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(response),
        response=HttpLib.get_response_text(response)))
    assert HttpLib.get_response_status_code(response) == status_code_200, "Error: {response}".format(response=response)
    return response, response_model
예제 #9
0
def insert_acl_rule(role, scope_type, scope_value):
    """
    Метод создает правило в календаре

    template
        Create Acl role  |  ${role}  |  ${scope_value}  |  ${scope_type}

    Args:
        role (str): тип роли
        scope_value (str): email к кому применить правило
        scope_type (str): тип пользователя
    Return:
        expected_model(ACLModel): модель правила
    """
    json_insert = create_json_role(role, scope_type, scope_value)
    log_info("Create model from json (expected model)")
    expected_model = ACLModel()
    expected_model.init_acl_from_json(json_data=json_insert)
    actual_response = AclApi().insert(json_insert)
    actual_status_code = HttpLib.get_response_status_code(actual_response)
    actual_json = HttpLib.get_response_json(actual_response)
    log_pretty_json(actual_json, "This is response json from server")
    assert (actual_status_code == status_code_200),\
        "Insert ACL rule Failed. The response status code not equal 200, current status code: {actual_code}".\
        format(actual_code=actual_status_code)
    return expected_model
예제 #10
0
def update_acl_rule(role, scope_type, scope_value):
    """
    Метод обновляет правило в календаре

    Args:
        role (str): тип роли
        scope_type (str): тип пользователя
        scope_value (str): email к кому применияется правило
    Return:
        expected_model(ACLModel): модель правила
    """
    json_update = create_json_role(role, scope_type, scope_value)
    log_info("Create model from json (expected model)")
    expected_model = ACLModel()
    expected_model.init_acl_from_json(json_data=json_update)

    actual_response = AclApi().update(json_data=json_update, rule_id="user:{scope_value}".
                                      format(scope_value=scope_value))
    actual_status_code = HttpLib.get_response_status_code(actual_response)
    actual_json = HttpLib.get_response_json(actual_response)
    log_pretty_json(actual_json, "This is response json from server")
    assert (actual_status_code == status_code_200), \
        "Updating ACL rule Failed. The response status code not equal 200, current status code: {actual_code}". \
        format(actual_code=actual_status_code)
    return expected_model
 def filters_create(self, user_id, model_filters):
     """
     Creates a filter
     :param user_id: User's email address. The special value "me" can be used to indicate the authenticated user.
     :param model_filters
         :type: SettingsFiltersModel
     :return: response, model<SettingsFiltersModel>
     """
     log_info("Send post request\nUserID = [{user_id}]"
              "\nModel:\n{model}".format(user_id=user_id, model=model_filters))
     url = "{host}/{api}/{user_id}/settings/filters".format(host=self.host, api=self.api, user_id=user_id)
     body = {
         "action": {
             "addLabelIds": model_filters.add_label_id
         },
         "criteria": {
             "from": model_filters.criteria_from,
             "to": model_filters.criteria_to,
             "negatedQuery": model_filters.criteria_negated_query,
             "subject": model_filters.criteria_subject
         }
     }
     api = HttpLib(url=url, json=body)
     api.auth_to_google(client=client, scope=scope_gmail_settings_filters)
     api.send_post()
     response = api.response
     response_json = api.get_response_json(response)
     model = SettingsFiltersModel().pars_json_to_model(response_json)
     log_info("Returned:\nResponse:\n{response}\nModel:\n{model}".
              format(response=dumps(response_json, indent=4), model=model))
     return response, model
예제 #12
0
 def create_label_model(self,
                        name=None,
                        label_list_visibility=None,
                        message_list_visibility=None):
     """
     Create label model with params or with random values
     :param name: (string) the display name of the label.
     :param label_list_visibility: (string) the visibility of the label
      in the label list in the Gmail web interface.
         Acceptable values are:
             "labelHide": Do not show the label in the label list.
             "labelShow": Show the label in the label list. (Default)
             "labelShowIfUnread": Show the label if there are any unread messages with that label.
     :param message_list_visibility: (string) the visibility of messages with this label
      in the message list in the Gmail web interface.
         Acceptable values are:
             "hide": Do not show the label in the message list.
             "show": Show the label in the message list. (Default)
     :return: (LabelModel) model
     """
     log_info('[Users.labels]: Creating label model...')
     self.name = name or Common_functions.get_unique_string()
     self.label_list_visibility = label_list_visibility or choice(
         ['labelHide', 'labelShow', 'labelShowIfUnread'])
     self.message_list_visibility = message_list_visibility or choice(
         ['hide', 'show'])
     log_info(message="Model has created \n{model}".format(model=self))
     return self
예제 #13
0
 def list(self, user_id):
     """
     Lists all labels in the user's mailbox.
     :param user_id: The user's email address.
     :return: response, (list<LabelModel>) list of models.
     """
     log_info(
         "[Users.labels]: List of labels for user with id={user_id}".format(
             user_id=user_id))
     url = '{host}/{api}/{user_id}/labels/'.format(host=self.host,
                                                   api=self.api,
                                                   user_id=user_id)
     http = HttpLib(url=url)
     http.auth_to_google(client=client, scope=scope_labels)
     http.send_get()
     label_models_list = []
     labels = get_value_from_json(http.get_response_json(http.response),
                                  'labels')
     for label in labels:
         label_models_list.append(
             LabelModel().parse_response_to_model_for_list(label))
     log_info(
         '[Users.labels]: LIST response: {status_code}, \n{models}'.format(
             status_code=http.get_response_status_code(http.response),
             models='\n'.join(model.__str__()
                              for model in label_models_list)))
     return http.response, label_models_list
예제 #14
0
def check_models_equals(expected_model, actual_model):
    log_info(
        "Check that expected_model = {expected_model} is equal actual_model = {actual_model}"
        .format(expected_model=expected_model, actual_model=actual_model))
    assert (expected_model == actual_model), "Compare calendar models FAILED. \
    Model {expected_model} is not equal {actual_model}".format(
        expected_model=expected_model, actual_model=actual_model)
예제 #15
0
    def create(self, user_id, label_model):
        """
        Creates a new label.
        :param user_id: The user's email address.
        :param label_model: (LabelModel) model
        :return: response, (LabelModel) model
        """
        log_info(
            "[Users.labels]: Creates a new label with body: \n{model}".format(
                model=label_model))
        url = '{host}/{api}/{user_id}/labels'.format(host=self.host,
                                                     api=self.api,
                                                     user_id=user_id)
        body = {
            "name": label_model.name,
            "labelListVisibility": label_model.label_list_visibility,
            "messageListVisibility": label_model.message_list_visibility
        }
        http = HttpLib(url=url, json=body)

        http.auth_to_google(client=client, scope=scope_labels)
        http.send_post()
        response_json = http.get_response_json(http.response)
        label_model = LabelModel().parse_response_to_model(response_json)
        log_info(
            '[Users.labels]: CREATE response: {status_code}, \n{model}'.format(
                status_code=http.get_response_status_code(http.response),
                model=label_model))
        return http.response, label_model
예제 #16
0
def quick_add_event(calendar_id, summary):
    quick_add_response, quick_add_model = EventsApi().quick_add_event(calendar_id, summary)
    log_info("Quick add event status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(quick_add_response),
        response=HttpLib.get_response_text(quick_add_response)))
    assert HttpLib.get_response_status_code(quick_add_response) == status_code_200, \
        "Error: {response}".format(response=quick_add_response)
    return quick_add_response, quick_add_model
예제 #17
0
def list_events(calendar_id, client_id=client):
    response_list_event, list_events = EventsApi().list_events(calendar_id, client_id)
    log_info("List events status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(response_list_event),
        response=HttpLib.get_response_text(response_list_event)))
    assert HttpLib.get_response_status_code(response_list_event) == status_code_200, "Error: {0}" \
        .format(response_list_event)
    return response_list_event, list_events
예제 #18
0
def delete_event(calendar_id, event_id, client_id=client, send_notifications="False"):
    delete_response = EventsApi().delete_event(calendar_id, event_id, client_id, send_notifications)
    log_info("Delete event status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(delete_response),
        response=HttpLib.get_response_text(delete_response)))
    assert HttpLib.get_response_status_code(delete_response) == status_code_204, "Error: {response}" \
        .format(response=delete_response)
    return delete_response
예제 #19
0
def insert_event(calendar_id, event, client_id=client, send_notifications="False"):
    insert_response, insert_model = EventsApi().add_event(calendar_id, event, client_id, send_notifications)
    log_info("Insert event status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(insert_response),
        response=HttpLib.get_response_text(insert_response)))
    assert HttpLib.get_response_status_code(insert_response) == status_code_200, "Error: {response}". \
        format(response=insert_response)
    return insert_response, insert_model
예제 #20
0
def insert_calendar(calendar):
    insert_calendar_response, insert_calendar_model = CalendarsApi().insert_calendar(calendar)
    log_info("Insert calendar status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(insert_calendar_response),
        response=HttpLib.get_response_text(insert_calendar_response)))
    assert HttpLib.get_response_status_code(insert_calendar_response) == status_code_200, "Error: {response}". \
        format(response=insert_calendar_response)
    return insert_calendar_response, insert_calendar_model
예제 #21
0
def import_recurrent_event(calendar_id, recurrent_event):
    import_response, import_model = EventsApi().import_event(calendar_id, recurrent_event)
    log_info("Import recurrent event status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(import_response),
        response=HttpLib.get_response_text(import_response)))
    assert HttpLib.get_response_status_code(import_response) == status_code_200, "Error: {0}". \
        format(import_response)
    return import_response, import_model
예제 #22
0
def patch_event(initial_event_id, new_event, send_notifications=False):
    patch_event_response, patch_event_model = EventsApi().patch_event(initial_event_id, new_event, send_notifications)
    log_info("Patch event status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(patch_event_response),
        response=HttpLib.get_response_text(patch_event_response)))
    assert HttpLib.get_response_status_code(patch_event_response) == status_code_200, "Error: {response}". \
        format(response=patch_event_response)
    return patch_event_response, patch_event_model
def create_random_calendar_list_model(calendar_id):
    """
    Create random model without id
    :param calendar_id: ID created calendar
    :return: model_calendar_list<CalendarListModel>
    """
    model = CalendarListModel().create_model_calendar_list(calendar_id)
    log_info("Create random model calendarList:\nModel:\n{model}".format(model=model))
    return model
예제 #24
0
def create_filters_model(criteria_label):
    """
    Create random model filter
    :param criteria_label: Created label with method label.create
    :return: model<SettingsFiltersModel>
    """
    model = SettingsFiltersModel().get_randomly_model(criteria_label)
    log_info("Create random model settingsFilters:\nModel:\n{model}".format(model=model))
    return model
예제 #25
0
def update_event(calendar_id, initial_event_id, new_event, client_id=client, send_notifications=False):
    update_event_response, update_event_model = EventsApi().\
        update_event(calendar_id, initial_event_id, new_event, client_id, send_notifications)
    log_info("Update event status code is: {status_code}, response text is: {response}".format(
        status_code=HttpLib.get_response_status_code(update_event_response),
        response=HttpLib.get_response_text(update_event_response)))
    assert HttpLib.get_response_status_code(update_event_response) == status_code_200, "Error: {response}". \
        format(response=update_event_response.text)
    return update_event_response, update_event_model
def initialize_attachment_model(size, data):
    """
    :param size: Number of bytes for the message part data
    :param data: The body data of a MIME message part as a base64url encoded string
    :rtype: AttachmentModel
    """
    model = AttachmentModel(size=size, data=data)
    log_info("Initialize attachment model. {model}".format(model=model))
    return model
예제 #27
0
def check_that_models_labels_are_equal(exp_label_model, act_label_model):
    log_info(
        "Check labels model that equals. \nExp label: \n{exp_label_model} \nAct label: \n{act_label_model}"
        .format(exp_label_model=exp_label_model,
                act_label_model=act_label_model))

    assert exp_label_model == act_label_model, "Assert labels error! \nExp label: \n{exp_label_model} \nAct label:" \
                                               "\n{act_label_model}".format(exp_label_model=exp_label_model,
                                                                            act_label_model=act_label_model)
예제 #28
0
def check_address_in_list(forwarding_list, address):
    for forwarding_model in forwarding_list:
        log_info(
            "Model email is: {model_email}, checking address is: {checking_address}"
            .format(model_email=forwarding_model.forwarding_email,
                    checking_address=address))
        if forwarding_model.forwarding_email == address:
            return
    assert False, "No address {address} in models list".format(address=address)
예제 #29
0
def get_thread(user_id, thread_id):
    response, response_model = ThreadsApi().get_thread(user_id, thread_id)
    response_code = HttpLib.get_response_status_code(response)
    response_text = HttpLib.get_response_text(response)
    log_info(
        "Get thread status code is: {code}, response text is: {text}".format(
            code=response_code, text=response_text))
    assert response_code == status_code_200, "Error while getting the {id} thread: {error}".\
        format(id=thread_id, error=response_text)
    return response_model
예제 #30
0
def list_threads(user_id):
    response, response_model = ThreadsApi().list_threads(user_id)
    response_code = HttpLib.get_response_status_code(response)
    response_text = HttpLib.get_response_text(response)
    log_info(
        "List threads status code is: {code}, response text is: {text}".format(
            code=response_code, text=response_text))
    assert response_code == status_code_200, "Error while getting the threads list: {error}". \
        format(error=response_text)
    return response_model