Projet

Général

Profil

0001-base-expand-description-list-fields-on-display-48731.patch

Nicolas Roche, 04 décembre 2020 18:13

Télécharger (3,97 ko)

Voir les différences:

Subject: [PATCH] base: expand description list fields on display (#48731)

 passerelle/apps/ovh/models.py | 2 +-
 passerelle/base/models.py     | 2 ++
 tests/test_sms.py             | 3 +++
 3 files changed, 6 insertions(+), 1 deletion(-)
passerelle/apps/ovh/models.py
77 77
                                    verbose_name=_('Message class'))
78 78
    credit_threshold_alert = models.PositiveIntegerField(verbose_name=_('Credit alert threshold'),
79 79
                                                         default=500)
80 80
    credit_left = models.PositiveIntegerField(verbose_name=_('Credit left'), default=0, editable=False)
81 81
    alert_emails = ArrayField(
82 82
        models.EmailField(blank=True),
83 83
        blank=True,
84 84
        null=True,
85
        verbose_name=_('Email addresses to send credit alerts to'),
85
        verbose_name=_('Email addresses list to send credit alerts to, separated by comma'),
86 86
    )
87 87
    credit_alert_timestamp = models.DateTimeField(null=True, editable=False)
88 88

  
89 89
    TEST_DEFAULTS = {
90 90
        'create_kwargs': {
91 91
            'account': '1234',
92 92
            'username': 'john',
93 93
            'password': 'doe',
passerelle/base/models.py
266 266
                continue
267 267
            if hasattr(self, 'get_%s_display' % field.name):
268 268
                value = getattr(self, 'get_%s_display' % field.name)()
269 269
            else:
270 270
                value = getattr(self, field.name, None)
271 271
                if isinstance(field, models.URLField) and value:
272 272
                    # hide http authentication part
273 273
                    value = re.sub(r'://([^/]*:[^/]*?)@', '://***:***@', value)
274
                elif isinstance(value, list):
275
                    value = ', '.join(value)
274 276
            fields.append((field, value))
275 277
        return fields
276 278

  
277 279
    def get_endpoints_infos(self):
278 280
        endpoints = []
279 281
        for name, method in inspect.getmembers(self, predicate=inspect.ismethod):
280 282
            if hasattr(method, 'endpoint_info'):
281 283
                method.endpoint_info.object = self
tests/test_sms.py
121 121
def test_manage_views_ovh(app, connector):
122 122
    connector.default_country_code = '44'
123 123
    connector.account = 'secret'
124 124
    connector.application_key = 'secret'
125 125
    connector.application_secret = 'secret'
126 126
    connector.consumer_key = 'secret'
127 127
    connector.password = 'secret'
128 128
    connector.username = 'secret'
129
    connector.alert_emails = ['test@entrouvert.org', 'foo@example.com']
129 130
    connector.save()
130 131
    url = '/%s/%s/' % (connector.get_connector_slug(), connector.slug)
131 132
    resp = app.get(url)
132 133
    description_fields = [
133 134
        x.text for x in resp.html.find('div', {'id': 'description'}).find_all('p')]
134 135
    assert any(x for x in description_fields if 'Default country code' in x)
135 136
    assert any(x for x in description_fields if '44' in x)
136 137
    assert not any(x for x in description_fields if 'secret' in x)
138
    alert_emails_filed = [x for x in description_fields if 'send credit alerts to' in x]
139
    assert alert_emails_filed[0].split(':')[1].strip() == 'test@entrouvert.org, foo@example.com'
137 140

  
138 141

  
139 142
@pytest.mark.parametrize('connector', [OVHSMSGateway], indirect=True)
140 143
def test_sms_max_message_length(app, connector):
141 144
    path = '/%s/%s/send/' % (connector.get_connector_slug(), connector.slug)
142 145

  
143 146
    message_above_limit = 'a' * (connector.max_message_length + 1)
144 147
    payload = {
145
-