def test_stable_id_exists_and_valid(self):
        """Test getting a stable valid id """

        with patch("streamlit.metrics_util.os.path.exists", return_value=True),\
             patch("streamlit.file_util.open", mock_open(read_data=UUID)) as open:

            machine_id = metrics_util._get_stable_random_id()
            open().read.assert_called_once()
        self.assertEqual(machine_id, UUID)
    def test_stable_id_not_exists(self):
        """Test creating a stable id """

        with patch("streamlit.metrics_util.os.path.exists", return_value=False),\
             patch("streamlit.metrics_util.uuid.uuid4", return_value=UUID),\
             patch("streamlit.file_util.open", mock_open()) as open,\
             patch("streamlit.util.os.makedirs") as makedirs:

            machine_id = metrics_util._get_stable_random_id()
            open().write.assert_called_once_with(UUID)
        self.assertEqual(machine_id, UUID)
    def test_stable_id_exists_and_invalid(self):
        """Test getting a stable invalid id """

        with patch("streamlit.metrics_util.os.path.exists", return_value=True),\
             patch("streamlit.metrics_util.uuid.uuid4", return_value=UUID),\
             patch("streamlit.file_util.open", mock_open(read_data="")) as open,\
             patch("streamlit.util.os.makedirs") as makedirs:

            machine_id = metrics_util._get_stable_random_id()
            open().read.assert_called_once()
            open().write.assert_called_once_with(UUID)
        self.assertEqual(machine_id, UUID)