public void CreateWithUser() { var serviceAccountCred = new ServiceAccountCredential(new ServiceAccountCredential.Initializer("MyId", "MyTokenServerUrl") { Clock = new MockClock(), AccessMethod = new DummyAccessMethod(), HttpClientFactory = new DummyHttpClientFactory(), DefaultExponentialBackOffPolicy = ExponentialBackOffPolicy.Exception, // This is not the default ProjectId = "a_project_id", User = "******", Scopes = new[] { "scope1" }, }.FromPrivateKey(PrivateKey)); var cred1 = GoogleCredential.FromCredential(serviceAccountCred); var cred2 = cred1.CreateWithUser("user2"); var svc1 = (ServiceAccountCredential)cred1.UnderlyingCredential; var svc2 = (ServiceAccountCredential)cred2.UnderlyingCredential; Assert.Same(serviceAccountCred, svc1); Assert.NotSame(serviceAccountCred, svc2); Assert.Same(svc1.Id, svc2.Id); Assert.Same(svc1.TokenServerUrl, svc2.TokenServerUrl); Assert.Same(svc1.Clock, svc2.Clock); Assert.Same(svc1.AccessMethod, svc2.AccessMethod); Assert.Same(svc1.HttpClientFactory, svc2.HttpClientFactory); Assert.Equal(svc1.DefaultExponentialBackOffPolicy, svc2.DefaultExponentialBackOffPolicy); Assert.Same(svc1.ProjectId, svc2.ProjectId); Assert.NotSame(svc1.User, svc2.User); Assert.Same(svc1.Scopes, svc2.Scopes); Assert.Equal("user1", svc1.User); Assert.Equal("user2", svc2.User); }