using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Graph.Models;
using Microsoft.Kiota.Abstractions;
using Microsoft.Kiota.Abstractions.Serialization;
using Microsoft.Kiota.Abstractions.Store;
using Microsoft.Kiota.Serialization.Json;
public static class RequestAdapterMockFactory
public static Mock<IRequestAdapter> Create(MockBehavior mockBehavior = MockBehavior.Strict)
var mockSerializationWriterFactory = new Mock<ISerializationWriterFactory>();
mockSerializationWriterFactory.Setup(factory => factory.GetSerializationWriter(It.IsAny<string>()))
.Returns((string _) => new JsonSerializationWriter());
var mockRequestAdapter = new Mock<IRequestAdapter>(mockBehavior);
mockRequestAdapter.SetupGet(adapter => adapter.BaseUrl).Returns("http://test.internal");
mockRequestAdapter.SetupSet(adapter => adapter.BaseUrl = It.IsAny<string>());
mockRequestAdapter.Setup(adapter => adapter.EnableBackingStore(It.IsAny<IBackingStoreFactory>()));
mockRequestAdapter.SetupGet(adapter => adapter.SerializationWriterFactory).Returns(mockSerializationWriterFactory.Object);
return mockRequestAdapter;
public static async Task Main()
var mockRequestAdapter = RequestAdapterMockFactory.Create();
mockRequestAdapter.Setup(adapter => adapter.SendAsync(
It.Is<RequestInformation>(info => info.HttpMethod == Method.GET && info.UrlTemplate.Contains("/groups/")),
Group.CreateFromDiscriminatorValue,
It.IsAny<Dictionary<string, ParsableFactory<IParsable>>>(), It.IsAny<CancellationToken>()))
ParsableFactory<Group> _,
Dictionary<string, ParsableFactory<IParsable>> _,
CancellationToken _) => new Group
Id = (string)info.PathParameters["group%2Did"],
var graphClient = new GraphServiceClient(mockRequestAdapter.Object);
var group = await graphClient.Groups["fooBar"].GetAsync();
Console.WriteLine(group.Id);