Skip to content

Getting login pages with filter "source eq 'global'" results in error #753

Description

@noethig

Describe the bug

I took the following code from the API documentation:

query_params=LoginPagesRequestBuilder.LoginPagesRequestBuilderGetQueryParameters(
filter="source eq 'global'")
request_configuration=LoginPagesRequestBuilder.LoginPagesRequestBuilderGetRequestConfiguration(
query_parameters=query_params)
login_pages=awaitgraph_client.security.attack_simulation.login_pages.get(
request_configuration=request_configuration)

Expected behavior

The function await graph_client.security.attack_simulation.login_pages.get(...) should return all login pages.

How to reproduce

Minimal working example:

importasynciofromazure.identity.aioimportClientSecretCredentialfrommsgraphimportGraphServiceClientfrommsgraph.generated.security.attack_simulation.login_pages.login_pages_request_builderimport \
LoginPagesRequestBuilderTENANT_ID='todo'CLIENT_ID='todo'CLIENT_SECRET='todo'asyncdefget_global_login_pages():
credentials=ClientSecretCredential(TENANT_ID, CLIENT_ID, CLIENT_SECRET)
graph_client=GraphServiceClient(credentials=credentials, scopes=['https://graph.microsoft.com/.default'])
query_params=LoginPagesRequestBuilder.LoginPagesRequestBuilderGetQueryParameters(
filter="source eq 'global'")
request_configuration=LoginPagesRequestBuilder.LoginPagesRequestBuilderGetRequestConfiguration(
query_parameters=query_params)
result=awaitgraph_client.security.attack_simulation.login_pages.get(
request_configuration=request_configuration)
returnresultif__name__=='__main__':
response=asyncio.run(get_global_login_pages())
print(response)

SDK Version

1.4.0

Latest version known to work for scenario above?

No response

Known Workarounds

A workaround is to just write a get request with another library. But that should be done by this SDK, if it would work...

Debug output

Click to expand log

/opt/miniconda3/envs/project-name/bin/python /Users/xxxx/Library/Application Support/JetBrains/PyCharm2024.1/scratches/scratch.py
Traceback (most recent call last):
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 199, in get_enum_value
return enum_class[camel_case_key] # type: ignore
File "/opt/miniconda3/envs/project-name/lib/python3.10/enum.py", line 440, in __getitem__
return cls._member_map_[name]
KeyError: 'Global'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/xxxx/Library/Application Support/JetBrains/PyCharm2024.1/scratches/scratch.py", line 79, in <module>
response = asyncio.run(get_global_login_pages())
File "/opt/miniconda3/envs/project-name/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/opt/miniconda3/envs/project-name/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/Users/xxxx/Library/Application Support/JetBrains/PyCharm2024.1/scratches/scratch.py", line 74, in get_global_login_pages
result = await graph_client.security.attack_simulation.login_pages.get(request_configuration = request_configuration)
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/msgraph/generated/security/attack_simulation/login_pages/login_pages_request_builder.py", line 68, in get
return await self.request_adapter.send_async(request_info, LoginPageCollectionResponse, error_mapping)
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_http/httpx_request_adapter.py", line 192, in send_async
value = root_node.get_object_value(parsable_factory)
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 212, in get_object_value
self._assign_field_values(result)
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 281, in _assign_field_values
field_deserializer(JsonParseNode(field_value))
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/msgraph/generated/models/login_page_collection_response.py", line 40, in <lambda>
"value": lambda n : setattr(self, 'value', n.get_collection_of_object_values(LoginPage)),
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 163, in get_collection_of_object_values
return list(
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 165, in <lambda>
lambda x: self._create_new_node(x).get_object_value(factory), # type: ignore
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 212, in get_object_value
self._assign_field_values(result)
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 281, in _assign_field_values
field_deserializer(JsonParseNode(field_value))
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/msgraph/generated/models/login_page.py", line 75, in <lambda>
"source": lambda n : setattr(self, 'source', n.get_enum_value(SimulationContentSource)),
File "/opt/miniconda3/envs/project-name/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 201, in get_enum_value
raise Exception(f'Invalid key: {camel_case_key} for enum {enum_class}.')
Exception: Invalid key: Global for enum <enum 'SimulationContentSource'>.
Process finished with exit code 1

Configuration

  • OS: MacOS Sonoma 14.5 (23F79)
  • architecture: Apple M1 Pro

I think that problem is not specific to this configuration.

Other information

Taking the same code (minimal working example) and only changing the filter from filter="source eq 'global'" to filter="source eq 'tenant'", the SDK call works as expected.

The error cause seems to be here:

msgraph/generated/models/simulation_content_source.py

Copied source code:

fromenumimportEnumclassSimulationContentSource(str, Enum):
Unknown="unknown",
Global_="global",
Tenant="tenant",
UnknownFutureValue="unknownFutureValue",

The member Global_ seems to cause the problem because of the trailing _. I don't quite understand, why this members needs the trailing _ and would be happy to learn more about that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:waiting-for-triageAn issue that is yet to be reviewed or assignedtype:bugA broken experience

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions