/// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        /// <exception cref="System.ArgumentNullException">
        /// <paramref name="context" /> is null.
        /// </exception>
        public virtual IPartner CreatePartnerOperations(PartnerContext context)
        {
            AuthenticationResult authResult;

            context.AssertNotNull(nameof(context));

            try
            {
                authResult = PartnerSession.Instance.AuthenticationFactory.Authenticate(
                    context,
                    null);

                IPartnerCredentials credentials = PartnerCredentials.Instance.GenerateByUserCredentials(
                    context.ApplicationId,
                    new AuthenticationToken(authResult.AccessToken, authResult.ExpiresOn));

                PartnerService.Instance.ApplicationName = "Partner Center PowerShell (Preview)";

                return(PartnerService.Instance.CreatePartnerOperations(credentials));
            }
            finally
            {
                authResult = null;
            }
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        public IPartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            // Billing Profile
            partnerOperations.Setup(p => p.Profiles.BillingProfile.Get()).Returns(GetPartnerBillingProfile());
            partnerOperations.Setup(p => p.Profiles.BillingProfile.Update(It.IsAny <BillingProfile>())).Returns(GetPartnerBillingProfileUpdated());

            // Country Validation Rules
            partnerOperations.Setup(p => p.CountryValidationRules.ByCountry(It.IsAny <string>()).Get()).Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US"));

            // Legal Profile
            partnerOperations.Setup(p => p.Profiles.LegalBusinessProfile.Get(VettingVersion.Current)).Returns(
                OperationFactory.Instance.GetResource <LegalBusinessProfile>("GetPartnerLegalProfile"));
            partnerOperations.Setup(p => p.Profiles.LegalBusinessProfile.Update(It.IsAny <LegalBusinessProfile>())).Returns(
                OperationFactory.Instance.GetResource <LegalBusinessProfile>("UpdatePartnerLegalProfile"));

            // Support Profile
            partnerOperations.Setup(p => p.Profiles.SupportProfile.Get()).Returns(
                OperationFactory.Instance.GetResource <SupportProfile>("GetPartnerSupportProfile"));
            partnerOperations.Setup(p => p.Profiles.SupportProfile.Get()).Returns(
                OperationFactory.Instance.GetResource <SupportProfile>("UpdatePartnerSupportProfile"));

            // Validations
            partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(true);
            partnerOperations.Setup(p => p.CountryValidationRules.ByCountry(It.IsAny <string>()).Get()).Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US"));
            return(partnerOperations.Object);
        }
Exemplo n.º 3
0
 public override void SetRequestParam(PartnerContext context)
 {
     context.RequestParam["client_id"]    = context.PassportInfo.Parnter.AppID;
     context.RequestParam["redirect_uri"] = SpecialUrlEncode(BuildActionUrl(context.PassportInfo.Base.BaseUrl, context.PassportInfo.Parnter.LoginBackUrl));
     context.RequestParam["state"]        = context.PassportInfo.Parnter.CustomProperty1;
     context.RequestParam["timestamp"]    = GetNowTime2Timestamp();
 }
