public void ReturnAUserRequestWithTheSpecifiedDateTime()
        {
            DateTime expected = DateTime.MaxValue.GetRandom().ToMinutePrecision();
            var      actual   = new UserRequestBuilder().AddRequestUtcDateTime(expected).Build();

            Assert.Equal(expected, actual.RequestDateTimeUtc);
        }
        public async Task RouteAnUnknownIntentToTheDefaultHandler()
        {
            string defaultRouteUri = $"http://{string.Empty.GetRandom()}";

            var cmdProcessor = new Mock <ICommandProcessor>(MockBehavior.Loose);

            var routes = new RouteCollectionBuilder(defaultRouteUri)
                         .Add(string.Empty.GetRandom(), string.Empty.GetRandom())
                         .Add(string.Empty.GetRandom(), string.Empty.GetRandom())
                         .Add(string.Empty.GetRandom(), string.Empty.GetRandom())
                         .Build().AsJsonString();
            var routeCollection = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("intentRoutes", routes)
            };
            var config = new ConfigurationBuilder().AddInMemoryCollection(routeCollection).Build();

            var containerBuilder = new Autofac.ContainerBuilder();

            containerBuilder.RegisterInstance <ICommandProcessor>(cmdProcessor.Object);
            containerBuilder.RegisterInstance <IConfiguration>(config);
            var serviceProvider = new AutofacServiceProvider(containerBuilder.Build());

            var request = new UserRequestBuilder().Random().Build();
            var target  = new ConfigRouter.Engine(serviceProvider);
            var actual  = await target.HandleRequestAsync(request);

            cmdProcessor.Verify(p => p.ProcessAsync(defaultRouteUri, It.IsAny <UserRequest>()), Times.Once);
        }
        public void ReturnAUserRequestWithTheSpecifiedIntent()
        {
            var intent = new IntentBuilder().Random().Build();
            var actual = new UserRequestBuilder().AddIntent(intent).Build();

            Assert.Equal(intent.Name, actual.Intent.Name);
        }
        public void ReturnAUserRequestWithTheSpecifiedSource()
        {
            string expected = string.Empty.GetRandom();
            var    actual   = new UserRequestBuilder().AddSource(expected).Build();

            Assert.Equal(expected, actual.Source);
        }
        public async Task RouteAnKnownIntentToTheProperHandlerUsingAJsonConfigFile()
        {
            string intentName = "hijklmnop";
            string routeUri   = $"http://www.{intentName}.com";

            var cmdProcessor = new Mock <ICommandProcessor>(MockBehavior.Loose);

            var config = new ConfigurationBuilder()
                         .AddJsonFile("routes.json")
                         .Build();

            var containerBuilder = new Autofac.ContainerBuilder();

            containerBuilder.RegisterInstance <ICommandProcessor>(cmdProcessor.Object);
            containerBuilder.RegisterInstance <IConfiguration>(config);
            var serviceProvider = new AutofacServiceProvider(containerBuilder.Build());

            var intent  = new IntentBuilder().Random().AddName(intentName);
            var request = new UserRequestBuilder().Random().AddIntent(intent).Build();

            var target = new ConfigRouter.Engine(serviceProvider);
            var actual = await target.HandleRequestAsync(request);

            cmdProcessor.Verify(p => p.ProcessAsync(routeUri, It.IsAny <UserRequest>()), Times.Once);
        }
Пример #6
0
        public void WhenUserExists_ProfileIsReturned()
        {
            // Arrange
            var request = new UserRequestBuilder()
                          .GetUser(testUserUsername)
                          .Build();

            // Act
            var response = Client.Execute(request, andExpect: System.Net.HttpStatusCode.OK).Content;

            // Assert

            /*
             *  We have two ways we can assert the shape (and/or content) of the response contract ...
             */
            //  1) Using JsonDocument:
            using var jsonResponse = JsonDocument.Parse(response);
            jsonResponse.RootElement.GetProperty("username").GetString().Should().NotBeNullOrEmpty();
            jsonResponse.RootElement.GetProperty("username").GetString().Should().Be(testUserUsername);

            //  2) Using strict JsonSerializerOptions to deserialize to a strongly-typed object:
            var responseObject = JsonSerializer.Deserialize <UserProfileResponse>(response, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = false,
            });

            responseObject.firstName.Should().NotBeNullOrEmpty();
            responseObject.lastName.Should().NotBeNullOrEmpty();
            responseObject.emailAddress.Should().NotBeNullOrEmpty();
            responseObject.source.Should().BeOneOf(1, 2);
            responseObject.userStatus.Should().BeOneOf(0, 1);
        }
Пример #7
0
        public void WhenRunningTests_CreateAUserIfItDoesntExist()
        {
            // Setup and check if test user exists
            SetupTest();
            var request = new UserRequestBuilder()
                          .GetUser(testUserUsername)
                          .Build();

            var response = Client.Execute(request);

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return;
            }

            // Create test user
            var newUserRequest = new UserRequestBuilder()
                                 .CreateUser()
                                 .UsingTestData()
                                 .WithUsername(testUserUsername)
                                 .WithPassword(testUserPassword)
                                 .Build();

            Client.Execute(newUserRequest, andExpect: System.Net.HttpStatusCode.Created);
        }
