def test_filter(self): with app.test_client() as c: c.set_cookie("localhost", "access_token_cookie", TOKEN_USER) rand = repr(round(time())) gcode_ids = [ gcodes.add_gcode( path="a/b/c", filename="my-unique-filename-%s" % rand, display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, ), gcodes.add_gcode( path="a/b/c", filename="my-unique-filename-%s" % rand, display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, ), ] response = c.get( "/gcodes?filter=filename:%s" % rand, headers={"x-csrf-token": TOKEN_USER_CSRF}, ) self.assertEqual(response.status_code, 200) self.assertTrue("items" in response.json) self.assertTrue(len(response.json["items"]) == 2) for gcode_id in gcode_ids: gcodes.delete_gcode(gcode_id)
def setUp(self): self.gcode_id = gcodes.add_gcode( path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, ) self.gcode_id2 = gcodes.add_gcode( path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, ) self.printjob_ids = [] for i in range(0, 3): self.printjob_ids.append( printjobs.add_printjob( gcode_id=self.gcode_id, gcode_data={"id": self.gcode_id}, printer_ip="172.16.236.11:8080", printer_data={"ip": "172.16.236.11:8080"}, )) for i in range(0, 3): self.printjob_ids.append( printjobs.add_printjob( gcode_id=self.gcode_id2, gcode_data={"id": self.gcode_id2}, printer_ip="172.16.236.12:8080", printer_data={"ip": "172.16.236.12:8080"}, ))
def upload(): if "file" not in request.files: return abort(400) incoming = request.files["file"] if incoming.filename == "": return abort(400) if not re.search(r"\.gco(de)?$", incoming.filename): return abort(415) try: saved = files.save(incoming, request.form.get("path", "/")) gcodes.add_gcode( path=saved["path"], filename=saved["filename"], display=saved["display"], absolute_path=saved["absolute_path"], size=saved["size"], ) except (IOError, OSError) as e: return abort(e, 500) return ( jsonify({ "files": { "local": { "name": saved["filename"], "display": saved["display"], "path": saved["absolute_path"], "origin": "local", } } }), 201, )
def test_delete(self): gcode_id = gcodes.add_gcode( path="delete-ab/c", filename="delete-gcode-specific-file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, ) printjobs.add_printjob( gcode_id=gcode_id, gcode_data={"id": gcode_id}, printer_uuid="20e91c14-c3e4-4fe9-a066-e69d53324a20", printer_data={"host": "172.16.236.11:8080"}, ) printjobs.add_printjob( gcode_id=gcode_id, gcode_data={"id": gcode_id}, printer_uuid="20e91c14-c3e4-4fe9-a066-e69d53324a20", printer_data={"host": "172.16.236.11:8080"}, ) with app.test_client() as c: c.set_cookie("localhost", "access_token_cookie", TOKEN_USER) response = c.delete( "/gcodes/%s" % gcode_id, headers={"x-csrf-token": TOKEN_USER_CSRF}, ) self.assertEqual(response.status_code, 204) self.assertEqual(gcodes.get_gcode(gcode_id), None) pjs = [pj for pj in printjobs.get_printjobs() if pj["gcode_id"] == gcode_id] self.assertEqual(len(pjs), 2) for pj in pjs: self.assertFalse(pj["gcode_data"]["available"])
def gcode_create(): if "file" not in request.files: return abort(400) incoming = request.files["file"] if incoming.filename == "": return abort(400) if not re.search(r"\.gco(de)?$", incoming.filename): return abort(415) try: saved = files.save(incoming, request.form.get("path", "/")) gcode_id = gcodes.add_gcode( path=saved["path"], filename=saved["filename"], display=saved["display"], absolute_path=saved["absolute_path"], size=saved["size"], ) except (IOError, OSError) as e: return abort(e, 500) return ( jsonify( make_gcode_response({ "id": gcode_id, "path": saved["path"], "filename": saved["filename"], "display": saved["display"], "absolute_path": saved["absolute_path"], "uploaded": datetime.datetime.now(), "size": saved["size"], })), 201, )
def setUp(self): self.gcode_id = gcodes.add_gcode( path="a/b/c", filename="file", display="file-display", absolute_path="/ab/a/b/c", size=123, )
def setUp(self): self.gcode_id = gcodes.add_gcode( path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, )
def test_filter_next(self): with app.test_client() as c: c.set_cookie("localhost", "access_token_cookie", TOKEN_USER) gcode_uuids = [ gcodes.add_gcode( uuid=guid.uuid4(), path="a/b/c", filename="unique-filename with space.gcode", display="unique-filename with space.gcode", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, organization_uuid=UUID_ORG, ), gcodes.add_gcode( uuid=guid.uuid4(), path="a/b/c", filename="unique-filename with space", display="unique-filename with space", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, organization_uuid=UUID_ORG, ), ] response = c.get( "/organizations/%s/gcodes?search=unique-FILENAME with space&limit=1&order_by=-uuid" % UUID_ORG, headers={"x-csrf-token": TOKEN_USER_CSRF}, ) print(response.json) self.assertEqual(response.status_code, 200) self.assertTrue("items" in response.json) self.assertTrue("next" in response.json) self.assertEqual(len(response.json["items"]), 1) response2 = c.get( response.json["next"], headers={"x-csrf-token": TOKEN_USER_CSRF}, ) self.assertTrue("items" in response2.json) self.assertTrue(response.json["items"][0]["uuid"] > response2.json["items"][0]["uuid"]) for gcode_uuid in gcode_uuids: gcodes.delete_gcode(gcode_uuid)
def setUp(self): self.gcode_uuid = gcodes.add_gcode( uuid=guid.uuid4(), path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, organization_uuid=UUID_ORG, )
def test_delete_no_token(self): gcode_id = gcodes.add_gcode( path="delete-ab/c", filename="delete-gcode-specific-file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, ) with app.test_client() as c: response = c.delete("/gcodes/%s" % gcode_id) self.assertEqual(response.status_code, 401)
def setUp(self): self.gcode_ids = [] for i in range(0, 5): self.gcode_ids.append( gcodes.add_gcode( path="a/b/c", filename="file%s" % i, display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, ) )
def upload(): token = request.headers.get("x-api-key", None) if not token: return abort(403) user_uuid = None try: decoded = decode_token(token) user_uuid = decoded["identity"] except Exception as e: abort(403) if decoded["user_claims"].get("organization_uuid") is None: abort(403) if "file" not in request.files: return abort(400) incoming = request.files["file"] if incoming.filename == "": return abort(400) if not re.search(r"\.gco(de)?$", incoming.filename): return abort(415) try: org_uuid = decoded["user_claims"]["organization_uuid"] saved = files.save(org_uuid, incoming, request.form.get("path", "")) gcode_id = gcodes.add_gcode( uuid=guid.uuid4(), path=saved["path"], filename=saved["filename"], display=saved["display"], absolute_path=saved["absolute_path"], organization_uuid=org_uuid, size=saved["size"], user_uuid=user_uuid, ) analyze_gcode.delay(gcode_id) except (IOError, OSError) as e: return abort(500, "upload IOError;\t" + str(e)) return ( jsonify({ "files": { "local": { "name": saved["filename"], "display": saved["display"], "path": saved["absolute_path"], "origin": "local", } } }), 201, )
def setUp(self): self.gcode_uuids = [] for i in range(0, 5): self.gcode_uuids.append( gcodes.add_gcode( uuid=guid.uuid4(), path="a/b/c", filename="file%s" % i, display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, organization_uuid=UUID_ORG, ))
def test_get_not_on_disk(self): gcode_id = gcodes.add_gcode( path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, ) with app.test_client() as c: c.set_cookie("localhost", "access_token_cookie", TOKEN_USER) response = c.get( "/gcodes/%s/data" % gcode_id, headers={"x-csrf-token": TOKEN_USER_CSRF}, ) self.assertEqual(response.status_code, 404)
def test_delete_bad_user(self): gcode_id = gcodes.add_gcode( path="delete-ab/c", filename="delete-gcode-specific-file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, ) with app.test_client() as c: c.set_cookie("localhost", "access_token_cookie", TOKEN_USER2) response = c.delete( "/gcodes/%s" % gcode_id, headers={"x-csrf-token": TOKEN_USER2_CSRF}, ) self.assertEqual(response.status_code, 401)
def gcode_create(org_uuid): if "file" not in request.files: return abort(make_response(jsonify(message="No file uploaded"), 400)) incoming = request.files["file"] if incoming.filename == "": return abort( make_response(jsonify(message="Uploaded file has to have a name"), 400)) if not re.search(r"\.gco(de)?$", incoming.filename): return abort( make_response( jsonify(message="Uploaded file does not look like gcode"), 415)) try: saved = files.save(org_uuid, incoming, request.form.get("path", "/")) gcode_id = gcodes.add_gcode( uuid=guid.uuid4(), path=saved["path"], filename=saved["filename"], display=saved["display"], absolute_path=saved["absolute_path"], size=saved["size"], user_uuid=get_current_user()["uuid"], organization_uuid=org_uuid, ) analyze_gcode.delay(gcode_id) except (IOError, OSError) as e: return abort(make_response(jsonify(message=str(e)), 500)) return ( jsonify( make_gcode_response({ "uuid": gcode_id, "organization_uuid": org_uuid, "user_uuid": get_current_user()["uuid"], "username": get_current_user()["username"], "path": saved["path"], "filename": saved["filename"], "display": saved["display"], "absolute_path": saved["absolute_path"], "uploaded": datetime.datetime.now(), "size": saved["size"], })), 201, )
def test_delete_org_admin(self): gcode_uuid = gcodes.add_gcode( uuid=guid.uuid4(), path="delete-ab/c", filename="delete-gcode-specific-file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER2, organization_uuid=UUID_ORG2, ) with app.test_client() as c: c.set_cookie("localhost", "access_token_cookie", TOKEN_USER) response = c.delete( "/organizations/%s/gcodes/%s" % (UUID_ORG2, gcode_uuid), headers={"x-csrf-token": TOKEN_USER_CSRF}, ) self.assertEqual(response.status_code, 204)
def test_download(self): mock_file = tempfile.NamedTemporaryFile(delete=False) gcode_id = gcodes.add_gcode( path="a/b/c", filename="file1", display="file-display", absolute_path=mock_file.name, size=123, user_uuid=UUID_USER, ) with app.test_client() as c: c.set_cookie("localhost", "access_token_cookie", TOKEN_USER) response = c.get( "/gcodes/%s/data" % gcode_id, headers={"x-csrf-token": TOKEN_USER_CSRF}, ) self.assertEqual(response.status_code, 200) mock_file.close() os.remove(mock_file.name)
def test_delete(self): gcode_id = gcodes.add_gcode( path="a/b/c", filename="file", display="file-display", absolute_path="/ab/a/b/c", size=123, ) printjob_id = printjobs.add_printjob( gcode_id=gcode_id, gcode_data={"id": gcode_id}, printer_ip="172.16.236.11:8080", printer_data={"ip": "172.16.236.11:8080"}, ) with app.test_client() as c: response = c.delete("/printjobs/%s" % printjob_id) self.assertEqual(response.status_code, 204) self.assertEqual(printjobs.get_printjob(printjob_id), None)
def setUp(self): self.gcode_uuid = gcodes.add_gcode( uuid=guid.uuid4(), path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, organization_uuid=UUID_ORG, ) self.printjob_id = printjobs.add_printjob( gcode_uuid=self.gcode_uuid, gcode_data={"uuid": self.gcode_uuid}, printer_uuid="20e91c14-c3e4-4fe9-a066-e69d53324a20", printer_data={ "ip": "172.16.236.11", "port": 8080 }, user_uuid=UUID_USER, organization_uuid=UUID_ORG, )
def setUp(self): self.gcode_uuid = gcodes.add_gcode( uuid=guid.uuid4(), path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, organization_uuid=UUID_ORG, ) self.gcode_uuid2 = gcodes.add_gcode( uuid=guid.uuid4(), path="a/b/c", filename="file1", display="file-display", absolute_path="/ab/a/b/c", size=123, user_uuid=UUID_USER, organization_uuid=UUID_ORG, ) uuids = [] for i in range(0, 7): uuids.append(guid.uuid4()) uuids.sort(reverse=True) self.printjob_ids = [] for i in range(0, 3): self.printjob_ids.append( printjobs.add_printjob( uuid=uuids.pop(), gcode_uuid=self.gcode_uuid, gcode_data={"uuid": self.gcode_uuid}, printer_uuid="20e91c14-c3e4-4fe9-a066-e69d53324a20", printer_data={ "ip": "172.16.236.11", "port": 8080 }, user_uuid=UUID_USER, organization_uuid=UUID_ORG, )) for i in range(0, 3): self.printjob_ids.append( printjobs.add_printjob( uuid=uuids.pop(), gcode_uuid=self.gcode_uuid2, gcode_data={"uuid": self.gcode_uuid2}, printer_uuid="e24a9711-aabc-48f0-b790-eac056c43f07", printer_data={ "ip": "172.16.236.12", "port": 8080 }, user_uuid=UUID_USER, organization_uuid=UUID_ORG, )) printjobs.add_printjob( uuid=uuids.pop(), gcode_uuid=self.gcode_uuid2, gcode_data={"uuid": self.gcode_uuid2}, printer_uuid="7e5129ad-08d0-42d1-b65c-847d3c636157", printer_data={ "ip": "172.16.236.12", "port": 8080 }, user_uuid=UUID_USER, organization_uuid=UUID_ORG2, )