Exemplo n.º 4
0
        /// <summary>
        /// Signs the request data.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns></returns>
        private string SignRequestData(PartnerContext context)
        {
            StringBuilder builder = new StringBuilder();

            if (context.RequestParam != null &&
                context.RequestParam.AllKeys != null &&
                context.RequestParam.AllKeys.Length > 0)
            {
                List <string> allKeys = context.RequestParam.AllKeys.OrderBy(m => m).ToList();
                foreach (string key in allKeys)
                {
                    if (key.Equals("sign", StringComparison.CurrentCultureIgnoreCase) ||
                        key.Equals("sign_type", StringComparison.CurrentCultureIgnoreCase))
                    {
                        continue;
                    }

                    builder.AppendFormat("{0}={1}&", key, context.RequestParam[key]);
                }
            }

            string sourceData = builder.ToString().TrimEnd('&');

            sourceData += string.Format("{0}", context.PassportInfo.Parnter.AppSecret);
            string signData = GetMD5(sourceData, context.PassportInfo.Parnter.Encoding);

            //Debug模式下记录相关信息至日志
            if (context.PassportInfo.Parnter.Debug.Equals("1"))
            {
                string sourceParam = BuildStringFromNameValueCollection(context.RequestParam);
                Logger.WriteLog(string.Format("原始值:{0},签名明文:{1},签名:{2}", sourceParam, sourceData, signData), "PartnerAlipay", "SignRequestData");
            }

            return(signData);
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IPartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            //  Product
            partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ByTargetView(It.IsAny <string>()).Get())
            .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Product> >("GetProduct"));

            // Product Availability
            partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Availabilities.ByTargetSegment(It.IsAny <string>()).Get())
            .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Availability> >("GetProductAvailability"));
            partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Availabilities.Get())
            .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Availability> >("GetProductAvailability"));
            partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Availabilities.ById(It.IsAny <string>()).Get())
            .Returns(OperationFactory.Instance.GetResource <Availability>("GetProductAvailabilityById"));

            // Product Inventory
            partnerOperations.Setup(p => p.Extensions.Product.ByCountry(It.IsAny <string>()).CheckInventory(It.IsAny <InventoryCheckRequest>())).Returns(
                OperationFactory.Instance.GetResource <IEnumerable <InventoryItem> >("GetProductInventory"));

            // Product SKUs
            partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Get())
            .Returns(OperationFactory.Instance.GetResource <Sku>("GetProductSku"));
            partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.Get())
            .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Sku> >("GetProductSku"));
            partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ByTargetSegment(It.IsAny <string>()).Get())
            .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Sku> >("GetProductSku"));


            return(partnerOperations.Object);
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        /// <exception cref="System.ArgumentNullException">
        /// <paramref name="context" /> is null.
        /// </exception>
        public virtual IAggregatePartner CreatePartnerOperations(PartnerContext context)
        {
            context.AssertNotNull(nameof(context));

            return(PartnerService.Instance.CreatePartnerOperations(
                       new PowerShellCredentials(
                           PartnerSession.Instance.AuthenticationFactory.Authenticate(context))));
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        public IPartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            partnerOperations.Setup(p => p.Domains.ByDomain(It.IsAny <string>()).Exists()).Returns(true);

            return(partnerOperations.Object);
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IPartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            partnerOperations.Setup(p => p.Relationships.Get(PartnerRelationshipType.IsIndirectCloudSolutionProviderOf)).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <PartnerRelationship> >("GetIndirectResellers"));

            return(partnerOperations.Object);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Authenticates the user using the specified parameters.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <param name="password">The password used to authenicate the user. This value can be null.</param>
        /// <returns>The result from the authentication request.</returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="context"/> is null.
        /// </exception>
        public AuthenticationResult Authenticate(PartnerContext context, SecureString password)
        {
            AuthenticationContext authContext;
            AuthenticationResult  authResult;
            PartnerEnvironment    environment;

            context.AssertNotNull(nameof(context));

            try
            {
                environment = PartnerEnvironment.PublicEnvironments[context.Environment];

                authContext = new AuthenticationContext($"{environment.ActiveDirectoryAuthority}{context.TenantId}");

                if (string.IsNullOrEmpty(context.Username))
                {
                    authResult = authContext.AcquireToken(
                        environment.PartnerCenterEndpoint,
                        context.ApplicationId,
                        new Uri("urn:ietf:wg:oauth:2.0:oob"),
                        PromptBehavior.Always,
                        UserIdentifier.AnyUser);

                    context.TenantId = authResult.TenantId;
                    context.Username = authResult.UserInfo.DisplayableId;
                }
                else if (password != null)
                {
                    authResult = authContext.AcquireToken(
                        environment.PartnerCenterEndpoint,
                        context.ApplicationId,
                        new UserCredential(
                            context.Username,
                            password));

                    context.TenantId = authResult.TenantId;
                    context.Username = authResult.UserInfo.DisplayableId;
                }
                else
                {
                    authResult = authContext.AcquireToken(
                        environment.PartnerCenterEndpoint,
                        context.ApplicationId,
                        new Uri("urn:ietf:wg:oauth:2.0:oob"),
                        PromptBehavior.Never,
                        new UserIdentifier(context.Username, UserIdentifierType.RequiredDisplayableId));
                }

                return(authResult);
            }
            finally
            {
                authContext = null;
                environment = null;
            }
        }
        /// <summary>
        /// Creates an instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private IPartner CreatePartnerOperationsWithInvalidAddress(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            partnerOperations.Setup(p => p.Profiles.BillingProfile.Get()).Returns(GetPartnerBillingProfile());
            partnerOperations.Setup(p => p.Profiles.BillingProfile.Update(It.IsAny <BillingProfile>())).Returns(GetPartnerBillingProfileUpdated());
            partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(false);

            return(partnerOperations.Object);
        }