Пример #8
0
        public async Task RouteAnUnknownIntentToTheDefaultHandler()
        {
            var containerBuilder    = new Autofac.ContainerBuilder();
            var httpResponseMessage = new Mock <IHttpResponseMessage>();
            var httpResponseTask    = Task.Run(() => httpResponseMessage.Object);

            httpResponseMessage.SetupGet(m => m.Content).Returns(_routesJson);

            var httpProxy = new Mock <IHttpProxy>();

            httpProxy.Setup(p => p.GetAsync(It.IsAny <string>(), It.IsAny <IEnumerable <KeyValuePair <string, string> > >())).Returns(httpResponseTask);
            containerBuilder.RegisterInstance <IHttpProxy>(httpProxy.Object);

            var cmdProcessor = new Mock <ICommandProcessor>(MockBehavior.Loose);

            containerBuilder.RegisterInstance <ICommandProcessor>(cmdProcessor.Object);

            var serviceProvider = new AutofacServiceProvider(containerBuilder.Build());

            var request = new UserRequestBuilder().Random().Build();
            var target  = new DataServiceRouter.Engine(serviceProvider, string.Empty);
            var actual  = await target.HandleRequestAsync(request);

            cmdProcessor.Verify(p => p.ProcessAsync("abcdefg", It.IsAny <UserRequest>()), Times.Once);
        }
Пример #9
0
        public Command BuildUserCommand()
        {
            var command = new Command("user");
            var builder = new UserRequestBuilder(PathParameters, RequestAdapter);

            command.AddCommand(builder.BuildGetCommand());
            return(command);
        }
        public void ReturnAFullyPopulatedInstanceIfRandomIsSpecified()
        {
            var actual = new UserRequestBuilder().Random().Build();

            Assert.NotNull(actual.User);
            Assert.False(string.IsNullOrWhiteSpace(actual.Source));
            Assert.NotEqual(DateTime.MinValue, actual.RequestDateTimeUtc);
            Assert.NotNull(actual.Intent);
        }
Пример #11
0
        public void WhenAddingAUserWithInvalidData_WeGetBadRequest()
        {
            // Arrange
            var request = new UserRequestBuilder()
                          .CreateUser()
                          .Build();

            // Act/Assert
            Client.Execute(request, andExpect: System.Net.HttpStatusCode.BadRequest);
        }
        public void ReturnAUserRequestWithTheSpecifiedUser()
        {
            var expected = (new UserBuilder().Random().Build());
            var actual   = new UserRequestBuilder().AddUser(expected).Build();

            Assert.Equal(expected.Id, actual.User.Id);
            Assert.Equal(expected.FirstName, actual.User.FirstName);
            Assert.Equal(expected.LastName, actual.User.LastName);
            Assert.Equal(expected.AdditionalData.Count(), actual.User.AdditionalData.Count());
        }
Пример #13
0
        public void WhenUserDoesntExist_WeGetNotFound()
        {
            // Arrange
            const string NonExistentUser = "******";
            var          request         = new UserRequestBuilder()
                                           .GetUser(NonExistentUser)
                                           .Build();

            // Act
            Client.Execute(request, andExpect: System.Net.HttpStatusCode.NotFound);
        }
Пример #14
0
        public void WhenWeAuthenticateWithInValidCredentials_WeAreDenied()
        {
            // Arrange
            var request = new UserRequestBuilder()
                          .Authenticate(testUserUsername)
                          .WithPassword(testUserUsername)
                          .Build();

            // Act
            Client.Execute(request, andExpect: System.Net.HttpStatusCode.Unauthorized);
        }
Пример #15
0
 public HiDriveClient(IHiDriveAuthenticator authenticator)
 {
     Authenticator = authenticator ?? throw new ArgumentNullException(nameof(authenticator));
     _httpClient   = new HttpClient {
         BaseAddress = new Uri(ApiUrl), Timeout = Timeout.InfiniteTimeSpan
     };
     _httpClient.DefaultRequestHeaders.AcceptCharset.Add(new StringWithQualityHeaderValue("utf-8"));
     _httpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json"));
     Directory = new DirectoryRequestBuilder(this);
     File      = new FileRequestBuilder(this);
     Meta      = new MetaRequestBuilder(this);
     User      = new UserRequestBuilder(this);
 }
Пример #16
0
        public void WhenAddingAUserAndItExists_WeGetBadRequest()
        {
            // Arrange
            var request = new UserRequestBuilder()
                          .CreateUser()
                          .UsingTestData()
                          .WithUsername(testUserUsername)
                          .WithPassword(testUserPassword)
                          .Build();

            // Act/Assert
            Client.Execute(request, andExpect: System.Net.HttpStatusCode.BadRequest);
        }
