1+ import re
12import unittest
23
3- import pytest
44import mock
5- from nose .tools import assert_true , assert_equal # noqa (PEP8 asserts)
5+ from nose .tools import assert_equal # noqa (PEP8 asserts)
66from addons .rushfiles .client import RushFilesClient
77import jwt
8- from requests import Response
98import copy
109
11- class FakeResponse ():
12- def __init__ (self ):
13- self .response = {
14- 'Data' : [
15- {
16- 'Id' : 'fake' ,
17- 'Name' : 'fakeName' ,
18- }
19- ],
20- 'Message' : 'string' ,
21- 'ResponseInfo' : {
22- 'ResponseCode' : 1000 ,
23- 'Reference' : 'string'
10+ class FakeSharesResponse ():
11+ def __init__ (self , domain = 'example.com' ):
12+ self .response = {
13+ 'Data' : [
14+ {
15+ 'Id' : 'fake' ,
16+ 'Name' : 'fakeName' ,
17+ 'CompanyId' : 'fakeCompanyId_' + domain
2418 }
19+ ],
20+ 'Message' : 'string' ,
21+ 'ResponseInfo' : {
22+ 'ResponseCode' : 1000 ,
23+ 'Reference' : 'string'
2524 }
25+ }
2626
27- def json (self ):
28- return copy .deepcopy (self .response )
27+ def json (self ):
28+ return copy .deepcopy (self .response )
29+
30+ class FakeCompaniesResponse ():
31+ def __init__ (self , domain = 'example.com' ):
32+ self .response = {
33+ 'Data' : [
34+ {
35+ 'Id' : 'fakeCompanyId_' + domain ,
36+ 'Name' : 'fakeCompanyName_' + domain
37+ }
38+ ],
39+ 'Message' : 'string' ,
40+ 'ResponseInfo' : {
41+ 'ResponseCode' : 1000 ,
42+ 'Reference' : 'string'
43+ }
44+ }
45+
46+ def json (self ):
47+ return copy .deepcopy (self .response )
48+
49+ def args_based_response (method , url , ** kwargs ):
50+ domain = re .findall (r'clientgateway.(.*)/api' , url )[0 ]
51+ if url .endswith ('shares' ):
52+ return FakeSharesResponse (domain )
53+ else :
54+ return FakeCompaniesResponse (domain )
2955
3056class TestClient (unittest .TestCase ):
3157
@@ -35,50 +61,44 @@ def setUp(self):
3561
3662 @mock .patch .object (jwt , 'decode' )
3763 @mock .patch .object (RushFilesClient , '_make_request' )
38- def test_shares_only_primary_domain (self , mock_response , mock_payload ):
39- fake_response = FakeResponse ()
40-
41- mock_payload .return_value = {
64+ def test_shares_only_primary_domain (self , mock_response , mock_access_token ):
65+ mock_access_token .return_value = {
4266 'primary_domain' : 'fake.net' ,
4367 }
44- mock_response .return_value = fake_response
68+ mock_response .side_effect = args_based_response
4569 res = self .client .shares ('fakeId' )
4670
4771 assert_equal (len (res ), 1 )
48- assert_equal (res [0 ]['Id' ], fake_response . response [ 'Data' ][ 0 ][ 'Id' ] + '@' + ' fake.net' )
49- assert_equal (res [0 ]['Name' ], fake_response . response [ 'Data' ][ 0 ][ 'Name' ] )
72+ assert_equal (res [0 ]['Id' ], 'fake@ fake.net' )
73+ assert_equal (res [0 ]['Name' ], 'fakeName @ fakeCompanyName_fake.net' )
5074
5175 @mock .patch .object (jwt , 'decode' )
5276 @mock .patch .object (RushFilesClient , '_make_request' )
5377 def test_shares_one_domain (self ,mock_response , mock_payload ):
54- fake_response = FakeResponse ()
55-
5678 mock_payload .return_value = {
5779 'primary_domain' : 'fake.net' ,
5880 'domains' : 'fake.com'
5981 }
60- mock_response .return_value = fake_response
82+ mock_response .side_effect = args_based_response
6183 res = self .client .shares ('fakeId' )
6284
6385 assert_equal (len (res ), 2 )
64- assert_equal (res [0 ]['Id' ], fake_response . response [ 'Data' ][ 0 ][ 'Id' ] + '@' + ' fake.net ' )
65- assert_equal (res [0 ]['Name' ], fake_response . response [ 'Data' ][ 0 ][ 'Name' ] )
86+ assert_equal (res [0 ]['Id' ], 'fake@ fake.com ' )
87+ assert_equal (res [0 ]['Name' ], 'fakeName @ fakeCompanyName_fake.com' )
6688
6789 @mock .patch .object (jwt , 'decode' )
6890 @mock .patch .object (RushFilesClient , '_make_request' )
6991 def test_shares_some_domains (self ,mock_response , mock_payload ):
70- fake_response = FakeResponse ()
71-
7292 mock_payload .return_value = {
7393 'primary_domain' : 'fake.net' ,
7494 'domains' : [
7595 'fake.com' ,
7696 'fake.jp'
7797 ]
7898 }
79- mock_response .return_value = fake_response
99+ mock_response .side_effect = args_based_response
80100 res = self .client .shares ('fakeId' )
81101
82102 assert_equal (len (res ), 3 )
83- assert_equal (res [0 ]['Id' ], fake_response . response [ 'Data' ][ 0 ][ 'Id' ] + '@' + ' fake.net ' )
84- assert_equal (res [0 ]['Name' ], fake_response . response [ 'Data' ][ 0 ][ 'Name' ] )
103+ assert_equal (res [1 ]['Id' ], 'fake@ fake.jp ' )
104+ assert_equal (res [1 ]['Name' ], 'fakeName @ fakeCompanyName_fake.jp' )
0 commit comments