예제 #1
0
        public void DeserializationExceptionWhenMalformedJson()
        {
            var path = Path.GetTempFileName();

            File.WriteAllText(path, @"{ ""foo }");
            Assert.Throws <DeserializationException>(() => BsiMetadataExtractor.ProduceSbomMetadata(path, BuildEnvironmentName.BuildXL, "packageName", "1.0"));
        }
예제 #2
0
        public void SBOMMetadataFromBuildSessionInfoFile(bool useStaticMethod)
        {
            var path = Path.GetTempFileName();
            var uri  = "https://mseng.visualstudio.com/DefaultCollection/Domino/_git/BuildXL.Internal";

            File.WriteAllText(path, SampleBsiJson(uri));
            var          packageName    = "myPackageName";
            var          packageVersion = "1.0";
            SBOMMetadata metadata;

            if (useStaticMethod)
            {
                metadata = BsiMetadataExtractor.ProduceSbomMetadata(path, BuildEnvironmentName.BuildXL, packageName, packageVersion);
            }
            else
            {
                var bsiHelper = new BsiMetadataExtractor(path);
                _        = bsiHelper.ProduceSbomMetadata(BuildEnvironmentName.BuildXL, "someOtherPackageName");
                metadata = bsiHelper.ProduceSbomMetadata(BuildEnvironmentName.BuildXL, packageName, packageVersion);
            }

            XAssert.AreEqual(BuildEnvironmentName.BuildXL, metadata.BuildEnvironmentName);
            XAssert.AreEqual(packageName, metadata.PackageName);
            XAssert.AreEqual(SampleBranch, metadata.Branch);
            XAssert.AreEqual(SampleBuildQueueName, metadata.BuildName);
            XAssert.AreEqual(SampleSessionId, metadata.BuildId);
            XAssert.AreEqual(SampleChangeId, metadata.CommitId);
            XAssert.AreEqual(uri, metadata.RepositoryUri);
        }
예제 #3
0
        public void ExtractValidUriFromMetadata(string jsonUri, bool isValid)
        {
            XAssert.AreEqual(Uri.IsWellFormedUriString(jsonUri, UriKind.Absolute), isValid);
            var path = Path.GetTempFileName();

            File.WriteAllText(path, SampleBsiJson(jsonUri));
            var metadata = BsiMetadataExtractor.ProduceSbomMetadata(path, BuildEnvironmentName.BuildXL, "packageName", "1.0");

            XAssert.IsTrue(Uri.IsWellFormedUriString(metadata.RepositoryUri, UriKind.Absolute));
        }
예제 #4
0
        public void DoNotFailWhenFieldsAreMissing()
        {
            var path = Path.GetTempFileName();

            File.WriteAllText(path, "{ }");
            var metadata = BsiMetadataExtractor.ProduceSbomMetadata(path, BuildEnvironmentName.BuildXL, "packageName", "1.0");

            XAssert.AreEqual(BuildEnvironmentName.BuildXL, metadata.BuildEnvironmentName);
            XAssert.AreEqual("packageName", metadata.PackageName);
            XAssert.IsNull(metadata.Branch);
            XAssert.IsNull(metadata.BuildName);
            XAssert.IsNull(metadata.BuildId);
            XAssert.IsNull(metadata.CommitId);
            XAssert.IsNull(metadata.RepositoryUri);
        }