Esempio n. 1
0
 def test_deactivate_non_responding_printer(self, mock_get_uri):
     printer = Octoprint("900c73b8-1f12-4027-941a-e4b29531e8e3",
                         ip="192.168.1.15")
     self.assertFalse(printer.client_info.connected)
     printer.sniff()
     self.assertEqual(printer.client_info.connected, False)
     self.assertEqual(printer.client_info.version, {})
Esempio n. 2
0
 def test_webcam_absolute_url(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.return_value = {
         "webcam": {
             "flipH": True,
             "flipV": True,
             "rotate90": False,
             "streamUrl": "http://1.2.3.4/webcam/?action=stream",
             "snapshotUrl": "http://1.2.3.4/?action=snapshot",
             "webcamEnabled": True,
         }
     }
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.webcam()
     self.assertEqual(
         result,
         {
             "message": "OK",
             "stream": "http://1.2.3.4/webcam/?action=stream",
             "snapshot": "http://1.2.3.4/?action=snapshot",
             "flipHorizontal": True,
             "flipVertical": True,
             "rotate90": False,
         },
     )
Esempio n. 3
0
 def test_connected_printer(self, mock_get_uri):
     printer = Octoprint("900c73b8-1f12-4027-941a-e4b29531e8e3",
                         ip="192.168.1.15")
     self.assertFalse(printer.client_info.connected)
     self.assertTrue(printer.is_alive())
     self.assertTrue(printer.client_info.connected)
     self.assertEqual(mock_get_uri.call_count, 2)
Esempio n. 4
0
 def test_job_ok(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.return_value = {
         "job": {
             "file": {
                 "display": "test-pouzdro-na-iphone.gcode"
             }
         },
         "progress": {
             "completion": 12,
             "printTimeLeft": 35,
             "printTime": 10
         },
         "state": "Printing",
     }
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.job()
     self.assertEqual(
         result,
         {
             "name": "test-pouzdro-na-iphone.gcode",
             "completion": 12,
             "printTimeLeft": 35,
             "printTime": 10,
         },
     )
Esempio n. 5
0
 def test_upload_job_ok(self, mock_post_uri, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.return_value = {
         "state": {
             "text": "Operational"
         },
         "temperature": {},
     }
     mock_post_uri.return_value.status_code = 201
     mock_post_uri.return_value.json.return_value = {
         "files": {
             "local": {
                 "name": "20mm-umlaut-box",
                 "origin": "local",
                 "refs": {
                     "resource":
                     "http://example.com/api/files/local/whistle_v2.gcode",
                     "download":
                     "http://example.com/downloads/files/local/whistle_v2.gcode",
                 },
             }
         },
         "done": True,
     }
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.upload_and_start_job(self.file_mock.name)
     self.assertTrue(result)
     args, kwargs = mock_post_uri.call_args
     self.assertEqual(kwargs["data"], {"path": "karmen", "print": True})
     self.assertEqual(kwargs["files"]["file"].name, self.file_mock.name)
     self.assertEqual(kwargs["timeout"], 200)
Esempio n. 6
0
 def test_webcam_no_response(self, mock_get_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.webcam()
     self.assertEqual(result, {"message": "Webcam not accessible"})
Esempio n. 7
0
 def test_job_no_response(self, mock_get_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.job()
     self.assertEqual(result, {})
Esempio n. 8
0
 def test_modify_job_no_response(self, mock_post_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.modify_current_job("toggle")
     self.assertFalse(result)
Esempio n. 9
0
 def test_job_disconnected(self, mock_get_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
     )
     printer.job()
     self.assertEqual(mock_get_uri.call_count, 0)
Esempio n. 10
0
 def test_deactivate_non_200_responding_printer(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 404
     printer = Octoprint("900c73b8-1f12-4027-941a-e4b29531e8e3",
                         ip="192.168.1.15")
     printer.sniff()
     self.assertEqual(printer.client_info.connected, False)
     self.assertEqual(printer.client_info.version, {})
     self.assertEqual(printer.client_info.access_level,
                      PrinterClientAccessLevel.UNKNOWN)
Esempio n. 11
0
 def test_reachable_offline_printer(self, mock_get_uri, mock_post_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     self.assertFalse(printer.connect_printer())
     self.assertEqual(mock_get_uri.call_count, 1)
     self.assertEqual(mock_post_uri.call_count, 1)
Esempio n. 12
0
 def test_access_protected_octoprint_forcelogin(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 403
     printer = Octoprint("900c73b8-1f12-4027-941a-e4b29531e8e3",
                         ip="192.168.1.15")
     printer.sniff()
     self.assertEqual(printer.client_info.connected, True)
     self.assertEqual(printer.client_info.access_level,
                      PrinterClientAccessLevel.PROTECTED)
     self.assertEqual(printer.client_info.version, {})
Esempio n. 13
0
 def test_job_disconnect(self, mock_get_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     self.assertTrue(printer.client_info.connected)
     printer.job()
     self.assertFalse(printer.client_info.connected)
Esempio n. 14
0
 def test_modify_job_inactive_printer(self, mock_post_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
     )
     self.assertEqual(mock_post_uri.call_count, 0)
     result = printer.modify_current_job("toggle")
     self.assertFalse(result)
Esempio n. 15
0
    def test_unknown_actino(self):
        printer = Octoprint(
            "900c73b8-1f12-4027-941a-e4b29531e8e3",
            ip="192.168.1.15",
            client_props={"connected": True},
        )
        with self.assertRaises(Exception) as ctx:
            printer.modify_current_job("random")

        self.assertTrue("random is not allowed" in str(ctx.exception))
Esempio n. 16
0
 def test_job_no_response(self, mock_get_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.job()
     self.assertEqual(result, {})
Esempio n. 17
0
 def test_no_crash_on_different_response(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.return_value = {"random": "field"}
     printer = Octoprint("900c73b8-1f12-4027-941a-e4b29531e8e3",
                         ip="192.168.1.15")
     printer.sniff()
     self.assertEqual(printer.client_info.connected, False)
     self.assertEqual(printer.client_info.version, {"random": "field"})
     self.assertEqual(printer.client_info.access_level,
                      PrinterClientAccessLevel.UNKNOWN)
Esempio n. 18
0
 def test_plugin_not_responding(self, mock_post_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
         client_props={"connected": True, "plugins": ["awesome_karmen_led"]},
     )
     r = printer.set_lights()
     self.assertFalse(r)
Esempio n. 19
0
    def test_karmen_sniff_update_downloading_finished(
        self, mock_props, mock_post, mock_get
    ):
        def mock_call(uri, **kwargs):
            if uri.startswith("/karmen-pill-info/"):
                return Response(
                    200,
                    {
                        "networking": {
                            "mode": "client",
                            "ssid": "Alexa",
                            "has_passphrase": False,
                            "country": "CZ",
                        },
                        "system": {
                            "karmen_version": "0.2.0",
                            "karmen_version_hash": "cdcd7749e47dbaeea6482bd2b745eba4ac6c32ec 0.2.0",
                            "hostname": "kpz-1016",
                            "timezone": "Europe/Prague",
                            "device_key": "206b22a3126644eb8dd73c8e276961c6",
                            "update_status": "downloading",
                        },
                    },
                )

        def mock_call_post(uri, data, **kwargs):
            if uri == "/update-system":
                if data == '{"action": "download-status"}':
                    return SimpleResponse(200, "DONE")

        def get_props(prop):
            if prop == "versions":
                return [
                    {"pattern": r"""0\.2\.[01]""", "new_version_name": "0.2.3"},
                ]

        mock_get.side_effect = mock_call
        mock_post.side_effect = mock_call_post
        mock_props.side_effect = get_props
        printer = Octoprint(
            "900c73b8-1f12-4027-941a-e4b29531e8e3",
            "d501f4f0-48d5-468e-a137-1f3803cd836c",
            UUID_ORG,
            ip="192.168.1.15",
        )
        printer.karmen_sniff()
        self.assertEqual(
            printer.client_info.pill_info,
            {
                "karmen_version": "0.2.0",
                "version_number": "0.2.0",
                "update_available": "0.2.3",
                "update_status": "downloaded",
            },
        )
Esempio n. 20
0
 def test_modify_job_disconnect(self, mock_post_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     printer.modify_current_job("toggle")
     # testing connected = Flase
     self.assertFalse(printer.client_info.connected)  
Esempio n. 21
0
 def test_plugin_responding_black(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
         client_props={"connected": True, "plugins": ["awesome_karmen_led"]},
     )
     r = printer.are_lights_on()
     self.assertFalse(r)
Esempio n. 22
0
 def test_deactivate_no_data_responding_printer(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.side_effect = json.decoder.JSONDecodeError(
         "msg", "aa", 123)
     printer = Octoprint("900c73b8-1f12-4027-941a-e4b29531e8e3",
                         ip="192.168.1.15")
     printer.sniff()
     self.assertEqual(printer.client_info.connected, False)
     self.assertEqual(printer.client_info.version, {})
     self.assertEqual(printer.client_info.access_level,
                      PrinterClientAccessLevel.UNKNOWN)
Esempio n. 23
0
 def test_job_disconnect(self, mock_get_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     self.assertTrue(printer.client_info.connected)
     printer.job()
     self.assertFalse(printer.client_info.connected)
Esempio n. 24
0
 def test_job_malformed_json(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.side_effect = json.decoder.JSONDecodeError(
         "msg", "aa", 123)
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.job()
     self.assertEqual(result, {})
Esempio n. 25
0
 def test_status_unreachable(self, mock_get_uri):
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.status()
     self.assertEqual(result, {
         "state": "Printer is not responding",
         "temperature": {}
     })
Esempio n. 26
0
 def test_modify_job_cancel_ok(self, mock_post_uri):
     mock_post_uri.return_value.status_code = 204
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.modify_current_job("cancel")
     self.assertTrue(result)
     args, kwargs = mock_post_uri.call_args
     self.assertEqual(kwargs["json"], {"command": "cancel"})
Esempio n. 27
0
 def test_upload_job_disconnected(self, mock_post_uri, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.return_value = {
         "state": {
             "text": "Operational"
         },
         "temperature": {},
     }
     printer = Octoprint("192.168.1.15")
     result = printer.upload_and_start_job(self.file_mock.name)
     self.assertEqual(mock_post_uri.call_count, 0)
     self.assertFalse(result)
Esempio n. 28
0
    def test_no_plugin(self):
        printer = Octoprint(
            "900c73b8-1f12-4027-941a-e4b29531e8e3",
            "d501f4f0-48d5-468e-a137-1f3803cd836c",
            UUID_ORG,
            ip="192.168.1.15",
            client_props={"connected": True},
        )
        with self.assertRaises(Exception) as ctx:
            printer.set_lights()

        self.assertTrue("awesome_karmen_led is not loaded" in str(ctx.exception))
Esempio n. 29
0
 def test_activate_responding_printer(self, mock_get_uri):
     mock_get_uri.return_value.status_code = 200
     mock_get_uri.return_value.json.return_value = {"text": "OctoPrint"}
     printer = Octoprint("900c73b8-1f12-4027-941a-e4b29531e8e3",
                         ip="192.168.1.15",
                         protocol="https")
     printer.sniff()
     mock_get_uri.assert_called_with("https://192.168.1.15/api/version",
                                     timeout=2)
     self.assertEqual(printer.client_info.connected, True)
     self.assertEqual(printer.client_info.version, {"text": "OctoPrint"})
     self.assertEqual(printer.client_info.access_level,
                      PrinterClientAccessLevel.UNLOCKED)
Esempio n. 30
0
 def test_modify_job_toggle_ok(self, mock_post_uri):
     mock_post_uri.return_value.status_code = 204
     printer = Octoprint(
         "900c73b8-1f12-4027-941a-e4b29531e8e3",
         "d501f4f0-48d5-468e-a137-1f3803cd836c",
         UUID_ORG,
         ip="192.168.1.15",
         client_props={"connected": True},
     )
     result = printer.modify_current_job("toggle")
     self.assertTrue(result)
     args, kwargs = mock_post_uri.call_args
     self.assertEqual(kwargs["json"], {"command": "pause", "action": "toggle"})