dsccommunity/ExchangeDsc

New Resources for AcceptedDomain, AddressList, RemoteDomain

SSvilen opened this issue · 7 comments

Description

I have created some new resources in addition to the existing ones:

xExchAcceptedDomain
xExchAddressList
xExchRemoteDomain

Technically they work, but what is missing are the Pester tests.
I could try slowly to catch up on those (Or may be someone would like to help out with those) or I can submit the PR with the code I currently have.
Let me know.

Proposed properties

xExchAcceptedDomain:

Name                 PropertyType   IsMandatory Values
----                 ------------   ----------- ------
Credential           [PSCredential]        True {}
DomainName           [string]              True {}
AddressBookEnabled   [bool]               False {}
Default              [bool]               False {}
DependsOn            [string[]]           False {}
DomainType           [string]             False {Authoritative, ExternalRelay, InternalRelay}
Ensure               [string]             False {Absent, Present}
MatchSubDomains      [bool]               False {}
Name                 [string]             False {}
PsDscRunAsCredential [PSCredential]       False {}

xExchAddressList:

Name                         PropertyType   IsMandatory Values
----                         ------------   ----------- ------
Credential                   [PSCredential]        True {}
Name                         [string]              True {}
ConditionalCompany           [string[]]           False {}
ConditionalCustomAttribute1  [string[]]           False {}
ConditionalCustomAttribute10 [string[]]           False {}
ConditionalCustomAttribute11 [string[]]           False {}
ConditionalCustomAttribute12 [string[]]           False {}
ConditionalCustomAttribute13 [string[]]           False {}
ConditionalCustomAttribute14 [string[]]           False {}
ConditionalCustomAttribute15 [string[]]           False {}
ConditionalCustomAttribute2  [string[]]           False {}
ConditionalCustomAttribute3  [string[]]           False {}
ConditionalCustomAttribute4  [string[]]           False {}
ConditionalCustomAttribute5  [string[]]           False {}
ConditionalCustomAttribute6  [string[]]           False {}
ConditionalCustomAttribute7  [string[]]           False {}
ConditionalCustomAttribute8  [string[]]           False {}
ConditionalCustomAttribute9  [string[]]           False {}
ConditionalDepartment        [string[]]           False {}
ConditionalStateOrProvince   [string[]]           False {}
Container                    [string]             False {}
DependsOn                    [string[]]           False {}
DisplayName                  [string]             False {}
Ensure                       [string]             False {Absent, Present}
IncludedRecipients           [string[]]           False {AllRecipients, MailboxUsers, MailContacts, MailGroups...}
PsDscRunAsCredential         [PSCredential]       False {}
RecipientContainer           [string]             False {}
RecipientFilter              [string]             False {}

xExchRemoteDomain:

Name                              PropertyType   IsMandatory Values
----                              ------------   ----------- ------
Credential                        [PSCredential]        True {}
DomainName                        [string]              True {}
AllowedOOFType                    [string]             False {External, ExternalLegacy, InternalLegacy, None}
AutoForwardEnabled                [bool]               False {}
AutoReplyEnabled                  [bool]               False {}
ContentType                       [string]             False {MimeHtml, MimeHtmlText, MimeText}
DeliveryReportEnabled             [bool]               False {}
DependsOn                         [string[]]           False {}
DisplaySenderName                 [bool]               False {}
Ensure                            [string]             False {Absent, Present}
IsInternal                        [bool]               False {}
MeetingForwardNotificationEnabled [bool]               False {}
Name                              [string]             False {}
NDREnabled                        [bool]               False {}
NonMimeCharacterSet               [string]             False {}
PsDscRunAsCredential              [PSCredential]       False {}
UseSimpleDisplayName              [bool]               False {}

Special considerations or limitations

None.

Hi @SSvilen . That's awesome that you have these ready to go. I think we do need to get new resources added with corresponding Pester Unit tests though so that we don't significantly lower the code coverage for the module as a whole. I could probably help with some or all of the tests, however I'm not sure what the best way to collaborate on a new feature somewhere outside of the Dev branch is. @johlju or @PlagueHO , do you guys know if we have any standards for working on Feature Branches, or anything similar?

OK - I'll then start slowly adding the tests.The code is on my 'newfeatures' branch, in case you or somebody else wants to help out. :)
Let me know if I have to split the code in different branches (I did also some enhancement on the imap resource.)

When you actually submit these to the PowerShell\xExchange repo, it's probably a good idea to submit each resource as a separate PR. But it shouldn't be a big deal if you want to work on all three in your own single branch until then. I'll try to hop over to your branch and see if I can help when I get a chance.

Hi @mhendric, @SSvilen - yes, we'd want to make sure we get the unit tests (and integration tests if poss). The best way to collaborate @mhendric is to Fork @SSvilen's repo into your GH account and to submit PR's to @SSvilen's repo.

Alternately, @SSvilen, you can make @mhendric a contributor to your repo. I've done this with some of mine for @johlju - works well too.

But yes, I'd definitely submit these as separate PR's - reviewing multiple resources in a single PR is exhausting 😢 (@johlju know's, he's kindly reviewed many of mine like this -sorry 😁).

Works either way for me. @mhendric I made you a collaborator.
I'll start by splitting the branches.

Yes, I agree with @PlagueHO having one resource per PR is big enough to review 😉 Although if they share a common code between them (common helper functions), then it is also best to review one at a time so second PR can be rebased and thus having less code to review.