def build_iothub_amqp_endpoint_from_target(cls, target, duration=360):
     hub_name = target["entity"].split(".")[0]
     user = "******".format(target["policy"], hub_name)
     sas_token = SasTokenAuthentication(target["entity"], target["policy"],
                                        target["primarykey"],
                                        duration).generate_sas_token()
     return url_encode_str(user) + ":{}@{}".format(
         url_encode_str(sas_token), target["entity"])
示例#2
0
 def build_iothub_amqp_endpoint_from_target(self, target, duration=360):
     hub_name = target['entity'].split('.')[0]
     user = "******".format(target['policy'], hub_name)
     sas_token = SasTokenAuthentication(
         target['entity'], target['policy'], target['primarykey'],
         time() + duration).generate_sas_token()
     return url_encode_str(user) + ":{}@{}".format(
         url_encode_str(sas_token), target['entity'])
    def test_repo_role_show(self, fixture_cmd, serviceclient_arr, resource_id,
                            resource_type, subject_id):

        repo.iot_pnp_role_list(fixture_cmd, resource_id, resource_type,
                               subject_id)
        args = serviceclient_arr.call_args
        url = args[0][0].url
        method = args[0][0].method

        assert method == "GET"
        assert (("/resources/{0}/types/{1}/subjects/{2}".format(
            url_encode_str(resource_id),
            resource_type,
            url_encode_str(subject_id),
        ) in url) if subject_id else ("/resources/{0}/types/{1}".format(
            url_encode_str(resource_id), resource_type) in url))
    def test_interface_create(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_create(fixture_cmd,
                                         interface_definition=payload,
                                         login=mock_target["cs"])
        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_model_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_model_payload_file))

        subject.iot_pnp_model_update(fixture_cmd,
                                     model_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_model_id,
                                           plus=True)) in url
        assert 'repositoryId={}'.format(_repo_id) in url
        assert json.dumps(data)
        assert headers.get('Authorization')
    def test_model_show(self, fixture_cmd, serviceclient, target_model):
        result = dataplane.iot_pnp_model_show(fixture_cmd,
                                              model_id=target_model)
        args = serviceclient.call_args
        url = args[0][0].url
        method = args[0][0].method

        assert method == "GET"
        assert "/models/{}?".format(url_encode_str(target_model,
                                                   plus=True)) in url
        assert json.dumps(result)
    def test_repo_role_delete(
        self,
        fixture_cmd,
        serviceclient,
        role,
        resource_id,
        resource_type,
        subject_id,
    ):

        repo.iot_pnp_role_delete(fixture_cmd, resource_id, resource_type, role,
                                 subject_id)
        args = serviceclient.call_args
        url = args[0][0].url

        assert ("/resources/{0}/types/{1}/subjects/{2}/roles/{3}".format(
            url_encode_str(resource_id),
            resource_type,
            url_encode_str(subject_id),
            role.value,
        ) in url)
    def test_model_publish(self, fixture_cmd, serviceclient, target_model):
        dataplane.iot_pnp_model_publish(
            fixture_cmd,
            model_id=target_model,
        )
        args = serviceclient.call_args
        url = args[0][0].url
        method = args[0][0].method
        headers = args[0][0].headers

        assert method == "PUT"
        assert "/models/{}?".format(url_encode_str(target_model,
                                                   plus=True)) in url
        assert "update-metadata=true" in url
        assert headers.get("x-ms-model-state") == "Listed"
    def test_model_publish(self, fixture_cmd, serviceclient, target_model):
        subject.iot_pnp_model_publish(fixture_cmd,
                                      model=target_model,
                                      login=mock_target["cs"])
        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_model_id, plus=True))
                in url)
        assert json.loads(data)["@id"] == _pnp_generic_model_id
        assert headers.get("Authorization")
    def test_model_delete(self, fixture_cmd, serviceclient, target_model):
        subject.iot_pnp_model_delete(fixture_cmd,
                                     model=target_model,
                                     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
        headers = args[0][0].headers

        assert method == 'DELETE'
        assert '{}/models/{}?'.format(
            _repo_endpoint, url_encode_str(_pnp_generic_model_id,
                                           plus=True)) in url
        assert 'repositoryId={}'.format(_repo_id) in url
        assert headers.get('Authorization')
    def test_interface_publish(self, fixture_cmd, serviceclient,
                               target_interface):
        subject.iot_pnp_interface_publish(fixture_cmd,
                                          interface=target_interface,
                                          login=mock_target['cs'])
        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 json.loads(data)["@id"] == _pnp_generic_interface_id
        assert headers.get('Authorization')
    def test_model_delete(self, fixture_cmd, serviceclient, target_model):
        subject.iot_pnp_model_delete(
            fixture_cmd,
            model=target_model,
            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
        headers = args[0][0].headers

        assert method == "DELETE"
        assert ("{}/models/{}?".format(
            _repo_endpoint, url_encode_str(_pnp_generic_model_id, plus=True))
                in url)
        assert "repositoryId={}".format(_repo_id) in url
        assert headers.get("Authorization")
    def test_interface_show(self, fixture_cmd, serviceclient,
                            target_interface):
        result = subject.iot_pnp_interface_show(
            fixture_cmd,
            interface=target_interface,
            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
        headers = args[0][0].headers

        assert method == 'GET'
        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(result)
        assert headers.get('Authorization')
    def test_model_create(self, fixture_cmd, serviceclient, content_from_file,
                          set_cwd):

        payload = None
        payload_scenario = generate_pnp_model_create_payload(content_from_file)
        # If file path provided
        if not payload_scenario[0]:
            payload = payload_scenario[1]
        payload = str(read_file_content(_pnp_create_model_payload_file))

        model_id = json.loads(payload)["@id"]
        dataplane.iot_pnp_model_create(
            cmd=fixture_cmd,
            model=payload,
        )
        args = serviceclient.call_args
        url = args[0][0].url
        method = args[0][0].method
        data = args[0][0].data

        assert method == "PUT"
        assert "/models/{}?".format(url_encode_str(model_id, plus=True)) in url
        assert json.dumps(data)
示例#15
0
def build_mqtt_device_username(entity, device_id):
    return "{}/{}/?api-version={}&DeviceClientType={}".format(
        entity, device_id, BASE_MQTT_API_VERSION, url_encode_str(USER_AGENT))