def test_interface_update(self, fixture_cmd, serviceclient,
                              payload_scenario):
        payload = None

        # If file path provided
        if not payload_scenario[0]:
            payload = payload_scenario[1]
        else:
            payload = str(
                read_file_content(_pnp_create_interface_payload_file))

        subject.iot_pnp_interface_update(
            fixture_cmd,
            interface_definition=payload,
            repo_endpoint=mock_target["entity"],
            repo_id=mock_target["repository_id"],
        )
        args = serviceclient.call_args
        url = args[0][0].url
        method = args[0][0].method
        data = args[0][0].data
        headers = args[0][0].headers

        assert method == "PUT"
        assert ("{}/models/{}?".format(
            _repo_endpoint, url_encode_str(_pnp_generic_interface_id,
                                           plus=True)) in url)
        assert "repositoryId={}".format(_repo_id) in url
        assert json.dumps(data)
        assert headers.get("Authorization")
    def test_interface_update_invalid_payload(self, serviceclient):

        payload = str(read_file_content(_pnp_create_interface_payload_file))
        payload = json.loads(payload)
        payload['@id'] = 'fake_invalid_id'
        payload = json.dumps(payload)
        with pytest.raises(CLIError):
            subject.iot_pnp_interface_update(
                fixture_cmd,
                interface_definition=payload,
                repo_endpoint=mock_target['entity'],
                repo_id=mock_target['repository_id'])
 def test_model_update_error(self, fixture_cmd, serviceclient_generic_error,
                             payload_scenario):
     if not payload_scenario[0]:
         payload = payload_scenario[1]
     else:
         payload = str(
             read_file_content(_pnp_create_interface_payload_file))
     with pytest.raises(CLIError):
         subject.iot_pnp_interface_update(
             fixture_cmd,
             interface_definition=payload,
             repo_endpoint=mock_target['entity'],
             repo_id=mock_target['repository_id'])
 def test_interface_update_invalid_args(self, serviceclient,
                                        payload_scenario, exp):
     with pytest.raises(exp):
         subject.iot_pnp_interface_update(
             fixture_cmd, interface_definition=payload_scenario)