Exemplo n.º 11
0
        /// <summary>
        /// 第三方登录
        /// </summary>
        /// <param name="identify">第三方标识</param>
        /// <param name="returnUrl">登录之后返回的url</param>
        /// <returns></returns>
        public string Login(string identify, string returnUrl = "")
        {
            PartnerContext context = new PartnerContext();

            context.PartnerIdentify = identify;
            context.ReturnUrl       = returnUrl;

            Partners partner = Partners.GetInstance(context);

            return(partner != null?partner.GetRequestContent(context) : string.Empty);
        }
Exemplo n.º 12
0
        /// <summary>
        /// 设置请求参数
        /// </summary>
        /// <param name="context">第三方登录上下文</param>
        public override void SetRequestParam(PartnerContext context)
        {
            context.RequestParam["_input_charset"] = context.PassportInfo.Parnter.Encoding;
            context.RequestParam["partner"]        = context.PassportInfo.Parnter.AppID;
            context.RequestParam["service"]        = "alipay.auth.authorize";
            context.RequestParam["target_service"] = "user.auth.quick.login";
            context.RequestParam["return_url"]     = SpecialUrlEncode(BuildActionUrl(context.PassportInfo.Base.BaseUrl, context.PassportInfo.Parnter.LoginBackUrl));

            context.RequestParam["sign_type"] = "MD5";
            context.RequestParam["sign"]      = SignRequestData(context);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Performs the execution of the command.
        /// </summary>
        protected override void ProcessRecord()
        {
            AzureAccount        account = new AzureAccount();
            IAggregatePartner   partnerOperations;
            OrganizationProfile profile;
            SecureString        password = null;

            if (ParameterSetName.Equals(AccessTokenParameterSet, StringComparison.InvariantCultureIgnoreCase))
            {
                account.Properties[AzureAccountPropertyType.AccessToken]           = AccessToken;
                account.Properties[AzureAccountPropertyType.AccessTokenExpiration] = AccessTokenExpiresOn.ToString(CultureInfo.CurrentCulture);
                account.Type = AccountType.AccessToken;
            }
            else if (ParameterSetName.Equals(ServicePrincipalParameterSet, StringComparison.InvariantCultureIgnoreCase))
            {
                account.Properties[AzureAccountPropertyType.ServicePrincipalSecret] = Credential.Password.ConvertToString();
                account.Type = AccountType.ServicePrincipal;
            }
            else
            {
                account.Type = AccountType.User;
            }

            if (Credential != null)
            {
                account.Id = Credential.UserName;
                password   = Credential.Password;
            }

            account.Properties[AzureAccountPropertyType.Tenant] = string.IsNullOrEmpty(TenantId) ? CommonEndpoint : TenantId;

            PartnerContext context = new PartnerContext
            {
                Account       = account,
                ApplicationId = ApplicationId,
                Environment   = Environment,
                TokenCache    = TokenCache ?? TokenCache.DefaultShared
            };

            PartnerSession.Instance.AuthenticationFactory.Authenticate(context, password);

            PartnerSession.Instance.Context = context;

            if (context.Account.Type == AccountType.User)
            {
                partnerOperations = PartnerSession.Instance.ClientFactory.CreatePartnerOperations(context);
                profile           = partnerOperations.Profiles.OrganizationProfile.Get();

                context.CountryCode = profile.DefaultAddress.Country;
                context.Locale      = profile.Culture;
            }

            WriteObject(PartnerSession.Instance.Context);
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IPartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            partnerOperations.Setup(p => p.Analytics.Licenses.Deployment.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <PartnerLicensesDeploymentInsights> >("GetPartnerLicenseDeploymentInsights"));

            partnerOperations.Setup(p => p.Analytics.Licenses.Usage.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <PartnerLicensesUsageInsights> >("GetPartnerLicensesUsageInsights"));

            return(partnerOperations.Object);
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        public IPartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            partnerOperations.Setup(p => p.Offers.ByCountry("US").ById("031C9E47-4802-4248-838E-778FB1D2CC05").Get()).Returns(GetOffer());
            partnerOperations.Setup(p => p.Offers.ByCountry("US").Get()).Returns(GetOffers());

            partnerOperations.Setup(p => p.Offers.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).AddOns.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <Offer> >("GetOfferAddon"));

            return(partnerOperations.Object);
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IPartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IPartner> partnerOperations = new Mock <IPartner>();

            partnerOperations.Setup(p => p.RateCards.Azure.Get(null, null)).Returns(
                OperationFactory.Instance.GetResource <AzureRateCard>("GetAzureRateCard"));

            partnerOperations.Setup(p => p.RateCards.Azure.GetShared(null, null)).Returns(
                OperationFactory.Instance.GetResource <AzureRateCard>("GetAzureRateCardSharedServices"));

            return(partnerOperations.Object);
        }
