コード例 #1
0
        public async Task ShouldFailSubNamespaceExists()
        {
            var signer =
                KeyPair.CreateFromPrivateKey(Config.PrivateKeyMain);

            var transaction = RegisterNamespaceTransaction.CreateSubNamespace(
                NetworkType.Types.MIJIN_TEST,
                Deadline.CreateHours(2),
                "happy",
                "yooo")
                              .SignWith(signer);

            listener.ConfirmedTransactionsGiven(Address.CreateFromPublicKey(transaction.Signer, NetworkType.Types.MIJIN_TEST))
            .Subscribe(
                e =>
            {
                Assert.Fail("Success");
            });

            await new TransactionHttp(host).Announce(transaction);

            var status = await listener.TransactionStatus(Address.CreateFromPublicKey(signer.PublicKeyString, NetworkType.Types.MIJIN_TEST)).Where(e => e.Hash == transaction.Hash).Take(1);

            Assert.AreEqual("Failure_Namespace_Already_Exists", status.Status);
        }
コード例 #2
0
        private async Task <NamespaceInfo> GenerateNamespace(Account account, string namespaceName, NamespaceId parentId)
        {
            RegisterNamespaceTransaction registerNamespaceTransaction;

            if (parentId == null)
            {
                registerNamespaceTransaction = RegisterNamespaceTransaction.CreateRootNamespace(
                    Deadline.Create(),
                    namespaceName,
                    100,
                    Fixture.NetworkType
                    );
            }
            else
            {
                registerNamespaceTransaction = RegisterNamespaceTransaction.CreateSubNamespace(
                    Deadline.Create(),
                    namespaceName,
                    parentId,
                    Fixture.NetworkType
                    );
            }


            var signedTransaction = account.Sign(registerNamespaceTransaction, Fixture.GenerationHash);

            var tx = Fixture.SiriusWebSocketClient.Listener.ConfirmedTransactionsGiven(account.Address).Take(1)
                     .Timeout(TimeSpan.FromSeconds(3000));

            await Fixture.SiriusClient.TransactionHttp.Announce(signedTransaction);

            Log.WriteLine(
                $"Registered namespace {namespaceName} for account {account.Address.Plain} with transaction {signedTransaction.Hash}");

            var result = await tx;

            Log.WriteLine($"Request confirmed with transaction {result.TransactionInfo.Hash}");

            var expectedId = parentId != null?NamespaceId.CreateFromParent(namespaceName, parentId) : new NamespaceId(namespaceName);

            var namespaceInfo = await Fixture.SiriusClient.NamespaceHttp.GetNamespace(expectedId);

            Log.WriteLine(
                $"Retrieved namespace {namespaceName} successfully. The namespace HexId {namespaceInfo.Id.HexId}");

            return(namespaceInfo);
        }
コード例 #3
0
        public async Task Should_Create_Aggregate_Root_And_SubNamespace()
        {
            var bobAccount = await Fixture.GenerateAccountWithCurrency(500);


            var rootNs = "nsp" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 6);
            var subNs  = "subnp" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 6);

            var rootId  = new NamespaceId(rootNs);
            var childId = new NamespaceId(rootNs + "." + subNs);

            Log.WriteLine($"Going to create aggregate root {rootId} and child namespace {childId}");

            var registerRootTransaction = RegisterNamespaceTransaction.CreateRootNamespace(
                Deadline.Create(),
                rootNs,
                100,
                Fixture.NetworkType
                );

            var registerChildTransaction = RegisterNamespaceTransaction.CreateSubNamespace(
                Deadline.Create(),
                subNs,
                rootId,
                Fixture.NetworkType
                );

            var aggregateTransaction = AggregateTransaction.CreateComplete(
                Deadline.Create(),
                new List <Transaction>
            {
                registerRootTransaction.ToAggregate(bobAccount.PublicAccount),
                registerChildTransaction.ToAggregate(bobAccount.PublicAccount)
            }, Fixture.NetworkType);

            var signedTransaction = bobAccount.Sign(aggregateTransaction, Fixture.GenerationHash);

            Log.WriteLine($"Going to announce transaction {signedTransaction.Hash}");

            var tx = Fixture.SiriusWebSocketClient.Listener.ConfirmedTransactionsGiven(bobAccount.Address).Take(1)
                     .Timeout(TimeSpan.FromSeconds(3000));

            await Fixture.SiriusClient.TransactionHttp.Announce(signedTransaction);

            var result = await tx;

            Log.WriteLine($"Request confirmed with transaction {result.TransactionInfo.Hash}");


            result.TransactionType.Should().BeEquivalentTo(EntityType.AGGREGATE_COMPLETE);

            /*
             * var rootNsInfo = await Fixture.SiriusClient.NamespaceHttp.GetNamespace(rootId).Timeout(_fixture.DefaultTimeout);
             * rootNsInfo.Should().NotBeNull();
             * rootNsInfo.IsRoot.Should().BeTrue();
             *
             * var subNsInfo = await Fixture.SiriusClient.NamespaceHttp.GetNamespace(childId).Timeout(_fixture.DefaultTimeout);
             * subNsInfo.Should().NotBeNull();
             * subNsInfo.IsSubNamespace.Should().BeTrue();
             */

            //Verify the root namespace and sub namespace owned by the account
            var nsInfos = await Fixture.SiriusClient.NamespaceHttp.GetNamespacesFromAccount(bobAccount.Address, null);

            nsInfos.Should().HaveCount(2);
            nsInfos.Single(ns => ns.Id.HexId == rootId.HexId).Should().NotBeNull();
            nsInfos.Single(ns => ns.Id.HexId == childId.HexId).Should().NotBeNull();

            //Verify the name of the namespaces
            var nsNames = await Fixture.SiriusClient.NamespaceHttp.GetNamespacesNames(new List <NamespaceId>
            {
                rootId,
                childId
            });

            nsNames.Should().HaveCount(2);
            nsNames.Select(ns => ns.Name == rootId.Name).Should().NotBeNull();
            nsNames.Select(ns => ns.Name == childId.Name).Should().NotBeNull();
        }