Пример #17
0
        public void WhenWeAuthenticateWithValidCredentials_WeGetAnOkResponseWithTheCorrectUser()
        {
            // Arrange
            var request = new UserRequestBuilder()
                          .Authenticate(testUserUsername)
                          .WithPassword(testUserPassword)
                          .Build();

            // Act
            var response = Client.Execute(request, andExpect: System.Net.HttpStatusCode.OK).As <UserProfileResponse>();

            // Assert
            response.username.Should().Be(testUserUsername);
        }
 public async Task<User> GetUserAsync(string userId)
 {
     try
     {
         var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);
         UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                                graphServiceClient);
         return await userBuilder.Request().Select("id,displayName,jobTitle,email,userPrincipalName,department,mobilePhone,city,country,streetAddress").GetAsync();
     }
     catch (Exception el)
     {
         el.ToString();
     }
     return null;
 }
Пример #19
0
        public async Task <User> GetUserAsync(string userId)
        {
            try
            {
                var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);

                UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                                        graphServiceClient);
                return(await userBuilder.Request().Select("id,displayName,jobTitle,email,userPrincipalName,department,mobilePhone,city,country,streetAddress").GetAsync());
            }
            catch (Exception el)
            {
                el.ToString();
            }
            return(null);
        }
Пример #20
0
        public async Task <User> GetUserManagerAsync(string userId)
        {
            try
            {
                var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);

                UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                                        graphServiceClient);
                User user = (await userBuilder.Manager.Request().GetAsync()) as User;
                return(user);
            }
            catch (Exception el)
            {
                el.ToString();
            }
            return(null);
        }
        public async Task<User> GetUserManagerAsync(string userId)
        {
            try
            {
                var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);

                UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                                       graphServiceClient);
                User user = (await userBuilder.Manager.Request().GetAsync()) as User;
                return user;
            }
            catch (Exception el)
            {
                el.ToString();
            }
            return null;
        }
Пример #22
0
        public async Task <List <DriveItem> > GetUserFilesAsync(string userId)
        {
            try
            {
                var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);

                UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                                        graphServiceClient);
                return((await userBuilder.Drive.Root.Children.Request().GetAsync()).CurrentPage.ToList());
            }

            catch (Exception el)
            {
                el.ToString();
            }
            return(null);
        }
Пример #23
0
        public async Task <List <DirectoryObject> > GetUserGroupsAsync(string userId)
        {
            try
            {
                var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);

                UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                                        graphServiceClient);
                var groups    = (await userBuilder.MemberOf.Request().GetAsync()).CurrentPage.ToList();
                var retGroups = groups.Where(i => i is Group).ToList();
                return(retGroups);
            }

            catch (Exception el)
            {
                el.ToString();
            }
            return(null);
        }
        public async Task RouteAnKnownIntentToTheProperHandler()
        {
            string intentName = string.Empty.GetRandom();
            string routeUri   = $"http://{string.Empty.GetRandom()}";

            var cmdProcessor = new Mock <ICommandProcessor>(MockBehavior.Loose);

            var containerBuilder = new Autofac.ContainerBuilder();

            containerBuilder.RegisterInstance <ICommandProcessor>(cmdProcessor.Object);
            var serviceProvider = new AutofacServiceProvider(containerBuilder.Build());

            var routes  = new RouteCollectionBuilder(string.Empty.GetRandom()).Add(intentName, routeUri).Build();
            var intent  = new IntentBuilder().Random().AddName(intentName);
            var request = new UserRequestBuilder().Random().AddIntent(intent).Build();

            var target = new SoftRouter.Engine(serviceProvider, routes);
            var actual = await target.HandleRequestAsync(request);

            cmdProcessor.Verify(p => p.ProcessAsync(routeUri, It.IsAny <UserRequest>()), Times.Once);
        }
        public async Task<List<DriveItem>> GetUserFilesAsync(string userId)
        {
            try
            {
                var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);
                UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                           graphServiceClient);
                return (await userBuilder.Drive.Root.Children.Request().GetAsync()).CurrentPage.ToList();
            }

            catch (Exception el)
            {
                el.ToString();
            }
            return null;
        }
        public async Task<List<DirectoryObject>> GetUserGroupsAsync(string userId)
        {
            try
            {
                var graphServiceClient = await AuthenticationHelper.GetGraphServiceAsync(AuthenticationHelper.EndpointUrl);
                UserRequestBuilder userBuilder = new UserRequestBuilder(string.Format("{0}/users/{1}", AuthenticationHelper.EndpointUrl, userId),
                                                           graphServiceClient);
                var groups = (await userBuilder.MemberOf.Request().GetAsync()).CurrentPage.ToList();
                var retGroups = groups.Where(i => i is Group).ToList();
                return retGroups;
            }

            catch (Exception el)
            {
                el.ToString();
            }
            return null;
        }
        public void ReturnAValidInstance()
        {
            var actual = new UserRequestBuilder().Build();

            Assert.NotNull(actual);
        }
        public void ReturnTheCurrentUtcDateTimeByDefault()
        {
            var actual = new UserRequestBuilder().Build();

            Assert.Equal(DateTime.UtcNow.ToMinutePrecision(), actual.RequestDateTimeUtc.ToMinutePrecision());
        }