/// <summary>
 /// Create approval request
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='privateStoreId'>
 /// The store ID - must use the tenant ID
 /// </param>
 /// <param name='requestApprovalId'>
 /// The request approval ID to get create or update
 /// </param>
 /// <param name='payload'>
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <RequestApprovalResource> CreateApprovalRequestAsync(this IPrivateStoreOperations operations, string privateStoreId, string requestApprovalId, RequestApprovalResource payload = default(RequestApprovalResource), CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateApprovalRequestWithHttpMessagesAsync(privateStoreId, requestApprovalId, payload, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Beispiel #2
0
        public void ApproveByAdminNotificationTest()
        {
            using (var context = MockContext.Start(this.GetType()))
            {
                using (var client = context.GetServiceClient <MarketplaceRPServiceClient>())
                {
                    SetUp(client);
                    //create approval request
                    PlanDetails planDetails = new PlanDetails
                    {
                        PlanId           = planId,
                        Justification    = "because ...",
                        SubscriptionId   = testSubscription,
                        SubscriptionName = TestSubscriptionName
                    };
                    RequestApprovalResource requestApprovalResource = new RequestApprovalResource
                    {
                        PublisherId  = "data3-limited-1019419",
                        PlansDetails = new List <PlanDetails>()
                        {
                            planDetails
                        }
                    };

                    try
                    {
                        var approvalRequest = client.PrivateStore.CreateApprovalRequest(PrivateStoreId, requestApprovalId, requestApprovalResource);
                    }
                    catch (Exception ex)
                    {
                        if (!ex.Message.Contains("BadRequest"))
                        {
                            throw;
                        }
                    }
                    var notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId);
                    Assert.Contains(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId);

                    // Approve request by admin
                    AdminRequestApprovalsResource adminRequestApprovalsResource = new AdminRequestApprovalsResource
                    {
                        PublisherId   = publisherId,
                        AdminAction   = "Approved",
                        ApprovedPlans = new List <string>()
                        {
                            planId
                        },
                        Comment       = "I'm ok with that",
                        CollectionIds = new List <string>()
                        {
                            collectionId
                        }
                    };
                    client.PrivateStore.UpdateAdminRequestApproval(PrivateStoreId, requestApprovalId, adminRequestApprovalsResource);

                    var collectionOffers = client.PrivateStoreCollectionOffer.List(PrivateStoreId, collectionId);
                    Assert.Contains(collectionOffers, x => x.UniqueOfferId == requestApprovalId);

                    notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId);
                    Assert.DoesNotContain(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId);

                    CleanUp(client);
                }
            }
        }
 /// <summary>
 /// Create approval request
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='privateStoreId'>
 /// The store ID - must use the tenant ID
 /// </param>
 /// <param name='requestApprovalId'>
 /// The request approval ID to get create or update
 /// </param>
 /// <param name='payload'>
 /// </param>
 public static RequestApprovalResource CreateApprovalRequest(this IPrivateStoreOperations operations, string privateStoreId, string requestApprovalId, RequestApprovalResource payload = default(RequestApprovalResource))
 {
     return(operations.CreateApprovalRequestAsync(privateStoreId, requestApprovalId, payload).GetAwaiter().GetResult());
 }
Beispiel #4
0
        public void CreateAndWithdrawApprovalRequestTest()
        {
            using (var context = MockContext.Start(this.GetType()))
            {
                using (var client = context.GetServiceClient <MarketplaceRPServiceClient>())
                {
                    SetUp(client);

                    //create approval request
                    PlanDetails planDetails = new PlanDetails
                    {
                        PlanId           = planId,
                        Justification    = "because ...",
                        SubscriptionId   = testSubscription,
                        SubscriptionName = TestSubscriptionName
                    };

                    RequestApprovalResource requestApprovalResource = new RequestApprovalResource
                    {
                        PublisherId  = "data3-limited-1019419",
                        PlansDetails = new List <PlanDetails>()
                        {
                            planDetails
                        }
                    };

                    try
                    {
                        var approvalRequest = client.PrivateStore.CreateApprovalRequest(PrivateStoreId, requestApprovalId, requestApprovalResource);
                    }
                    catch (Exception ex)
                    {
                        if (!ex.Message.Contains("BadRequest"))
                        {
                            throw;
                        }
                    }

                    // Assert notification arrived
                    var notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId);
                    Assert.Contains(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId);

                    var adminRequestApproval = client.PrivateStore.GetAdminRequestApproval(publisherId, PrivateStoreId, requestApprovalId);
                    Assert.Equal("Pending", adminRequestApproval.AdminAction);

                    RequestDetails requestDetails = new RequestDetails
                    {
                        PublisherId = publisherId,
                        PlanIds     = new List <string> {
                            planId, managedAzurePlanId, managedAzureOptimiser
                        },
                        SubscriptionId = testSubscription
                    };
                    QueryRequestApprovalProperties queryRequestApprovalProperties = new QueryRequestApprovalProperties
                    {
                        Properties = requestDetails
                    };
                    var requestApproval = client.PrivateStore.QueryRequestApprovalMethod(PrivateStoreId, requestApprovalId, queryRequestApprovalProperties);
                    Assert.Equal("Pending", requestApproval.PlansDetails[planId].Status);

                    // Withdraw request
                    WithdrawProperties withdrawProperties = new WithdrawProperties
                    {
                        PublisherId = publisherId,
                        PlanId      = planId
                    };
                    client.PrivateStore.WithdrawPlan(PrivateStoreId, requestApprovalId, withdrawProperties);

                    notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId);
                    Assert.DoesNotContain(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId);

                    CleanUp(client);
                }
            }
        }