public void RewriteOrCreateInternalVisibleToAttributes() { var usedInternalsVisibleToAttributes = new[] { CreateCommonInternalsVisibleToAttribute("Mono.Cecil1"), CreateCommonInternalsVisibleToAttribute("Mono.Cecil2, PublicKey=000000"), CreateCommonInternalsVisibleToAttribute("Mono.Cecil3"), CreateCommonInternalsVisibleToAttribute("Mono.Cecil4, PublicKey=123123") }; var notUsedInternalsVisibleToAttributes = new[] { CreateCommonInternalsVisibleToAttribute("Mono.Cecil5"), CreateCommonInternalsVisibleToAttribute("Mono.Cecil6, PublicKey=343434") }; var commonAttributes = usedInternalsVisibleToAttributes.Concat(notUsedInternalsVisibleToAttributes).ToArray(); assembly.AddCommonAttributes(commonAttributes); assembly.CommonAssemblyMock.Setup(commonAssembly => commonAssembly.Attributes).Returns(commonAttributes); assembly.MainMonoCecilAssemblyMock.Setup(a => a.CustomAttributes).Returns(new Collection <CustomAttribute>(commonAttributes.Select(attribute => attribute.MonoCecil).ToArray())); applicationPatcherSelfConfiguration.MonoCecilNewPublicKey = new byte[] { 1, 2, 3 }; applicationPatcherSelfConfiguration.MonoCecilSelectedInternalsVisibleToAttributeNames = new[] { "Mono.Cecil1", "Mono.Cecil2", "Mono.Cecil3", "Mono.Cecil4" }; Patch(); assembly.MainMonoCecilAssembly.CustomAttributes.Should() .HaveCount(7) .And.Contain(attribute => attribute.ConstructorArguments.Count == 1 && (attribute.ConstructorArguments.First().Value as string).StartsWith("DynamicProxyGenAssembly2", StringComparison.Ordinal)) .And.Contain(attribute => attribute.ConstructorArguments.Count == 1 && attribute.ConstructorArguments.First().Value as string == "Mono.Cecil1, PublicKey=010203") .And.Contain(attribute => attribute.ConstructorArguments.Count == 1 && attribute.ConstructorArguments.First().Value as string == "Mono.Cecil2, PublicKey=010203") .And.Contain(attribute => attribute.ConstructorArguments.Count == 1 && attribute.ConstructorArguments.First().Value as string == "Mono.Cecil3, PublicKey=010203") .And.Contain(attribute => attribute.ConstructorArguments.Count == 1 && attribute.ConstructorArguments.First().Value as string == "Mono.Cecil4, PublicKey=010203") .And.Contain(attribute => attribute.ConstructorArguments.Count == 1 && attribute.ConstructorArguments.First().Value as string == "Mono.Cecil5") .And.Contain(attribute => attribute.ConstructorArguments.Count == 1 && attribute.ConstructorArguments.First().Value as string == "Mono.Cecil6, PublicKey=343434"); }