Projet

Général

Profil

0001-matomo-add-services-urls-on-re-configuration-37614.patch

Nicolas Roche, 12 novembre 2019 21:19

Télécharger (9,29 ko)

Voir les différences:

Subject: [PATCH] matomo: add services urls on re-configuration (#37614)

 hobo/matomo/utils.py       | 17 +++++++++--
 tests/test_matomo_utils.py | 60 ++++++++++++++++++++++++++++++++------
 tests/test_matomo_views.py | 10 +++++--
 3 files changed, 72 insertions(+), 15 deletions(-)
hobo/matomo/utils.py
177 177
            raise MatomoException('get_site_id_from_site_url fails')
178 178
        return tag.text
179 179

  
180
    def add_site(self, site_name, site_urls):
180
    def add_site(self, site_name):
181 181
        data = {'method': 'SitesManager.addSite',
182 182
                'siteName': site_name}
183
        tree = self.call(data)
184
        try:
185
            tag = tree.xpath('/result')[0]
186
        except IndexError:
187
            raise MatomoException('add_site fails')
188
        return tag.text
189

  
190
    def add_site_alias_urls(self, id_site, site_urls):
191
        data = {'method': 'SitesManager.addSiteAliasUrls',
192
                'idSite': id_site}
183 193
        cpt = 0
184 194
        for url in site_urls:
185 195
            key = 'urls[%i]' % cpt
......
189 199
        try:
190 200
            tag = tree.xpath('/result')[0]
191 201
        except IndexError:
192
            raise MatomoException('add_site fails')
202
            raise MatomoException('add_site_alias_urls fails')
193 203
        return tag.text
194 204

  
195 205
    def add_user(self, user_login, password, initial_id_site):
......
246 256
        id_site = matomo.get_site_id_from_site_url(tenant_name)
247 257
    except MatomoError as exc:
248 258
        if str(exc) == 'url not found':
249
            id_site = matomo.add_site(tenant_name, site_urls)
259
            id_site = matomo.add_site(tenant_name)
250 260
        else:
251 261
            raise exc
262
    matomo.add_site_alias_urls(id_site, site_urls)
252 263
    return id_site
253 264

  
254 265
def upgrade_user(matomo, user_login, id_site):
tests/test_matomo_utils.py
87 87
<not_result>no result tag</not_result>
88 88
"""
89 89

  
90
ADD_SITE_ALIAS_URLS_SUCCESS = """<?xml version="1.0" encoding="utf-8" ?>
91
<result>1</result>
92
"""
93

  
94
ADD_SITE_ALIAS_URLS_ERROR = """<?xml version="1.0" encoding="utf-8" ?>
95
<result>
96
        <error message="Merci de specifier une valeur pour idSite" />
97
</result>
98
"""
99

  
90 100
USER_ALREADY_THERE = """<?xml version="1.0" encoding="utf-8" ?>
91 101
<result>
92 102
    <error message="Username 'hobo.dev.publik.love' already exists." />
......
352 362
def test_add_site(mocked_post):
353 363
    """webservice to add a new site"""
354 364
    mocked_post.return_value.status_code = 200
355
    urls = ['https://combo.dev.publik.love',
356
            'https://wcs.dev.publik.love']
357 365
    with override_settings(MATOMO_SERVER=CONFIG):
358 366
        matomo = MatomoWS()
359 367

  
360 368
        # success
361 369
        content = ADD_SITE_SUCCESS
362 370
        mocked_post.return_value.content = content
363
        site_id = matomo.add_site("hobo.dev.publik.love", urls)
371
        site_id = matomo.add_site("hobo.dev.publik.love")
364 372
        assert site_id == '42'
365 373

  
366 374
        # error
......
368 376
        mocked_post.return_value.content = content
369 377
        with pytest.raises(MatomoError,
370 378
                           match="Please specify a value for 'siteName'."):
371
            site_id = matomo.add_site("hobo.dev.publik.love", urls)
379
            site_id = matomo.add_site("hobo.dev.publik.love")
372 380

  
373 381
        # strange message
374 382
        content = ADD_SITE_BAD_RESPONSE
375 383
        mocked_post.return_value.content = content
376 384
        with pytest.raises(MatomoException, match='add_site fails'):
377
            site_id = matomo.add_site("hobo.dev.publik.love", urls)
385
            site_id = matomo.add_site("hobo.dev.publik.love")
386

  
387
@mock.patch('requests.post')
388
def test_add_site_alias_url(mocked_post):
389
    """webservice to add a new site"""
390
    mocked_post.return_value.status_code = 200
391
    urls = ['https://combo.dev.publik.love',
392
            'https://wcs.dev.publik.love']
393
    with override_settings(MATOMO_SERVER=CONFIG):
394
        matomo = MatomoWS()
395

  
396
        # success
397
        content = ADD_SITE_ALIAS_URLS_SUCCESS
398
        mocked_post.return_value.content = content
399
        site_id = matomo.add_site_alias_urls('42', urls)
400
        assert site_id == '1'
401

  
402
        # error
403
        content = ADD_SITE_ALIAS_URLS_ERROR
404
        mocked_post.return_value.content = content
405
        with pytest.raises(MatomoError,
406
                           match="Merci de specifier une valeur pour idSite"):
407
            site_id = matomo.add_site_alias_urls(None, urls)
408

  
409
        # strange message
410
        content = ADD_SITE_BAD_RESPONSE
411
        mocked_post.return_value.content = content
412
        with pytest.raises(MatomoException, match='add_site_alias_urls fails'):
413
            site_id = matomo.add_site_alias_urls('42', urls)
378 414

  
379 415
@mock.patch('requests.post')
380 416
def test_add_user(mocked_post):
......
525 561
        matomo = MatomoWS()
526 562

  
527 563
        # site not already here
528
        contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS]