Exemplo n.º 17
0
 public override void SetRequestParam(PartnerContext context)
 {
     context.RequestParam["method"]       = HttpUtility.UrlEncode("sso.checkLogin");
     context.RequestParam["version"]      = HttpUtility.UrlEncode("1.0");
     context.RequestParam["appId"]        = HttpUtility.UrlEncode(context.PassportInfo.Parnter.AppID);
     context.RequestParam["timestamp"]    = GetNowTime2Timestamp();
     context.RequestParam["nonce"]        = (new Random()).Next(100000).ToString();
     context.RequestParam["back_url"]     = SpecialUrlEncode(BuildActionUrl(context.PassportInfo.Base.BaseUrl, context.PassportInfo.Parnter.LoginBackUrl));
     context.RequestParam["need_login"]   = "******";
     context.RequestParam["client_state"] = SpecialUrlEncode(context.ReturnUrl);
     context.RequestParam["sign"]         = SignData(context);
 }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IAggregatePartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>();

            // Country Valiation Operations
            partnerOperations.Setup(p => p.CountryValidationRules.ByCountry("US").Get())
            .Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US"));

            // Validations
            partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(true);

            return(partnerOperations.Object);
        }
Exemplo n.º 19
0
        public static Partners GetInstance(PartnerContext context)
        {
            if (context != null && !string.IsNullOrWhiteSpace(context.PartnerIdentify))
            {
                context.PassportInfo = GetPassportInfo(context.PartnerIdentify);
                if (context.PassportInfo != null && context.PassportInfo.Parnter != null)
                {
                    return(GetInstance(context.PassportInfo.Parnter.PartnerProcessor));
                }
            }

            return(null);
        }
