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"])
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)
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))