| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- 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_hull_svg():
- '''
- Test endpoint with icon.svg (from Climate Fresk)
- POST /hull
- '''
- my_image = open(asset('icon.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
- print(response_dict['hull'])
- assert 'hull' in response_dict
- assert response_dict['hull'] == 'M 46.6972 1.39992 C 32.898 6.39961 23.6986 21.0987 25.3985 35.3979 C 26.1984 42.7974 26.8984 44.1973 29.3982 43.7974 C 30.9981 43.5974 31.3981 42.8974 31.1981 40.6975 C 30.8981 37.5977 30.9981 37.5977 34.3979 39.0976 C 36.3978 40.0976 37.3977 39.9976 39.4976 38.5977 C 40.8975 37.6977 41.9975 36.0978 41.9975 34.9979 C 41.9975 33.798 42.9974 32.598 44.2973 32.0981 C 46.7972 31.0981 54.3967 21.5987 55.9966 17.4989 C 57.0966 14.5991 55.8966 10.5994 52.7968 7.29956 L 50.7969 5.09969 L 54.2967 4.49973 C 61.6963 3.09981 76.0954 8.59948 78.9952 13.9992 C 79.7952 15.4991 79.3952 15.799 75.3955 16.299 C 63.0962 17.5989 60.9963 30.9981 72.4956 34.6979 C 75.1955 35.5979 75.4954 36.0978 75.1955 39.3976 C 74.9955 41.7975 75.5954 44.2973 76.9954 46.4972 C 78.1953 48.3971 78.7952 50.497 78.4953 51.0969 C 77.6953 52.3968 68.9958 57.9965 67.7959 57.9965 C 66.596 57.9965 66.896 55.7966 68.4959 52.5968 C 70.2958 49.197 70.4957 39.8976 68.7958 38.1977 C 68.0959 37.4977 66.396 36.9978 64.8961 36.9978 C 63.3962 36.9978 61.6963 36.2978 60.9963 35.4979 C 60.1964 34.4979 57.9965 33.9979 54.4967 33.9979 C 48.2971 33.9979 46.0972 35.8978 45.2973 41.6975 C 44.8973 44.8973 45.2973 46.1972 47.4971 48.7971 C 48.997 50.5969 50.7969 51.9969 51.4969 51.9969 C 52.6968 51.9969 54.9967 56.7966 54.9967 59.1964 C 54.9967 60.3964 51.9969 59.4964 45.6972 56.7966 C 42.1975 55.1967 40.6975 54.8967 39.7976 55.7966 C 36.6978 58.8964 44.5973 63.5962 54.6967 64.5961 C 73.4956 66.596 90.1946 51.7969 90.2946 32.998 C 90.3945 29.3982 89.8946 24.6985 89.1946 22.3986 C 86.4948 13.1992 78.3953 4.79971 68.8958 1.49991 C 63.6962 -0.399976 51.7969 -0.399976 46.6972 1.39992 ZM 31.9981 50.9969 C 31.9981 52.2968 32.698 52.9968 33.9979 52.9968 C 35.2979 52.9968 35.9978 52.2968 35.9978 50.9969 C 35.9978 49.697 35.2979 48.997 33.9979 48.997 C 32.698 48.997 31.9981 49.697 31.9981 50.9969 ZM 29.1982 64.9961 C 25.3985 66.596 24.5985 70.5957 26.6984 77.0953 L 28.5983 82.695 L 25.8984 83.8949 C 22.8986 85.1949 20.9987 88.7946 20.9987 93.2944 L 20.9987 96.4942 L 18.0989 93.4944 C 16.499 91.7945 14.2991 88.8946 13.1992 86.9947 C 10.7993 82.495 6.89958 80.9951 3.19981 83.095 C -3.59978 86.7948 1.79989 100.494 12.7992 107.793 C 14.6991 108.993 14.9991 110.093 14.9991 115.093 L 14.9991 120.993 L 57.9965 120.993 L 100.994 120.993 L 100.994 115.093 C 100.994 110.093 101.294 108.993 103.294 107.793 C 112.793 101.494 118.893 88.9946 114.493 84.5949 C 110.493 80.6951 105.094 81.9951 102.094 87.6947 C 101.094 89.7946 98.994 92.5944 97.5941 93.8943 L 94.9943 96.2942 L 94.9943 92.7944 C 94.9943 88.8946 90.9945 82.995 88.3947 82.995 C 86.6948 82.995 86.6948 82.995 88.4947 78.6953 C 91.2945 71.7957 90.0946 65.696 85.5948 64.5961 C 81.0951 63.4962 78.2953 65.496 76.2954 70.9957 C 75.2955 73.8955 72.8956 77.7953 70.9957 79.7952 L 67.4959 83.395 L 67.1959 78.2953 C 66.896 73.8955 66.396 72.6956 63.8961 70.4957 C 59.7964 67.096 55.8966 67.2959 51.7969 70.8957 C 48.997 73.3956 48.4971 74.4955 48.4971 78.2953 C 48.4971 82.295 48.2971 82.695 46.6972 81.8951 C 44.4973 80.6951 40.2976 74.2955 39.4976 70.7957 C 38.2977 66.096 33.498 63.3962 29.1982 64.9961 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'))
|