Exemplo n.º 20
0
        /// <summary>
        /// 构造上送请求数据
        /// </summary>
        /// <param name="context">支付上下文</param>
        /// <returns></returns>
        protected virtual string BuildRequestContent(PartnerContext context)
        {
            StringBuilder builder = new StringBuilder();

            if (context.RequestParam != null && context.RequestParam.Count > 0)
            {
                foreach (string name in context.RequestParam)
                {
                    builder.AppendFormat("{0}={1}&", name, context.RequestParam[name]);
                }
                return(string.Format("{0}?{1}", context.PassportInfo.Parnter.LoginUrl, builder.ToString().TrimEnd('&')));
            }
            return(string.Empty);
        }
Exemplo n.º 21
0
        /// <summary>
        /// 根据支付上下文获取一个支付上送请求数据
        /// </summary>
        /// <param name="context">支付上下文</param>
        /// <returns></returns>
        public string GetRequestContent(PartnerContext context)
        {
            if (context != null && !string.IsNullOrWhiteSpace(context.PartnerIdentify))
            {
                if (context.RequestParam == null)
                {
                    context.RequestParam = new NameValueCollection();
                }
                SetRequestParam(context);
                return(BuildRequestContent(context));
            }

            return(string.Empty);
        }
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IAggregatePartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>();

            partnerOperations.Setup(p => p.AuditRecords.Query(It.IsAny <DateTime>(), null, null)).Returns(
                OperationFactory.Instance.GetResource <SeekBasedResourceCollection <AuditRecord> >("GetAuditRecord"));

            // Enumerator Operations
            partnerOperations.Setup(p => p.Enumerators.AuditRecords.Create(It.IsAny <SeekBasedResourceCollection <AuditRecord> >()))
            .Returns(
                new ResourceCollectionEnumerator <SeekBasedResourceCollection <AuditRecord> >(
                    OperationFactory.Instance.GetResource <SeekBasedResourceCollection <AuditRecord> >("GetAuditRecord")));

            return(partnerOperations.Object);
        }
Exemplo n.º 23
0
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IAggregatePartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>();

            // Enumerator Operations
            partnerOperations.Setup(p => p.Enumerators.Invoices.Create(It.IsAny <ResourceCollection <Invoice> >()))
            .Returns(
                new ResourceCollectionEnumerator <ResourceCollection <Invoice> >(
                    OperationFactory.Instance.GetResource <ResourceCollection <Invoice> >("GetInvoice")));

            // Invoice Operations
            partnerOperations.Setup(p => p.Invoices.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <Invoice> >("GetInvoice"));
            partnerOperations.Setup(p => p.Invoices[It.IsAny <string>()].Get()).Returns(
                OperationFactory.Instance.GetResource <Invoice>("GetInvoiceById"));

            return(partnerOperations.Object);
        }
Exemplo n.º 24
0
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IAggregatePartner CreateResellerPartnerOperations(PartnerContext context)
        {
            Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>();

            // Customer Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Patch(It.IsAny <Customer>())).Returns(
                OperationFactory.Instance.GetResource <Customer>("RemoveResellerRelationship"));

            // Relationship Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Relationships.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <PartnerRelationship> >("GetPartnerRelationship"));

            // Subscription Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <Subscription> >("GetCustomerSubscription"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions[It.IsAny <string>()]
                                    .Patch(It.IsAny <Subscription>())).Returns(OperationFactory.Instance.GetResource <Subscription>("SuspendSubscription"));

            return(partnerOperations.Object);
        }
