2016-05-26 16:06:52 +03:00
|
|
|
//
|
|
|
|
// MCSession Unit Tests
|
|
|
|
//
|
|
|
|
// Authors:
|
|
|
|
// Sebastien Pouliot <sebastien@xamarin.com>
|
|
|
|
//
|
|
|
|
// Copyright 2013 Xamarin Inc.
|
|
|
|
//
|
|
|
|
|
|
|
|
#if !__TVOS__ && !__WATCHOS__
|
|
|
|
|
|
|
|
using System;
|
|
|
|
using Foundation;
|
2017-01-12 21:13:56 +03:00
|
|
|
#if !MONOMAC
|
2016-05-26 16:06:52 +03:00
|
|
|
using UIKit;
|
2017-01-12 21:13:56 +03:00
|
|
|
#endif
|
2016-05-26 16:06:52 +03:00
|
|
|
using MultipeerConnectivity;
|
|
|
|
using ObjCRuntime;
|
|
|
|
using Security;
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
|
|
using MonoTouchFixtures.Security;
|
2021-11-15 10:06:36 +03:00
|
|
|
using Xamarin.Utils;
|
2016-05-26 16:06:52 +03:00
|
|
|
|
|
|
|
namespace MonoTouchFixtures.MultipeerConnectivity {
|
|
|
|
|
|
|
|
[TestFixture]
|
|
|
|
// we want the test to be availble if we use the linker
|
|
|
|
[Preserve (AllMembers = true)]
|
|
|
|
public class SessionTest {
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void CtorPeer ()
|
|
|
|
{
|
2021-11-15 10:06:36 +03:00
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.iOS, 7, 0, throwIfOtherPlatform: false);
|
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.MacOSX, 10, 10, throwIfOtherPlatform: false);
|
2016-05-26 16:06:52 +03:00
|
|
|
|
|
|
|
using (var peer = new MCPeerID ("me"))
|
|
|
|
using (var s = new MCSession (peer)) {
|
|
|
|
Assert.AreSame (s.MyPeerID, peer, "MyPeerID");
|
|
|
|
Assert.Null (s.SecurityIdentity, "SecurityIdentity");
|
2017-01-12 21:13:56 +03:00
|
|
|
#if MONOMAC
|
2021-11-15 10:06:36 +03:00
|
|
|
var pref = TestRuntime.CheckSystemVersion (ApplePlatform.MacOSX, 10, 11) ? MCEncryptionPreference.Required : MCEncryptionPreference.Optional;
|
2017-01-12 21:13:56 +03:00
|
|
|
#else
|
2021-11-15 10:06:36 +03:00
|
|
|
var pref = TestRuntime.CheckSystemVersion (ApplePlatform.iOS, 9, 0) ? MCEncryptionPreference.Required : MCEncryptionPreference.Optional;
|
2017-01-12 21:13:56 +03:00
|
|
|
#endif
|
2016-05-26 16:06:52 +03:00
|
|
|
Assert.That (s.EncryptionPreference, Is.EqualTo (pref), "EncryptionPreference");
|
|
|
|
Assert.That (s.ConnectedPeers, Is.Empty, "ConnectedPeers");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Ctor_OptionalIdentity ()
|
|
|
|
{
|
2021-11-15 10:06:36 +03:00
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.iOS, 7, 0, throwIfOtherPlatform: false);
|
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.MacOSX, 10, 10, throwIfOtherPlatform: false);
|
2016-05-26 16:06:52 +03:00
|
|
|
|
|
|
|
using (var peer = new MCPeerID ("me"))
|
|
|
|
using (var s = new MCSession (peer, null, MCEncryptionPreference.None)) {
|
|
|
|
Assert.AreSame (s.MyPeerID, peer, "MyPeerID");
|
|
|
|
Assert.Null (s.SecurityIdentity, "SecurityIdentity");
|
|
|
|
Assert.That (s.EncryptionPreference, Is.EqualTo (MCEncryptionPreference.None), "EncryptionPreference");
|
|
|
|
Assert.That (s.ConnectedPeers, Is.Empty, "ConnectedPeers");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Ctor_Identity ()
|
|
|
|
{
|
2021-11-15 10:06:36 +03:00
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.iOS, 7, 0, throwIfOtherPlatform: false);
|
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.MacOSX, 10, 10, throwIfOtherPlatform: false);
|
2016-05-26 16:06:52 +03:00
|
|
|
|
|
|
|
using (var id = IdentityTest.GetIdentity ())
|
|
|
|
using (var peer = new MCPeerID ("me"))
|
|
|
|
using (var s = new MCSession (peer, id, MCEncryptionPreference.Required)) {
|
|
|
|
Assert.AreSame (s.MyPeerID, peer, "MyPeerID");
|
|
|
|
Assert.That (s.SecurityIdentity.Count, Is.EqualTo ((nuint) 1), "SecurityIdentity");
|
|
|
|
Assert.That (s.SecurityIdentity.GetItem<SecIdentity> (0).Handle, Is.EqualTo (id.Handle), "SecurityIdentity");
|
|
|
|
Assert.That (s.EncryptionPreference, Is.EqualTo (MCEncryptionPreference.Required), "EncryptionPreference");
|
|
|
|
Assert.That (s.ConnectedPeers, Is.Empty, "ConnectedPeers");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Ctor_Identity_Certificates ()
|
|
|
|
{
|
2021-11-15 10:06:36 +03:00
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.iOS, 7, 0, throwIfOtherPlatform: false);
|
|
|
|
TestRuntime.AssertSystemVersion (ApplePlatform.MacOSX, 10, 10, throwIfOtherPlatform: false);
|
2016-05-26 16:06:52 +03:00
|
|
|
|
|
|
|
using (var id = IdentityTest.GetIdentity ())
|
|
|
|
using (var trust = new SecTrust (id.Certificate, SecPolicy.CreateBasicX509Policy ()))
|
|
|
|
using (var peer = new MCPeerID ("me")) {
|
|
|
|
SecCertificate [] certs = new SecCertificate [trust.Count];
|
2022-11-10 19:59:26 +03:00
|
|
|
for (int i = 0; i < trust.Count; i++)
|
2016-05-26 16:06:52 +03:00
|
|
|
certs [i] = trust [i];
|
|
|
|
|
|
|
|
using (var s = new MCSession (peer, id, certs, MCEncryptionPreference.Required)) {
|
|
|
|
Assert.AreSame (s.MyPeerID, peer, "MyPeerID");
|
|
|
|
// it's a self-signed certificate that's used for the identity
|
|
|
|
// so it's not added twice to the collection being returned
|
2020-07-17 09:48:09 +03:00
|
|
|
Assert.That (s.SecurityIdentity.Count, Is.EqualTo ((nuint) 1), "SecurityIdentity");
|
2016-05-26 16:06:52 +03:00
|
|
|
Assert.That (s.SecurityIdentity.GetItem<SecIdentity> (0).Handle, Is.EqualTo (certs [0].Handle), "SecurityIdentity");
|
|
|
|
Assert.That (s.EncryptionPreference, Is.EqualTo (MCEncryptionPreference.Required), "EncryptionPreference");
|
|
|
|
Assert.That (s.ConnectedPeers, Is.Empty, "ConnectedPeers");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // !__TVOS__ && !__WATCHOS__
|