public void SolutionBindingSerializer_WriteSolutionBinding_ReadSolutionBinding() { // Setup SolutionBindingSerializer testSubject = this.CreateTestSubject(); var serverUri = new Uri("http://xxx.www.zzz/yyy:9000"); var creds = new BasicAuthCredentials("user", "pwd".ConvertToSecureString()); var projectKey = "MyProject Key"; var written = new BoundSonarQubeProject(serverUri, projectKey, creds); // Act (write) string output = testSubject.WriteSolutionBinding(written); this.sourceControlledFileSystem.WritePendingNoErrorsExpected(); Assert.IsNotNull(output, "Expected a real file"); this.TestContext.AddResultFile(output); Assert.IsTrue(File.Exists(output), "Expected a real file"); // Verify this.store.AssertHasCredentials(serverUri); // Act (read) BoundSonarQubeProject read = testSubject.ReadSolutionBinding(); // Verify var newCreds = read.Credentials as BasicAuthCredentials; Assert.AreNotEqual(creds, newCreds, "Different credential instance were expected"); Assert.AreEqual(creds.UserName, newCreds.UserName); Assert.AreEqual(creds.Password.ConvertToUnsecureString(), newCreds.Password.ConvertToUnsecureString()); Assert.AreEqual(written.ServerUri, read.ServerUri); this.outputPane.AssertOutputStrings(0); }
public void CreateConnectionInformation_BasicAuthCredentials() { // Setup var creds = new BasicAuthCredentials("UserName", "password".ConvertToSecureString()); var input = new BoundSonarQubeProject(new Uri("http://server"), "ProjectKey", creds); // Act ConnectionInformation conn = input.CreateConnectionInformation(); // Verify Assert.AreEqual(input.ServerUri, conn.ServerUri); Assert.AreEqual(creds.UserName, conn.UserName); Assert.AreEqual(creds.Password.ConvertToUnsecureString(), conn.Password.ConvertToUnsecureString()); }
private bool WriteBindingInformation(string configFile, BoundSonarQubeProject binding) { if (this.SafePerformFileSystemOperation(() => WriteConfig(configFile, binding))) { BasicAuthCredentials credentials = binding.Credentials as BasicAuthCredentials; if (credentials != null) { Debug.Assert(credentials.UserName != null, "User name is not expected to be null"); Debug.Assert(credentials.Password != null, "Password name is not expected to be null"); var creds = new Credential(credentials.UserName, credentials.Password.ToUnsecureString()); this.credentialStore.WriteCredentials(binding.ServerUri, creds); } return(true); } return(false); }
public void SolutionBindingSerializer_WriteSolutionBinding_AddConfigFileToSolutionItemsFolder() { // Setup SolutionBindingSerializer testSubject = this.CreateTestSubject(); var serverUri = new Uri("http://xxx.www.zzz/yyy:9000"); var creds = new BasicAuthCredentials("user", "pwd".ConvertToSecureString()); var projectKey = "MyProject Key"; var toWrite = new BoundSonarQubeProject(serverUri, projectKey, creds); ProjectMock solutionProject = (ProjectMock)this.projectSystemHelper.SolutionItemsProject; // Act string output = testSubject.WriteSolutionBinding(toWrite); // Verify that not actually done anything until the pending files were written this.store.AssertHasNoCredentials(serverUri); Assert.IsFalse(solutionProject.Files.ContainsKey(output), "Not expected to be added to solution items folder just yet"); // Act (write pending) this.sourceControlledFileSystem.WritePendingNoErrorsExpected(); // Verify this.store.AssertHasCredentials(serverUri); Assert.IsTrue(solutionProject.Files.ContainsKey(output), "File {0} was not added to project", output); // Act (write again) string output2 = testSubject.WriteSolutionBinding(toWrite); this.sourceControlledFileSystem.WritePendingNoErrorsExpected(); // Verify Assert.AreEqual(output, output2, "Should be the same file"); this.store.AssertHasCredentials(serverUri); Assert.IsTrue(solutionProject.Files.ContainsKey(output), "File {0} should remain in the project", output); }
public void SolutionBindingSerializer_WriteSolutionBinding_IOError() { // Setup SolutionBindingSerializer testSubject = this.CreateTestSubject(); var serverUri = new Uri("http://xxx.www.zzz/yyy:9000"); var creds = new BasicAuthCredentials("user", "pwd".ConvertToSecureString()); var projectKey = "MyProject Key"; var written = new BoundSonarQubeProject(serverUri, projectKey, creds); string output = testSubject.WriteSolutionBinding(written); this.sourceControlledFileSystem.WritePendingNoErrorsExpected(); using (new FileStream(output, FileMode.Open, FileAccess.Read, FileShare.None)) { // Act (write again) string output2 = testSubject.WriteSolutionBinding(written); this.sourceControlledFileSystem.WritePendingErrorsExpected(); // Verify Assert.AreEqual(output, output2, "Same output is expected"); this.outputPane.AssertOutputStrings(1); } }
public void SolutionBindingSerializer_ReadSolutionBinding_InvalidData() { // Setup SolutionBindingSerializer testSubject = this.CreateTestSubject(); var serverUri = new Uri("http://xxx.www.zzz/yyy:9000"); var creds = new BasicAuthCredentials("user", "pwd".ConvertToSecureString()); var projectKey = "MyProject Key"; var written = new BoundSonarQubeProject(serverUri, projectKey, creds); string output = testSubject.WriteSolutionBinding(written); this.sourceControlledFileSystem.WritePendingNoErrorsExpected(); Assert.IsNotNull(output, "Expected a real file"); File.WriteAllText(output, "bla bla bla: bla"); // Act (read) BoundSonarQubeProject read = testSubject.ReadSolutionBinding(); // Verify Assert.IsNull(read, "Not expecting any binding information in case of error"); this.outputPane.AssertOutputStrings(1); }
public void SolutionBindingSerializer_WriteSolutionBinding_ReadSolutionBinding_OnRealStore() { // Setup var testSubject = new SolutionBindingSerializer(this.serviceProvider); var serverUri = new Uri("http://xxx.www.zzz/yyy:9000"); var projectKey = "MyProject Key"; testSubject.Store.DeleteCredentials(serverUri); // Case 1: has credentials var creds = new BasicAuthCredentials("user", "pwd".ConvertToSecureString()); var written = new BoundSonarQubeProject(serverUri, projectKey, creds); // Act (write + read) BoundSonarQubeProject read = null; try { testSubject.WriteSolutionBinding(written); this.sourceControlledFileSystem.WritePendingNoErrorsExpected(); read = testSubject.ReadSolutionBinding(); } finally { testSubject.Store.DeleteCredentials(serverUri); } // Verify var newCreds = read.Credentials as BasicAuthCredentials; Assert.AreNotEqual(creds, newCreds, "Different credential instance were expected"); Assert.AreEqual(creds.UserName, newCreds.UserName); Assert.AreEqual(creds.Password.ConvertToUnsecureString(), newCreds?.Password.ConvertToUnsecureString()); Assert.AreEqual(written.ServerUri, read.ServerUri); this.outputPane.AssertOutputStrings(0); // Case 2: has not credentials (anonymous) creds = null; written = new BoundSonarQubeProject(serverUri, projectKey, creds); // Act (write + read) read = null; try { testSubject.WriteSolutionBinding(written); read = testSubject.ReadSolutionBinding(); } finally { testSubject.Store.DeleteCredentials(serverUri); } // Verify Assert.IsNull(read.Credentials); Assert.AreEqual(written.ServerUri, read.ServerUri); this.outputPane.AssertOutputStrings(0); }