Exemplo n.º 25
0
        public PartnerContext Authenticate(string applicationId, EnvironmentName environment, string username, SecureString password, string tenantId)
        {
            AuthenticationResult authResult;
            IPartner             partner;
            OrganizationProfile  profile;
            PartnerContext       context;

            applicationId.AssertNotEmpty(nameof(applicationId));
            environment.AssertNotNull(nameof(environment));
            tenantId.AssertNotEmpty(nameof(tenantId));

            try
            {
                context = new PartnerContext
                {
                    ApplicationId = applicationId,
                    Environment   = environment,
                    TenantId      = tenantId,
                    Username      = username
                };

                authResult = Authenticate(context, password);

                partner = PartnerSession.Instance.ClientFactory.CreatePartnerOperations(context);
                profile = partner.Profiles.OrganizationProfile.Get();

                context.CountryCode = profile.DefaultAddress.Country;
                context.Locale      = profile.Culture;
                context.UserId      = authResult.UserInfo.UniqueId;

                return(context);
            }
            finally
            {
                authResult = null;
                partner    = null;
                profile    = null;
            }
        }
 /// <summary>
 /// Acquires the security token from the authority.
 /// </summary>
 /// <param name="context">Context to be used when requesting a security token.</param>
 /// <param name="debugAction">The action to write debug statements.</param>
 /// <param name="promptAction">The action to prompt the user for input.</param>
 /// <returns>The result from the authentication request.</returns>
 public AuthenticationToken Authenticate(PartnerContext context, Action <string> debugAction, Action <string> promptAction = null)
 {
     return(new AuthenticationToken("STUB_TOKEN", DateTime.UtcNow.AddHours(1)));
 }
Exemplo n.º 27
0
 public EditModel(PartnerContext context)
 {
     _context = context;
 }
