| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- import os
- import jwt
- import tempfile
- from .context import create_app
- USERS = os.environ.get('USERS').split(',')
- def get_test_client():
- flask_app = create_app()
- flask_app.config.update({
- "TESTING": True,
- })
- return flask_app.test_client()
- def get_token():
- any_user = USERS[0]
- return jwt.encode({'aktivisda_user': any_user},
- os.environ.get('SECRET_KEY'), 'HS256')
- def asset(filename):
- current_dir = os.path.dirname(os.path.abspath(__file__))
- return os.path.join(current_dir, 'assets', filename)
- def same_files(filename1, filename2):
- if os.path.getsize(filename1) != os.path.getsize(filename2):
- return False
- return True
- def test_hello_world():
- '''
- Test endpoint
- GET /
- Should return 200 "hello world"
- '''
- with get_test_client() as test_client:
- response = test_client.get('/')
- assert response.status_code == 200
- assert response.data == b'hello world'
- return
- def test_vectorize():
- '''
- Test endpoint
- POST /vectorize
- '''
- my_image = open(asset('elephant-wikimedia.png'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/vectorize',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- tempfilename = tempfile.NamedTemporaryFile(delete=True, suffix='.svg').name
- with open(tempfilename, 'wb') as fd:
- fd.write(response.data)
- assert same_files(tempfilename, asset('elephant-wikimedia.svg'))
- def test_canonize():
- '''
- Test endpoint
- POST /canonize
- '''
- my_image = open(asset('elephant-wikimedia.svg'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/canonize',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- tempfilename = tempfile.NamedTemporaryFile(delete=True, suffix='.svg').name
- with open(tempfilename, 'wb') as fd:
- fd.write(response.data)
- assert same_files(tempfilename, asset('elephant-wikimedia.svg'))
- def test_posterize():
- '''
- Test endpoint
- POST /posterize
- '''
- my_image = open(asset('elephant-wikimedia-red.png'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/posterize?nb_colors=2&white_is_alpha=true',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- tempfilename = tempfile.NamedTemporaryFile(delete=True, suffix='.svg').name
- with open(tempfilename, 'wb') as fd:
- fd.write(response.data)
- assert same_files(tempfilename, asset('elephant-wikimedia-red_posterized.png'))
- def test_hitpath():
- '''
- Test endpoint
- POST /hitform
- '''
- my_image = open(asset('elephant-wikimedia.svg'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/hitform',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- response_dict = response.json
- assert 'hitpath' in response_dict
- assert response_dict['hitpath'] == 'M 98.0469 1.99308 C 87.1171 4.88627 67.8292 20.6381 49.1842 42.1762 C 28.6104 65.6432 0 107.755 0 113.863 C 0 120.935 50.1486 159.19 75.2229 171.084 C 87.76 177.192 106.726 184.907 117.335 188.121 S 137.587 194.872 139.194 195.837 C 140.48 197.122 139.516 203.23 136.623 209.66 C 134.051 216.089 131.801 227.983 131.801 236.02 C 131.801 255.629 139.516 263.344 159.125 263.344 C 167.162 263.344 173.591 262.38 173.591 261.094 C 173.591 260.13 169.734 254.022 164.912 247.914 L 156.554 236.663 L 162.34 219.625 C 168.448 201.623 170.698 200.016 184.2 205.159 C 191.272 208.052 191.915 210.624 195.772 249.843 C 198.023 272.667 198.666 296.777 197.38 303.527 C 194.486 318.958 198.023 321.208 227.276 321.208 C 243.992 321.208 251.707 319.922 255.243 316.065 C 261.351 310.278 261.673 307.707 256.529 302.563 C 253.636 299.67 253.958 287.776 257.172 252.415 L 261.03 206.124 L 271.317 204.195 C 282.889 201.944 287.39 206.124 293.176 225.411 C 296.391 236.341 296.069 237.949 286.426 249.2 C 275.174 263.344 277.746 267.523 296.069 264.63 C 320.501 260.451 326.93 245.985 317.929 216.732 C 314.714 206.124 313.107 196.801 314.393 195.837 C 315.679 194.551 325.323 191.336 335.931 188.121 S 365.506 177.192 377.722 171.084 C 403.439 157.904 453.266 120.614 453.266 113.863 C 453.266 101.647 398.938 32.5323 373.864 12.9229 C 355.541 -1.54303 334.002 -3.47182 295.427 5.20774 C 261.351 12.9229 187.414 12.9229 152.696 4.88627 C 130.515 0.064293 110.906 -1.22157 98.0469 1.99308 Z M 148.838 18.7093 C 155.589 20.3166 162.018 22.5669 163.304 23.8527 C 164.59 24.8171 160.09 30.6035 153.339 36.0684 L 141.445 46.3553 L 148.195 80.1091 C 154.303 110.648 163.947 134.758 170.055 134.758 C 171.341 134.758 177.127 129.615 183.235 123.507 C 194.165 112.256 205.738 108.72 205.738 116.435 C 205.738 119.006 202.845 123.507 199.308 126.722 C 193.844 131.544 193.522 133.151 197.38 136.044 C 199.951 137.973 202.845 146.331 204.13 154.689 C 206.059 169.798 205.738 170.119 198.023 170.119 C 189.986 170.119 189.664 169.155 189.664 153.082 L 189.343 136.366 L 182.914 144.402 C 171.662 158.225 168.448 161.761 157.197 171.405 C 146.91 180.085 145.624 180.406 132.122 176.87 C 102.869 169.155 69.115 152.439 44.6837 134.115 C 30.5392 123.507 19.2879 113.22 19.2879 110.648 C 19.2879 101.004 69.4365 38.3187 88.0815 24.8171 C 98.3684 17.4234 103.833 15.8161 118.621 15.8161 C 128.586 15.8161 142.088 17.102 148.838 18.7093 Z M 361.97 22.2454 C 378.686 32.5323 433.978 100.683 433.978 110.97 C 433.978 115.149 402.153 140.223 380.615 152.76 C 364.863 162.083 317.608 179.763 308.607 179.763 C 305.071 179.763 302.177 178.478 302.177 176.87 C 302.177 175.584 296.712 170.441 289.64 165.619 C 282.889 160.797 275.817 153.403 273.888 149.224 C 268.423 137.33 264.244 139.58 262.959 154.689 C 262.316 164.655 260.387 168.834 256.529 169.476 C 251.707 170.441 250.743 168.191 250.743 154.368 C 250.743 143.116 252.35 137.33 255.565 135.401 C 260.065 133.151 259.744 131.865 253.958 126.722 C 250.421 123.507 247.528 119.006 247.528 116.435 C 247.528 108.72 259.101 112.256 270.031 123.507 C 276.139 129.615 281.925 134.758 283.211 134.758 C 288.676 134.758 298.641 111.934 303.463 89.1102 C 311.5 50.8558 310.535 44.748 296.712 33.1752 L 284.497 22.8883 L 298.963 19.6737 C 324.68 13.8873 350.076 15.1732 361.97 22.2454 Z M 188.7 94.8965 C 190.307 99.7185 182.271 102.612 176.806 99.3971 C 174.556 98.1112 173.913 95.218 175.199 93.2892 C 177.77 88.7887 187.093 89.7531 188.7 94.8965 Z M 277.746 92.6463 C 280.639 97.4683 270.352 104.219 266.173 100.04 C 264.566 98.4327 263.923 95.218 264.887 93.2892 C 267.781 89.1102 275.496 88.7887 277.746 92.6463 Z M 182.271 170.441 C 185.164 173.334 183.557 177.513 175.52 187.479 C 162.983 202.909 155.911 216.089 153.017 229.912 C 151.089 237.949 152.375 242.128 159.768 250.486 L 168.769 261.094 L 157.518 259.165 C 145.302 256.594 135.015 246.95 135.015 237.306 C 135.015 219.947 164.269 166.905 173.591 166.905 C 176.484 166.905 180.342 168.512 182.271 170.441 Z M 296.712 185.228 C 320.179 221.554 323.073 249.521 303.463 256.915 C 287.711 263.023 284.818 261.094 293.819 250.164 C 298.32 244.699 302.177 238.913 302.177 237.306 C 302.177 228.626 288.354 200.016 277.746 187.157 C 268.423 175.584 266.816 172.048 270.352 169.798 C 279.353 164.012 285.14 167.226 296.712 185.228 Z M 239.492 179.763 C 240.456 181.371 237.884 183.621 233.384 184.907 C 224.383 187.157 212.167 183.942 212.167 179.442 C 212.167 175.584 236.92 175.584 239.492 179.763 Z M 205.738 186.193 C 205.738 187.8 202.523 189.407 198.666 189.407 C 192.558 189.407 192.236 188.764 196.094 186.193 C 202.202 182.014 205.738 182.014 205.738 186.193 Z M 257.172 186.193 C 261.03 188.764 260.708 189.407 254.922 189.407 C 250.743 189.407 247.528 187.8 247.528 186.193 C 247.528 182.014 251.064 182.014 257.172 186.193 Z M 212.489 221.875 C 213.774 229.59 215.703 249.2 216.989 265.273 C 219.239 293.562 218.918 294.526 212.167 296.455 C 203.809 298.706 203.488 298.063 200.916 260.13 C 199.951 243.413 198.344 224.447 197.38 218.018 C 195.451 207.409 196.094 206.445 202.845 207.088 C 209.274 207.409 210.881 209.981 212.489 221.875 Z M 232.741 209.338 C 227.919 211.588 223.74 211.588 219.882 209.017 C 214.739 206.124 216.025 205.802 226.633 205.802 C 237.884 205.802 238.527 206.445 232.741 209.338 Z M 256.208 220.589 C 254.922 229.269 253.315 249.521 252.029 265.595 C 249.778 294.205 249.457 295.491 242.385 295.491 C 233.384 295.491 233.705 298.063 237.884 250.486 C 242.063 206.124 242.063 205.481 251.064 205.481 C 257.494 205.481 257.815 206.766 256.208 220.589 Z M 231.455 234.412 C 231.455 236.02 229.526 237.627 226.954 237.627 S 221.168 236.02 220.204 234.412 C 219.239 232.484 221.168 231.198 224.704 231.198 C 228.562 231.198 231.455 232.484 231.455 234.412 ZM 94.8322 24.8171 C 76.1873 36.3899 20.2523 106.148 24.1099 112.577 C 27.646 117.721 66.5433 145.367 81.9736 153.082 C 96.761 160.797 139.516 176.549 144.981 176.549 C 146.267 176.549 151.089 167.226 155.911 155.975 L 164.59 135.401 L 157.839 126.4 C 153.982 120.614 148.517 102.612 144.016 80.4306 L 136.623 44.105 L 147.231 35.104 C 153.339 30.282 156.875 25.46 155.268 24.4957 S 141.445 21.6025 128.265 20.6381 C 108.012 19.0307 102.869 19.6737 94.8322 24.8171 ZM 316.643 20.6381 C 315.036 21.281 309.25 22.5669 304.106 23.8527 L 294.784 25.7815 L 305.392 34.7825 L 316.322 43.7836 L 309.25 80.1091 C 304.749 103.898 299.927 119.971 295.427 126.079 L 288.676 135.401 L 297.355 155.975 C 307.321 179.442 305.071 179.442 347.504 163.047 C 372.257 153.725 400.867 137.008 420.477 119.971 L 431.085 110.648 L 415.333 88.1458 C 395.081 59.2139 368.078 29.6391 356.505 23.8527 C 348.468 19.6737 325.323 17.7449 316.643 20.6381 Z'
- def test_hull():
- '''
- Test endpoint
- POST /hull
- '''
- my_image = open(asset('elephant-wikimedia.svg'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/hull',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- response_dict = response.json
- assert 'hull' in response_dict
- assert response_dict['hull'] == 'M 97.5655 1.69975 C 87.1404 4.64598 78.5283 10.8784 62.8907 26.5161 C 47.7062 41.8138 34.1083 58.5846 16.6575 83.6276 C 3.05955 103.005 0 108.557 0 113.543 C 0 117.283 0.906532 118.529 9.97185 126.914 C 23.2299 139.379 47.9329 157.963 61.7575 165.782 C 81.8145 177.114 111.957 189.125 133.487 194.338 C 142.552 196.491 142.552 196.604 138.473 204.423 C 133.713 213.828 131.221 224.027 130.654 235.698 C 130.087 247.483 130.201 247.71 133.6 253.036 C 139.493 262.101 145.498 264.707 163.969 265.841 L 175.641 266.634 L 175.641 263.121 C 175.641 260.288 173.941 257.682 167.595 250.769 C 163.176 245.897 159.21 240.911 158.643 239.551 C 157.283 236.265 159.323 227.993 164.422 215.415 C 166.915 209.409 168.842 204.423 168.842 204.196 C 168.842 203.403 181.08 204.99 185.952 206.236 C 188.332 206.916 190.372 208.049 190.712 208.842 C 190.938 209.636 193.205 229.919 195.584 253.942 L 199.89 297.796 L 196.831 301.422 C 191.278 307.994 193.318 316.946 201.25 320.232 C 206.576 322.499 246.69 322.499 252.016 320.232 C 260.061 316.946 261.988 307.881 256.322 301.195 L 253.149 297.456 L 257.568 252.696 C 260.061 228.106 262.214 207.709 262.441 207.483 C 263.008 206.803 277.625 204.083 280.685 203.97 C 283.631 203.97 286.804 209.522 291.45 222.667 C 296.889 237.851 296.889 237.738 287.937 247.37 C 277.285 258.928 276.039 260.968 277.625 264.141 C 278.872 266.407 279.552 266.52 289.41 265.954 C 311.734 264.707 321.026 257.908 323.519 241.251 C 324.538 234.792 321.139 220.061 315.586 206.689 C 313.32 201.25 311.62 196.831 311.847 196.717 C 312.074 196.604 318.873 194.564 326.918 192.185 C 356.154 183.686 385.049 170.768 404.313 157.623 C 417.231 148.671 438.535 131.674 446.807 123.742 C 456.326 114.336 456.099 113.09 442.048 92.1263 C 421.084 60.7376 401.82 36.6012 385.616 21.5301 C 375.418 12.0115 369.525 7.81884 360.573 3.62613 C 354.341 0.679899 353.321 0.566582 334.85 0.566582 C 313.547 0.566582 303.348 2.15301 278.985 9.51859 C 266.407 13.3713 266.18 13.3713 259.155 11.6716 C 243.744 8.04547 208.502 8.04547 193.998 11.7849 C 186.746 13.598 186.746 13.598 175.867 10.1985 C 153.204 3.17286 141.192 1.01985 121.815 0.453266 C 107.877 0.113317 102.325 0.339949 97.5655 1.69975 Z'
- def test_preview():
- '''
- Test endpoint
- POST /preview
- '''
- my_image = open(asset('elephant-wikimedia.png'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/preview',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- tempfilename = tempfile.NamedTemporaryFile(delete=True, suffix='.png').name
- with open(tempfilename, 'wb') as fd:
- fd.write(response.data)
- assert same_files(tempfilename, asset('elephant-wikimedia__preview.png'))
- def test_preview_jpg():
- '''
- Test endpoint
- POST /preview with jpeg image
- See issue #204
- '''
- my_image = open(asset('tree.jpg'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/preview',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- tempfilename = tempfile.NamedTemporaryFile(delete=True, suffix='.jpg').name
- with open(tempfilename, 'wb') as fd:
- fd.write(response.data)
- def test_thumbnail():
- '''
- Test endpoint
- POST /thumbnail
- '''
- my_image = open(asset('elephant-wikimedia.png'), 'rb')
- with get_test_client() as test_client:
- response = test_client.post('/thumbnail',
- headers={'x-access-token': get_token()},
- data={ 'image': my_image})
- assert response.status_code == 200
- tempfilename = tempfile.NamedTemporaryFile(delete=True, suffix='.svg').name
- with open(tempfilename, 'wb') as fd:
- fd.write(response.data)
- assert same_files(tempfilename, asset('elephant-wikimedia__thumbnail.webp'))
|