Add Domeneshop Context-based credential flow and initial domains command#14
Closed
Marius Storhaug (MariusStorhaug) wants to merge 4 commits into
Closed
Add Domeneshop Context-based credential flow and initial domains command#14Marius Storhaug (MariusStorhaug) wants to merge 4 commits into
Marius Storhaug (MariusStorhaug) wants to merge 4 commits into
Conversation
Store Domeneshop API credentials with Context and add a first authenticated domains command with a shared request helper. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Load function scripts in test runtime and cover credential storage, default context behavior, domain query construction, and basic auth request execution. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Super-linter summary
Super-linter detected linting errors For more information, see the GitHub Actions workflow run Powered by Super-linter POWERSHELL |
Add public cmdlets for domains by ID, DNS CRUD, forwards CRUD, DDNS update, and invoices list/get. Reuse Context-based auth for all requests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Cover URI/method construction for domains, DNS, forwards, invoices, and DDNS commands using mocked API invocations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Super-linter summary
Super-linter detected linting errors For more information, see the GitHub Actions workflow run Powered by Super-linter POWERSHELL |
This was referenced Jul 25, 2026
Marius Storhaug (MariusStorhaug)
added a commit
that referenced
this pull request
Jul 25, 2026
Member
Author
|
Closing because the exact PR head is contained in |
Marius Storhaug (MariusStorhaug)
added a commit
that referenced
this pull request
Jul 26, 2026
Domeneshop users gain authenticated access to the module's domain, DNS, forwarding, DDNS, and invoice capabilities through a consolidated pre-1.0 release candidate. ## New: Domeneshop API capabilities The module adds Context-based credential handling and commands for querying domains, managing DNS records and forwards, updating DDNS, and retrieving invoices. Command safety, validation, focused tests, and command-group documentation are included in the release candidate. ## New: Guided credential setup Running `Connect-DomeneshopAccount` without `-Secret` or its `-Key` alias opens the Domeneshop API settings page and securely prompts for the secret. If a browser is unavailable, the command warns and continues to the secure prompt. Explicit string and SecureString inputs remain supported, and `-WhatIf` does not open the browser, prompt, or change stored contexts. ## Changed: Release tooling and documentation The release candidate adopts Process-PSModule v6.1.13, enforces Pester 6.x across every test file, consolidates public command tests into root-level group suites, migrates the generated documentation site to Zensical, replaces README placeholders with the standard module landing page, and links each public command's help to its canonical generated documentation. --- <details> <summary>Technical details</summary> - Integrated PR #11, PR #13, the preserved pull ref for PR #12, PR #14, and stacked PR #15 in the requested order; each exact source head is verified as an ancestor of this branch. All five source PRs are now closed and their remote branches deleted. - Resolved the PR #11/PR #13 workflow overlap in favor of PR #13's Process-PSModule v6.1.4 baseline, then updated the consolidated release to latest Process-PSModule v6.1.13 at immutable commit `fb1bdb8fefd243292f779d2a856a38db6fe6daf4`. - Migrated `.github/mkdocs.yml` to `.github/zensical.toml`, satisfying v6.1.13's Zensical-only documentation pipeline. - PR #14 was merged explicitly before PR #15; PR #15's existing ancestry was retained, so only its four standards-hardening commits were introduced by the later merge. - Added an integration commit applying PR #13's exact Pester 6.x requirement to the command tests introduced by PR #15. - Uses the Standard test-layout profile: grouped public commands are covered by root-level `tests/<Group>.Tests.ps1` suites (`Auth`, `Ddns`, `Dns`, `Domains`, `Forwards`, and `Invoices`), while ungrouped and cross-cutting suites remain separate at the root. Deterministic layout coverage verifies every public command has a matching `Describe` block in its expected suite. - Added interactive credential setup as a separate micro-commit, including the exact `https://domene.shop/admin?view=api` launch, `Read-Host -AsSecureString`, `Key` alias, side-effect-free `-WhatIf` behavior, and a warning-only browser fallback that preserves secure prompting. - Added group-aware canonical links first in all 14 public function help blocks: `https://psmodule.io/Domeneshop/Functions/<FunctionName>/` for ungrouped commands and `https://psmodule.io/Domeneshop/Functions/<Group>/<FunctionName>/` for grouped commands. Deterministic tests require the exact trailing-slash route and reject missing, incorrect, or secondary-first links. - Linked clearly owned private Auth helpers to the published public commands they support while retaining useful secondary Context links. - Requires PowerShell 7.6, the latest LTS. The generated module manifest declares `PowerShellVersion = 7.6` and `CompatiblePSEditions = Core`; legacy Windows PowerShell compatibility branches are intentionally excluded. - Rejects whitespace-only API tokens, DDNS values, DNS filters, domain filters, forward hosts, and smoke-test names before state changes or URI construction. - Addressed generated-document lint, reserved context names, empty secrets, missing context diagnostics, strict WhatIf mutation boundaries, portable test paths, output contracts, and automated-review findings discovered during integration. - Local validation: 83 Pester tests pass, PSScriptAnalyzer reports zero findings across `src` and `tests`, and `git diff --check` passes. - Exact-head Process-PSModule v6.1.13 CI succeeds on `9834688` (run `30180761797`), including Build-Site and all module-local suites across Linux, macOS, and Windows. - PSModule/docs PR #86 and Process-PSModule PR #419 are merged, making latest-LTS support and ternary allowance effective on their default branches. </details> <details> <summary>Relevant issues (or links)</summary> - Fixes #2 - #11 - #12 - #13 - #14 - #15 - PSModule/docs#86 - PSModule/Process-PSModule#419 </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Connect-DomeneshopAccountto store API token/secret in aDomeneshopContext vaultGet-DomeneshopContextplus config helpers to resolve and track the default contextGet-DomeneshopDomainandInvoke-DomeneshopApiRequestto callGET /domainsusing HTTP Basic Auth from stored credentialsWhy
The module needed a secure credential flow aligned with PSModule patterns and Domeneshop API authentication requirements (
basicAuth: token as username, secret as password).Validation
Invoke-Pester -Path .\tests\PSModuleTest.Tests.ps1,./tests/DomeneshopContext.Tests.ps1 -Output Detailed