Exemplo n.º 28
0
        /// <summary>
        /// Creates a new instance of the object used to interface with Partner Center.
        /// </summary>
        /// <param name="context">The partner's execution context.</param>
        /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
        private static IAggregatePartner CreatePartnerOperations(PartnerContext context)
        {
            Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>();

            // Customer Configuration Policy
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <ConfigurationPolicy> >("GetCustomerConfigurationPolicies"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <ConfigurationPolicy> >("GetCustomerConfigurationPolicies"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies[It.IsAny <string>()].Get()).
            Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.ById(It.IsAny <string>()).Get()).
            Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies[It.IsAny <string>()].Patch(It.IsAny <ConfigurationPolicy>())).
            Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.ById(It.IsAny <string>()).Patch(It.IsAny <ConfigurationPolicy>())).
            Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies.Create(It.IsAny <ConfigurationPolicy>())).
            Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.Create(It.IsAny <ConfigurationPolicy>())).
            Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies[It.IsAny <string>()].Delete());
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.ById(It.IsAny <string>()).Delete());

            // Country Valiation Operations
            partnerOperations.Setup(p => p.CountryValidationRules.ByCountry("US").Get())
            .Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US"));

            // Customer Operations
            partnerOperations.Setup(p => p.Customers.Create(It.IsAny <Customer>()))
            .Returns(OperationFactory.Instance.GetNewCustomer());
            partnerOperations.Setup(p => p.Customers.Get()).Returns(OperationFactory.Instance.GetCustomers());
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Get())
            .Returns(OperationFactory.Instance.GetCustomer());
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Get())
            .Returns(OperationFactory.Instance.GetCustomer());
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Profiles.Billing.Update(It.IsAny <CustomerBillingProfile>())).
            Returns(OperationFactory.Instance.GetCustomerBillingProfile());
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Profiles.Billing.Update(It.IsAny <CustomerBillingProfile>())).
            Returns(OperationFactory.Instance.GetCustomerBillingProfile());
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Entitlements.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <Entitlement> >("GetEntitlement"));

            // Customer User Role Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].DirectoryRoles.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).DirectoryRoles.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DirectoryRoles.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).DirectoryRoles.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DirectoryRoles[It.IsAny <string>()].UserMembers.Create(It.IsAny <UserMember>())).
            Returns(OperationFactory.Instance.GetResource <UserMember>("AddCustomerUserRoleMember"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).DirectoryRoles.ById(It.IsAny <string>()).UserMembers.Create(It.IsAny <UserMember>())).
            Returns(OperationFactory.Instance.GetResource <UserMember>("AddCustomerUserRoleMember"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DirectoryRoles[It.IsAny <string>()].UserMembers[It.IsAny <string>()].Delete());
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).DirectoryRoles.ById(It.IsAny <string>()).UserMembers.ById(It.IsAny <string>()).Delete());

            // Delete Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Delete()).Verifiable();

            // Device Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DeviceBatches.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <DeviceBatch> >("GetCustomerDeviceBatch"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DeviceBatches[It.IsAny <string>()].Devices.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <Device> >("GetCustomerDevice"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DeviceBatches.ById(It.IsAny <string>()).Devices.Get())
            .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Device> >("GetCustomerDevice"));

            // Domain Operations
            partnerOperations.Setup(p => p.Domains.ByDomain(It.IsAny <string>()).Exists()).Returns(false);

            // Enumerator Operations
            partnerOperations.Setup(p => p.Enumerators.Customers.Create(It.IsAny <SeekBasedResourceCollection <Customer> >()))
            .Returns(new ResourceCollectionEnumerator <SeekBasedResourceCollection <Customer> >(OperationFactory.Instance.GetCustomers()));
            partnerOperations.Setup(p => p.Enumerators.Utilization.Azure.Create(It.IsAny <SeekBasedResourceCollection <AzureUtilizationRecord> >()))
            .Returns(new ResourceCollectionEnumerator <ResourceCollection <AzureUtilizationRecord> >(
                         OperationFactory.Instance.GetResource <ResourceCollection <AzureUtilizationRecord> >("GetUtilizationRecords")));

            // License Operations
            List <LicenseGroupId> licenseGroupIds = new List <LicenseGroupId>()
            {
                LicenseGroupId.Group1
            };

            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].SubscribedSkus.Get(licenseGroupIds)).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicenseByGroup"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).SubscribedSkus.Get(licenseGroupIds)).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicenseByGroup"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].SubscribedSkus.Get(null)).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicense"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).SubscribedSkus.Get(null)).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicense"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).Licenses.Get(null)).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <License> >("GetCustomerLicenseUser"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Licenses.Get(null)).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <License> >("GetCustomerLicenseUser"));

            // Managed Service Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ManagedServices.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <ManagedService> >("GetCustomerManagedServices"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ManagedServices.Get()).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <ManagedService> >("GetCustomerManagedServices"));

            // Request Relationship Operations
            partnerOperations.Setup(p => p.Customers.RelationshipRequest.Get()).Returns(
                OperationFactory.Instance.GetResource <CustomerRelationshipRequest>("GetResellerRelationshipLink"));

            // Subscription Operations
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions.Get()).
            Returns(OperationFactory.Instance.GetResource <ResourceCollection <Subscription> >("GetCustomerSubscription"));

            // User Operations
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.Get()).
            Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAll"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users.Get()).
            Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAll"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users.Query(It.IsAny <IQuery>())).
            Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAllDeleted"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.Query(It.IsAny <IQuery>())).
            Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAllDeleted"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Get()).
            Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).Get()).
            Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById"));
            partnerOperations.Setup(p => p.Enumerators.CustomerUsers.Create(It.IsAny <SeekBasedResourceCollection <CustomerUser> >())).
            Returns(new ResourceCollectionEnumerator <SeekBasedResourceCollection <CustomerUser> >(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAll")));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Patch(It.IsAny <CustomerUser>())).
            Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).Patch(It.IsAny <CustomerUser>())).
            Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Patch(It.IsAny <CustomerUser>())).
            Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users.Create(It.IsAny <CustomerUser>())).
            Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById"));
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.Create(It.IsAny <CustomerUser>())).
            Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].LicenseUpdates.Create(It.IsAny <LicenseUpdate>())).Returns(
                OperationFactory.Instance.GetResource <LicenseUpdate>("UpdateUserLicense"));

            // Utilization Operations
            partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Subscriptions.ById(It.IsAny <string>())
                                    .Utilization.Azure.Query(
                                        It.IsAny <DateTimeOffset>(),
                                        It.IsAny <DateTimeOffset>(),
                                        It.IsAny <AzureUtilizationGranularity>(),
                                        It.IsAny <bool>(),
                                        It.IsAny <int>())).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <AzureUtilizationRecord> >("GetUtilizationRecords"));
            partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions[It.IsAny <string>()]
                                    .Utilization.Azure.Query(
                                        It.IsAny <DateTimeOffset>(),
                                        It.IsAny <DateTimeOffset>(),
                                        It.IsAny <AzureUtilizationGranularity>(),
                                        It.IsAny <bool>(),
                                        It.IsAny <int>())).Returns(
                OperationFactory.Instance.GetResource <ResourceCollection <AzureUtilizationRecord> >("GetUtilizationRecords"));



            // Validation Operations
            partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(true);

            return(partnerOperations.Object);
        }
 /// <summary>
 /// Creates a new instance of the object used to interface with Partner Center.
 /// </summary>
 /// <param name="context">The partner's execution context.</param>
 /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns>
 public IPartner CreatePartnerOperations(PartnerContext context)
 {
     return(initializeFunc(context));
 }
        /// <summary>
        /// Acquires the security token from the authority.
        /// </summary>
        /// <param name="context">Context to be used when requesting a security token.</param>
        /// <param name="password">Password used when requesting a security token.</param>
        /// <returns>The result from the authentication request.</returns>
        public AuthenticationToken Authenticate(PartnerContext context, SecureString password = null)
        {
            AuthenticationContext authContext;
            AuthenticationResult  authResult;
            PartnerEnvironment    environment;

            environment = PartnerEnvironment.PublicEnvironments[context.Environment];

            authContext = new AuthenticationContext(
                $"{environment.ActiveDirectoryAuthority}{context.Account.Properties[AzureAccountPropertyType.Tenant]}",
                context.TokenCache);

            if (context.Account.Type == AccountType.AccessToken)
            {
                return(new AuthenticationToken(
                           context.Account.Properties[AzureAccountPropertyType.AccessToken],
                           DateTime.Parse(context.Account.Properties[AzureAccountPropertyType.AccessTokenExpiration], CultureInfo.CurrentCulture)));
            }
            else if (context.Account.Type == AccountType.ServicePrincipal)
            {
                authResult = Task.Run(() => authContext.AcquireTokenAsync(
                                          environment.AzureAdGraphEndpoint,
                                          new ClientCredential(
                                              context.Account.Id,
                                              context.Account.Properties[AzureAccountPropertyType.ServicePrincipalSecret]))).Result;
            }
            else if (PartnerSession.Instance.Context == null && password == null)
            {
                authResult = Task.Run(() => authContext.AcquireTokenAsync(
                                          environment.PartnerCenterEndpoint,
                                          context.ApplicationId,
                                          redirectUri,
                                          new PlatformParameters(PromptBehavior.Always),
                                          UserIdentifier.AnyUser)).Result;

                context.Account.Id = authResult.UserInfo.DisplayableId;
                context.Account.Properties[AzureAccountPropertyType.Tenant]         = authResult.TenantId;
                context.Account.Properties[AzureAccountPropertyType.UserIdentifier] = authResult.UserInfo.UniqueId;
            }
            else if (PartnerSession.Instance.Context == null && password != null)
            {
                authResult = Task.Run(() => authContext.AcquireTokenAsync(
                                          environment.PartnerCenterEndpoint,
                                          context.ApplicationId,
                                          new UserPasswordCredential(
                                              context.Account.Id,
                                              password))).Result;

                context.Account.Id = authResult.UserInfo.DisplayableId;
                context.Account.Properties[AzureAccountPropertyType.Tenant]         = authResult.TenantId;
                context.Account.Properties[AzureAccountPropertyType.UserIdentifier] = authResult.UserInfo.UniqueId;
            }
            else
            {
                authResult = Task.Run(() => authContext.AcquireTokenAsync(
                                          environment.PartnerCenterEndpoint,
                                          context.ApplicationId,
                                          redirectUri,
                                          new PlatformParameters(PromptBehavior.Never),
                                          new UserIdentifier(context.Account.Id, UserIdentifierType.RequiredDisplayableId))).Result;
            }

            return(new AuthenticationToken(authResult.AccessToken, authResult.ExpiresOn));
        }