public async Task EnsuresNonNullArguments()
            {
                var client = new UserAdministrationClient(Substitute.For <IApiConnection>());
                await Assert.ThrowsAsync <ArgumentNullException>(() => client.CreateImpersonationToken(null, new NewImpersonationToken()));

                await Assert.ThrowsAsync <ArgumentNullException>(() => client.CreateImpersonationToken("login", null));
            }
            public async Task EnsuresNonEmptyString()
            {
                var client    = new UserAdministrationClient(Substitute.For <IApiConnection>());
                var exception = await Assert.ThrowsAsync <ArgumentException>(() => client.CreateImpersonationToken("", new NewImpersonationToken()));

                Assert.Equal("login", exception.ParamName);
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new UserAdministrationClient(connection);

                var expectedUri = "admin/users/auser/authorizations";

                client.CreateImpersonationToken("auser", new NewImpersonationToken());

                connection.Received().Post <Authorization>(
                    Arg.Is <Uri>(u => u.ToString() == expectedUri),
                    Arg.Any <object>());
            }
            public void PassesRequestObject()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new UserAdministrationClient(connection);

                string[] scopes = new string[] { "public-repo" };
                client.CreateImpersonationToken("auser", new NewImpersonationToken(scopes));

                connection.Received().Post <Authorization>(
                    Arg.Any <Uri>(),
                    Arg.Is <NewImpersonationToken>(a =>
                                                   a.Scopes.Count() == scopes.Length &&
                                                   a.Scopes.ToList().All(s => scopes.Contains(s)) &&
                                                   scopes.ToList().All(s => a.Scopes.Contains(s))));
            }
            public void PassesRequestObject()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new UserAdministrationClient(connection);

                string[] scopes = new string[] { "public-repo" };
                client.CreateImpersonationToken("auser", new NewImpersonationToken(scopes));

                connection.Received().Post<Authorization>(
                    Arg.Any<Uri>(),
                    Arg.Is<NewImpersonationToken>(a =>
                        a.Scopes.Count() == scopes.Length &&
                        a.Scopes.ToList().All(s => scopes.Contains(s)) &&
                        scopes.ToList().All(s => a.Scopes.Contains(s))));
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new UserAdministrationClient(connection);

                var expectedUri = "admin/users/auser/authorizations";

                client.CreateImpersonationToken("auser", new NewImpersonationToken());

                connection.Received().Post<Authorization>(
                    Arg.Is<Uri>(u => u.ToString() == expectedUri),
                    Arg.Any<object>());
            }
 public async Task EnsuresNonEmptyString()
 {
     var client = new UserAdministrationClient(Substitute.For<IApiConnection>());
     var exception = await Assert.ThrowsAsync<ArgumentException>(() => client.CreateImpersonationToken("", new NewImpersonationToken()));
     Assert.Equal("login", exception.ParamName);
 }
 public async Task EnsuresNonNullArguments()
 {
     var client = new UserAdministrationClient(Substitute.For<IApiConnection>());
     await Assert.ThrowsAsync<ArgumentNullException>(() => client.CreateImpersonationToken(null, new NewImpersonationToken()));
     await Assert.ThrowsAsync<ArgumentNullException>(() => client.CreateImpersonationToken("login", null));
 }