Revision dcfe7455 kamaki/clients/pithos/test.py
b/kamaki/clients/pithos/test.py | ||
---|---|---|
826 | 826 |
r = self.client.upload_object(obj, tmpFile) |
827 | 827 |
self.assert_dicts_are_equal(r, exp_headers) |
828 | 828 |
self.assertEqual(GCI.mock_calls[-1], call()) |
829 |
|
|
829 | 830 |
[call1, call2] = OP.mock_calls |
831 |
(args1, kwargs1) = call1[1:3] |
|
832 |
(args2, kwargs2) = call2[1:3] |
|
833 |
self.assertEqual(args1, (obj,)) |
|
834 |
expected1 = dict( |
|
835 |
hashmap=True, |
|
836 |
success=(201, 409), |
|
837 |
format='json', |
|
838 |
json=dict( |
|
839 |
hashes=['s0m3h@5h'] * num_of_blocks, |
|
840 |
bytes=num_of_blocks * 4 * 1024 * 1024), |
|
841 |
content_encoding=None, |
|
842 |
content_type='application/octet-stream', |
|
843 |
content_disposition=None, |
|
844 |
public=None, |
|
845 |
permissions=None) |
|
846 |
for k, v in expected1.items(): |
|
847 |
if k == 'json': |
|
848 |
self.assertEqual(len(v['hashes']), len(kwargs1[k]['hashes'])) |
|
849 |
self.assertEqual(v['bytes'], kwargs1[k]['bytes']) |
|
850 |
else: |
|
851 |
self.assertEqual(v, kwargs1[k]) |
|
830 | 852 |
|
853 |
(args2, kwargs2) = call2[1:3] |
|
854 |
self.assertEqual(args2, (obj,)) |
|
855 |
expected2 = dict( |
|
856 |
json=dict( |
|
857 |
hashes=['s0m3h@5h'] * num_of_blocks, |
|
858 |
bytes=num_of_blocks * 4 * 1024 * 1024), |
|
859 |
content_type='application/octet-stream', |
|
860 |
hashmap=True, |
|
861 |
success=201, |
|
862 |
format='json') |
|
863 |
for k, v in expected2.items(): |
|
864 |
if k == 'json': |
|
865 |
self.assertEqual(len(v['hashes']), len(kwargs2[k]['hashes'])) |
|
866 |
self.assertEqual(v['bytes'], kwargs2[k]['bytes']) |
|
867 |
else: |
|
868 |
self.assertEqual(v, kwargs2[k]) |
|
869 |
|
|
870 |
mock_offset = 2 |
|
871 |
|
|
872 |
# With progress bars |
|
873 |
try: |
|
874 |
from progress.bar import ShadyBar |
|
875 |
blck_bar = ShadyBar('Mock blck calc.') |
|
876 |
upld_bar = ShadyBar('Mock uplds') |
|
877 |
except ImportError: |
|
878 |
blck_bar = None |
|
879 |
upld_bar = None |
|
880 |
|
|
881 |
if blck_bar and upld_bar: |
|
882 |
|
|
883 |
def blck_gen(n): |
|
884 |
for i in blck_bar.iter(range(n)): |
|
885 |
yield |
|
886 |
yield |
|
887 |
|
|
888 |
def upld_gen(n): |
|
889 |
for i in upld_bar.iter(range(n)): |
|
890 |
yield |
|
891 |
yield |
|
892 |
|
|
893 |
tmpFile.seek(0) |
|
894 |
r = self.client.upload_object( |
|
895 |
obj, tmpFile, |
|
896 |
hash_cb=blck_gen, upload_cb=upld_gen) |
|
897 |
self.assert_dicts_are_equal(r, exp_headers) |
|
898 |
|
|
899 |
for i, c in enumerate(OP.mock_calls[-mock_offset:]): |
|
900 |
self.assertEqual(OP.mock_calls[i], c) |
|
901 |
|
|
902 |
# With content-type |
|
903 |
tmpFile.seek(0) |
|
904 |
ctype = 'video/mpeg' |
|
905 |
sharing = dict(read=['u1', 'g1', 'u2'], write=['u1']) |
|
906 |
r = self.client.upload_object(obj, tmpFile, |
|
907 |
content_type=ctype, sharing=sharing) |
|
908 |
self.assert_dicts_are_equal(r, exp_headers) |
|
909 |
self.assertEqual(OP.mock_calls[-1][2]['content_type'], ctype) |
|
910 |
self.assert_dicts_are_equal( |
|
911 |
OP.mock_calls[-2][2]['permissions'], |
|
912 |
sharing) |
|
913 |
|
|
914 |
# With other args |
|
915 |
tmpFile.seek(0) |
|
916 |
kwargs = dict( |
|
917 |
etag='s0m3E74g', |
|
918 |
if_etag_match='if etag match', |
|
919 |
if_not_exist=True, |
|
920 |
content_type=ctype, |
|
921 |
content_disposition=ctype + 'd15p051710n', |
|
922 |
public=True, |
|
923 |
content_encoding='802.11', |
|
924 |
container_info_cache={}) |
|
925 |
r = self.client.upload_object(obj, tmpFile, **kwargs) |
|
926 |
self.assert_dicts_are_equal(r, exp_headers) |
|
927 |
|
|
928 |
kwargs.pop('if_not_exist') |
|
929 |
ematch = kwargs.pop('if_etag_match') |
|
930 |
etag = kwargs.pop('etag') |
|
931 |
self.assert_dicts_are_equal( |
|
932 |
kwargs.pop('container_info_cache'), |
|
933 |
{self.client.container: container_info}) |
|
934 |
for arg, val in kwargs.items(): |
|
935 |
self.assertEqual(OP.mock_calls[-2][2][arg], val) |
|
936 |
self.assertEqual(OP.mock_calls[-1][2]['if_etag_match'], ematch) |
|
937 |
self.assertEqual(OP.mock_calls[-1][2]['if_etag_not_match'], '*') |
|
938 |
self.assertEqual(OP.mock_calls[-1][2]['etag'], etag) |
|
939 |
|
|
940 |
@patch('%s.get_container_info' % pithos_pkg, return_value=container_info) |
|
941 |
@patch('%s.container_post' % pithos_pkg, return_value=FR()) |
|
942 |
@patch('%s.object_put' % pithos_pkg, return_value=FR()) |
|
943 |
def test_upload_from_string(self, OP, CP, GCI): |
|
944 |
num_of_blocks = 2 |
|
945 |
tmpFile = self._create_temp_file(num_of_blocks) |
|
946 |
tmpFile.seek(0) |
|
947 |
src_str = tmpFile.read() |
|
948 |
|
|
949 |
exp_headers = dict(id='container id', name='container name') |
|
950 |
FR.headers = dict(exp_headers) |
|
951 |
r = self.client.upload_from_string(obj, src_str) |
|
952 |
self.assert_dicts_are_equal(r, exp_headers) |
|
953 |
self.assertEqual(GCI.mock_calls[-1], call()) |
|
954 |
|
|
955 |
[call1, call2] = OP.mock_calls |
|
831 | 956 |
(args1, kwargs1) = call1[1:3] |
832 | 957 |
(args2, kwargs2) = call2[1:3] |
833 | 958 |
self.assertEqual(args1, (obj,)) |
Also available in: Unified diff