564
        contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS, ADD_SITE_ALIAS_URLS_SUCCESS]
529 565
        mocked_post.side_effect = requests_post_mocked_replies(contents)
530 566
        site_id = upgrade_site(matomo, "hobo.dev.publik.love", urls)
531 567
        assert site_id == '42'
532 568

  
533 569
        # site already here
534
        contents = [GET_SITE_42_FROM_URL]
570
        contents = [GET_SITE_42_FROM_URL, ADD_SITE_ALIAS_URLS_SUCCESS]
535 571
        mocked_post.side_effect = requests_post_mocked_replies(contents)
536 572
        site_id = upgrade_site(matomo, "hobo.dev.publik.love", urls)
537 573
        assert site_id == '42'
538 574

  
575
        # error while updating urls
576
        contents = [GET_SITE_42_FROM_URL, ADD_SITE_ALIAS_URLS_ERROR]
577
        mocked_post.side_effect = requests_post_mocked_replies(contents)
578
        with pytest.raises(MatomoException):
579
            upgrade_site(matomo, "hobo.dev.publik.love", urls)
580

  
539 581
        # error while adding new site
540 582
        contents = [GET_NO_SITE_FROM_URL, MATOMO_ERROR]
541 583
        mocked_post.side_effect = requests_post_mocked_replies(contents)
......
663 705
    Fargo.objects.create(base_url='https://fargo.dev.publik.love')
664 706

  
665 707
    with override_settings(MATOMO_SERVER=CONFIG):
666
        contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS,
708
        contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS, ADD_SITE_ALIAS_URLS_SUCCESS,
667 709
                    DEL_UNKNOWN_USER, MATOMO_SUCCESS,
668 710
                    JAVASCRIPT_TAG, PING_SUCCESS]
669 711
        mocked_post.side_effect = requests_post_mocked_replies(contents)
......
696 738
    Fargo.objects.create(base_url='https://fargo.dev.publik.love')
697 739

  
698 740
    with override_settings(MATOMO_SERVER=CONFIG):
699
        contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS,
741
        contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS, ADD_SITE_ALIAS_URLS_SUCCESS,
700 742
                    DEL_UNKNOWN_USER, MATOMO_SUCCESS,
701 743
                    JAVASCRIPT_TAG_BAD_RESPONSE]
702 744
        mocked_post.side_effect = requests_post_mocked_replies(contents)
tests/test_matomo_views.py
28 28
<result>42</result>
29 29
"""
30 30

  
31
ADD_SITE_ALIAS_URLS_SUCCESS = """<?xml version="1.0" encoding="utf-8" ?>
32
<result>1</result>
33
"""
34

  
31 35
DEL_UNKNOWN_USER = """<?xml version="1.0" encoding="utf-8" ?>
32 36
<result>
33 37
        <error message="User 'hobo.dev.publik.love' doesn't exist." />
......
161 165
    Wcs.objects.create(base_url='https://wcs.dev.publik.love')
162 166
    Fargo.objects.create(base_url='https://fargo.dev.publik.love')
163 167

  
164
    contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS,
168
    contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS, ADD_SITE_ALIAS_URLS_SUCCESS,
165 169
                DEL_UNKNOWN_USER, MATOMO_SUCCESS,
166 170
                JAVASCRIPT_TAG, PING_SUCCESS]
167 171

  
......
185 189
    Wcs.objects.create(base_url='https://wcs.dev.publik.love')
186 190
    Fargo.objects.create(base_url='https://fargo.dev.publik.love')
187 191

  
188
    contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS,
192
    contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS, ADD_SITE_ALIAS_URLS_SUCCESS,
189 193
                DEL_UNKNOWN_USER, MATOMO_SUCCESS,
190 194
                JAVASCRIPT_TAG, PING_ERROR]
191 195

  
......
212 216
    Wcs.objects.create(base_url='https://wcs.dev.publik.love')
213 217
    Fargo.objects.create(base_url='https://fargo.dev.publik.love')
214 218

  
215
    contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS,
219
    contents = [GET_NO_SITE_FROM_URL, ADD_SITE_SUCCESS, ADD_SITE_ALIAS_URLS_SUCCESS,
216 220
                DEL_UNKNOWN_USER, MATOMO_SUCCESS,
217 221
                JAVASCRIPT_TAG_BAD_RESPONSE]
218 222

  
219
-