Files
Umbraco-CMS/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/FileNameTests.cs

106 lines
3.4 KiB
C#
Raw Normal View History

// Copyright (c) Umbraco.
// See LICENSE for more details.
using AutoFixture.NUnit3;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.FileProviders;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.Hosting;
using Umbraco.Cms.Tests.UnitTests.AutoFixture;
using Umbraco.Cms.Web.BackOffice.Controllers;
using Umbraco.Cms.Web.BackOffice.Install;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Web.Common;
[TestFixture]
internal class FileNameTests
{
private string GetViewName(ViewResult viewResult, string separator = "/")
{
var sections = viewResult.ViewName.Split(separator);
return sections[^1];
}
private IEnumerable<string> GetUiFiles(IEnumerable<string> pathFromNetCore)
{
var root = TestContext.CurrentContext.TestDirectory.Split("tests")[0];
var pathToFiles = Path.Combine(root, "src", "Umbraco.Cms.StaticAssets");
foreach (var pathSection in pathFromNetCore)
{
pathToFiles = Path.Combine(pathToFiles, pathSection);
}
return new DirectoryInfo(pathToFiles).GetFiles().Select(f => f.Name).ToArray();
}
[Test]
[AutoMoqData]
public async Task InstallViewExists(
[Frozen] IHostingEnvironment hostingEnvironment,
InstallController sut)
{
Mock.Get(hostingEnvironment).Setup(x => x.ToAbsolute(It.IsAny<string>())).Returns("http://localhost/");
var viewResult = await sut.Index() as ViewResult;
var fileName = GetViewName(viewResult, Path.DirectorySeparatorChar.ToString());
var views = GetUiFiles(new[] { "umbraco", "UmbracoInstall" });
Assert.True(views.Contains(fileName), $"Expected {fileName} to exist, but it didn't");
}
[Test]
[AutoMoqData]
v11: Merge `v10/feature/project-cleanup` into `v11/dev` (#13112) * New backoffice/add system text json configuration attribute (#12998) * Add SystemTextJsonConfigurationAttribute * Fix up formatting * Rename classes for clearer purpose Co-authored-by: Zeegaan <nge@umbraco.dk> * UmbracoPath should no longer be configurable (#13032) * UmbracoPath should no longer be configurable * Remove UmbracoPath configuration from all tests * Only contain style instead of full layout (#13033) * Only contain style instead of full layout (#13033) * Fix CodeQL duplicate "permissions" node and reformat * add an extra check to ensure the pips exist before adding a class to them * improve pip classList add/remove with no intermediary variable * Only contain style instead of full layout (#13033) * Ensure consistent margin on headings in tree root (#12992) * Ensure consistent margin on headings in tree root (#12992) (cherry picked from commit 88bfef9e0de58fe4fbf4bbb409f3257acd864849) * Bump version to 10.2.1 * Translate "User permissions for languages" feature to dutch (#12971) * Translate 'sectionsHelp' to Dutch * Translate 'selectLanguages' to Dutch * Transkate 'allowAccessToAllLanguages' to Dutch * Translate "User permissions for languages" feature to español (#12975) * Translate 'selectLanguages' to Español * Translate 'languagesHelp' to español * Translate 'allowAccessToAllLanguages' to spanish * Updated project references for Forms and Deploy in the JsonSchema project. (#13047) * Updated project references for Forms and Deploy in the JsonSchema project. (#13047) * UmbracoPath has been removed from the official schema store, remove temporary workaround from our schema generator as well (#13043) * add an extra check to ensure the pips exist before adding a class to them * improve pip classList add/remove with no intermediary variable * pass in parameters needed to member service (#13020) * Missing methods from IMemberService (#13022) * Add back methods to interface * Add default implementations to avoid breaking changes Co-authored-by: Zeegaan <nge@umbraco.dk> * New endpoint for web profiling dashboard (#13038) * Endpoint for web profiling dashboard * Add profiling API contract * New Backoffice: Published cache controller (#13034) * Add published cache controller (endpoints for the Published Status dashboard) * Update OpenAPI contract for published cache endpoints * Fix OpenApi spec Co-authored-by: Zeegaan <nge@umbraco.dk> * Bug fix for datepicker with offset time (#12847) * https://github.com/umbraco/Umbraco-CMS/issues/12844 * remove "X" from ng-attr Doing the test I killed the ng-if attr. But forgot it was there doing the commit Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk> * Make sure swagger tags and operations are sorted alphabetically (#13055) * Add spellcheck false to password inputs (#13059) * Add null check for variants in Grid Layout (#13060) This fixes a regression from 10.2.0 where the `variants` property was removed. * Add null check for variants in Grid Layout (#13060) This fixes a regression from 10.2.0 where the `variants` property was removed. * Fixes #12972 for validating legacy member passwords (#12973) * Fixes #12972 for validating legacy member passwords * Removed unused variable * removed unused variable * Fix issue toggling boolean between true/false after Save without refreshing * New backoffice: examine management controller (#12981) * Add ExamineManagementControllerBase * Add ExamineIndexModelFactory * Add IndexesExamineManagementController * Add proper attributes * Implement ExamineIndexViewModel.cs * formatting * Add comment about it working in .NET 7 * Add SearchersExamineManagementController.cs * Update comments about why it might throw errors * Add SearchResultViewModel * Add SearchExamineManagementController * Add ExamineSearcherValidationService * Rename ExamineSearcherValidationService.cs to ExamineSearcherFinderService.cs * Rename interface aswell * Add SearchExamineManagementController * Refactor ExamineSearcherFinderService * Add HasIndexRebuiltExamineManagementController.cs * Fix up formatting * Async actions * Add RebuildIndexExamineManagementController.cs * Rename IExamineIndexModelFactory to IExamineIndexViewModelFactory * Refactor HasIndexRebuilt endpoint to Index endpoint * Remove unused usings * Fix up DetailsExplanation * Create dedicated SearchersViewModel * Rename action * Rename RebuildIndex to Rebuild * Dont have changes in ExamineIndexModel * Make values strongly typed instead of generic lists of strings * Rename to non-plural * Rename to non-plural * Rename controller * Introduce ITemporaryIndexingService * Introduce ITemporaryIndexingService * Add SearcherName to view model * Move to new ExamineManagementControllerBase.cs * Refactor ExamineManagerService * Use init instead of setters * Make properties explicitly on models * Add DI * Apply suggestions from code review Co-authored-by: Kenn Jacobsen <kja@umbraco.dk> * Rename to IndexExamineManagementController * Return ViewModel instead of exception * Make view models non-nullable * Add examine management extension point * Rename to IndexingRebuilderService * Move rebuild logic to service * Fix up usages in IIndexingRebuilderService * Fix up DI * Fix OpenApi contract * Implement CanRebuild on IIndexingRebuilderService.cs Co-authored-by: Zeegaan <nge@umbraco.dk> Co-authored-by: Kenn Jacobsen <kja@umbraco.dk> * Update build script * Add BuildProjectReferences=false to dotnet pack * Internalize Umbraco.Cms.ManagementApi references * Make Searchers endpoint return ActionResult (#13068) * New backoffice - trees design (#12963) * Refactor: Add default versioned back office route attribute * Tree controller bases and first draft implementations for document, media and doctype * Move tree item view models to appropriate location * Fix missing parent * Refactor user entity access for testability * A bit of clean-up + handle user start nodes for items endpoint * Implement foldersOnly for folder tree * Items endpoint for document type tree * Strongly typed action results * Content + media recycle bin * Correct return type for swagger * Member type tree * Rename user start node handling to make a little more sense * Revert to faked admin start nodes in document tree * Media type tree * Data type tree * Relation type tree * Remove unused dependency from member type tree * Correct documentation for member type tree endpoint response types * Use icon constants * Add templates tree * Member group tree * Document blueprint tree * Partial views, scripts and stylesheets trees * Static files tree * Clarify "folders only" state * Comments and improved readability * Rename TreeControllerBase and TreeItemViewModel * Move recycle bin controller base to its own namespace * Moved tree base controllers to their own namespace * Common base class for tree view models * Remove ProblemDetails response type declaration from all actions * Add OpenApiTag * Various review comments * Dictionary item tree * Renamed all tree controllers to follow action/feature naming convention * Handle client culture state for document tree * Support "ignore user start nodes" for content and media + refactor how tree states work to make things more explicit * Fix or postpone a few TODOs * Make entity service able to paginate trashed children * Handle sorting explicitly * Re-apply VersionedApiBackOfficeRoute to install and upgrade controllers after merge * Use PagedViewModel instead of PagedResult for all trees * Explain the usage of UmbracoObjectTypes.Unknown * Introduce and apply GetMany pattern for dictionary items * Add a note about relation type caching * Fix broken test build + add unit tests for new localization service methods * Use new management API controller base * Entity repository should build document entities for document blueprints when getting paged entities (same as it does when getting specific entities) * Use Media type for Media recycle bin Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Move shared relation service to concrete implementations * Use inclusive language * Add 401 response type documentation to applicable trees * Refactor entity load for folder tree controller base + ensure that folders are only included in the first result page * Add (in-memory) pagination to dictionary tree * Make file system controller honor paging parameters * Support pagination in relation type tree * Clarify method name a bit for detecting tree root path requests * Update Open API schema to match new trees * Move from page number and page size to skip/take (with temporary workaround for lack of property skip/take pagination in current DB implementation) * Update OpenAPI schema to match skip/take * Update OpenAPI schema * Don't return paginated view models from "items" endpoints * Update OpenApi schema Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Use pattern matching to check if items is not `JArray` * Bump Smidge up to v4.1.1 * Removing X-XSS-Protection healthcheck * Redirect to a return URL if one is present on the querystring when logging into the back office * Fix issue 13023 - Cannot read properties of undefined (reading 'allowedActions') * Implement playwright acceptance tests instead of cypress (#13069) * fix up dependencies in package.json * Change configs to playwright * update types * remove cypress * add playwright * Fix up imports * Move up test files * Fix up scripts * Update user import * Remove allowEditInvariantFromNonDefault=True.spec.ts * Update docker container * Run playwright on pipelines * Install playwright * change urls * change to run playwright * Update reporter * create .env file when installing * update pipelines * Remove @in yml * Update Yaml script to use New-Item * Pipe object to Value * Update yaml to use "" not {} * Update localhost to proper port * Push package-lock.json * include dotenv in package.json * Add back umbraco.config.ts * Dont change launchSettings.json * Fix up pipelines * Change working directory * Add logging * Actually name the file * Remove .env from path * Add working directory * Add working directory to script * check env content * Update more working dir * Try making newline in YAML * add quotes * Try multiline infront of script * Move top statement * use https * Update to localhost 44331 * ignore https in config * Change linux to https * add timeouts for tests * Fix up url for linux * Update docker to use port 44331 -> 5000 * increase timeout * Update yaml * Remove Cypress references and fix URL/port mapping * Update umbraco-linux.docker * Generate ASP.NET HTTPS development certificate * Enable HTTPS development certificate in Docker * Dont run failing tests * Update HTTPS development certificate generation * Copy nuget.config to correct location in Docker file * do not run flaky test * update outputdir * Remove flaky tests * Update to dot reporter * Update to json-models-builders package * Check if results folder exists * Remove logging * Use bash to find folder * Dont use junit to report * only publish if folder exists * Add 5 retries for CI * search correct folder * Remove unused json file * Use line reporter * Remove umbraco.config.ts * Remove more flaky test * Add waits so we dont bombard SQLite * Add page as parameter * add page as parameter * Remove flaky macro test Co-authored-by: Zeegaan <nge@umbraco.dk> Co-authored-by: Ronald Barendse <ronald@barend.se> * Fix comment of view property in `ConfigurationFieldAttribute` (#13077) * Fix comment of view property in `ConfigurationFieldAttribute` * Update description of key property as well * Use char instead of string for DetectJson (#13019) * Use char instead of string for DetectJson * Use faster method * Change DetectIsJon method * Update acceptance test readme & scripts (#13078) * Update readme to reflect the change to playwright * Update test scripts * update README * update pipelines to run new script * update package.json scripts * dont include demo test in package.json * Add creation of blueprint test * Implement create test script Co-authored-by: Zeegaan <nge@umbraco.dk> * Refactor event handler away from keyup to ng-change * Don't use legacy icon for action delete * Added nullability attribute to IsNullOrWhitespace * Fixes umbraco/Umbraco-CMS.Accessibility.Issues #63 and #61 * Revert "Removing X-XSS-Protection healthcheck" (#13096) This reverts commit 696475ebf25f28dca2c21c511caf5bfb1a36a44f. Co-authored-by: Zeegaan <nge@umbraco.dk> * New backoffice: New Api controllers (#12983) * Create migrate Language controller to Umbraco.Cms:ManagementApi * Add proper language mapping * Update mapping to handle if language name is null * Uncomment code * Add new language view model * Add LanguageViewModelMapping * Add mapper registration * Fix up AddMappers extension method * Implement mapping IEnumerable of languages * Change action signatures to ViewModel instead of model * Seperate logic from controller into service * Move LanguageService.cs * Register service * Fix up mapping * Add null check to mapping instead of controller * Map to ILanguage instead of implementation * Fix up null check * Implement ProblemDetailsBuilder.cs * Rename duplicate method * Use builder in actions * Implement new Paged models * Create language controller base * Use pagedModel for GetAllLanguages * Create GetAllLanguagesPaged method * Split language controller into single APIs * Fix up controllers with API versions * Map Total property * Fix up route and naming for GetLanguageController.cs * Fix up naming for language controllers * New folder structure * Add culture controllers * Map CultureInfos to paged CultureViewModel * Remove wierd include in csproj * Refactor controller to return pagedViewModel instead of dictionary * Fix up mapping to map single and enumerable * Register mapping * Add apiversion to controller * Add inheritdoc * Create DictionaryControllerBase.cs * Add delete controller * Only use HttpDelete for deletes * Check also if language exists in service * Split Save action into Create & Update actions * Update Http attributes on Create and update controllers * Proper routing for delete controller * Add api version * Make action async * Implement CreateDictionaryController * Create DictionaryViewModel.cs * Use viewmodel instead of values * Create get by int DictionaryController * Add view models * Rename controller * Rename DictionaryViewModel to DictionaryItemViewModel * use created instead of ID * Apply DataContract/Datamember to view model * change to guid instead of Guid * Use proper responses instead of return models when creating/updating * Implement new IDictionaryService * Implement new MoveController * Use new service in mapper * Remove unused method * Add DictionaryViewModelMapDefinition * Create MoveOrCopyViewModel * Proper Http action * Create UpdateDictionary controller * Map IDictionaryItem to DictionaryViewModel * Add JsonPatching * Add UpdateDictionaryController.cs * Map DictionaryTranslationsDisplays properly * ParentId should be nullable * Add new DictionaryTranslationViewModel.cs * Remove translationViewModel * Add Id and Key to DictionaryTranslationDisplay.cs * Implement IDictionaryFactory.cs * Create DictionaryViewModels and do not use IEntity * Map to new view models instead of displays * Register the factiories in the service container * Remove newtonsoft * Add serializing to and from PatchDocs * Use JsonPatchViewModel instead of object type * Add JsonPatch.Net to csproj * Implement JsonPatchService.cs * Register JsonPatchService * Make model non-nullable * Update controllers to use new attributes * Rename MoveViewModel.cs * Remove NameIsDirty as that is legacy from how we used to handle updating * Add GetAllDictionaryController * Add todo to DictionaryControllerBase * Add ExportDictionaryController * Add ImportDictionaryController * Remove unused umbraco mapper * Add upload dictionary controller * Create Dictionary import view models * Update UploadDictionaryController with view models * Remove unused using * Implement pagedviewmodel for GetAllDictionaryController.cs * Add dictionary overview viewmodels * Add mapping for DictionaryOverViewModel * Update Dictionary controller to use new viewmodel * Fix up attributes for UploadDictionaryController * Make actions async * Make controller bases abstract * Fix after merge * New backoffice: Analytics controller (#12957) * Add AnalyticsControllerBase * Add AnalyticsViewModel * Add GetAnalyticsController * Update ViewModel to use System.Text.Json * Add SetAnalyticsController * Add AnalyticsLevelViewModel * Add GetAllAnalyticsController * Add viewmodel factory * Register factory for DI * Use factory for creation of ViewModel * Fix up AnalyticsLevelViewModel.cs * Use analyticsLevelViewModel * Add Enum validation to controller * Add OpenApi attributes * Add routing to GetAllAnalyticsController * Rename IPagedViewModelFactory * use new renamed PagedViewModelFactory * Make actions async * Make controller base abstract * Fix up after merge Co-authored-by: Zeegaan <nge@umbraco.dk> * New backoffice: Help controller (#12958) * Add HelpControllerBase * Add HelpPageViewModel * Add GetHelpController * Add viewmodel factory * Register factory for DI * Use PagedViewModelFactory for controller * Update baseurl to be nullable * Rename IPagedViewModelFactory * Use new renamed IPagedViewModelFactory * Dont use httpclient as field Co-authored-by: Zeegaan <nge@umbraco.dk> * New backoffice: Relation controller (#12961) * Add relation controller base * Add commen about auth * Add GetRelationController * Use mapping to viewmodel * Add RelationViewModel * Add RelationViewModelsMapDefinition.cs * Add viewmodel factory * Register factory for DI * Rename IPagedViewModelFactory * Add RelationViewModelFactory * Remove unused service * Add GetByChildRelationController * Add relationViewModelFactory to DI * Add MappingBuilderExtensions * Add relationViewModelsMapDefinition to DI * Use PagedViewModel for child relations * Add CreateMultiple * Update GetRelationController to use factory instead of direct mapping * Update GetByChildRelationController to use relationViewModelFactory * Fix up after merge Co-authored-by: Zeegaan <nge@umbraco.dk> * New backoffice: Tracked references controller (#12966) * Add TrackedReferencesControllerBase.cs * Add GetTrackedReferencesController * Add relation model * Add ITrackedReferencesRepository.cs * Rename relation to RelationModel * Add RelationMapDefinition.cs * Add TrackedReferencesSkipTakeRepository * Rename RelationModelMapDefinition * Add new services to DI * Rename RelationModel to RelationItemModel * Implement TrackedReferencesSkipTakeService * Formatting * Add RelationItemViewModel.cs * Add mapdefition * Update TrackedReferencesController to use new PagedViewModel * Add service to DI * imlement proper routing * Add async to GetTrackedReferencesController.cs * Rename action to get * Add DescendantTrackedReferencesController * make filterMustBeIsDependency nullable * Use count instead of capacity * Rename controller * Add MultipleTrackedReferencesController.cs * Refactor TrackedReferencesService to not return pagedViewModel * Remove TODO untill consensus on convention * Formatting * Delete old duplicate controller * Fix up naming * Fix up naming and fixed todo * Fix up mapdefinition registrations * Rename controllers * Fix naming * Fix nullable tree * Fix up relation controller & action names * Fix naming * Fix up multiple to not be post * Apply suggestions from code review Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Remove [ApiVersion] from each individual controller and added to base instead * Added missing semi-colon * Update all "non-async async" endpoints to return Task.FromResult * Fixed up LanguageViewModels namespace * Return proper status code * Update xml documentation * Rename GetAllCultureController * Change return type attribute to proper Model * Change return type attribute to correct model * Add clarifying comment * Change return type attribute to proper model * Rename ById to by key * Update DictionaryOverviewViewModel to use Key instead of ID * Implement factory method to create viewModel instead of using services in mapper * Fix up DictionaryItemViewModel to use Parent GUID instead of ID * Update return type attribute to correct model * Update key to actual GUID instead of string * Update route to not include "delete" * Remove redundant IActionResult specification * Update responseType attribute to correct models * Update OpenApiTag for DictionaryControllerBase * Update ResponseType attribute to correct models * update variable name to not be "XD" * Update ResponseType attribute to correct model * Update route to not include "update" as it is redundant * Update produces responsetype attributes to correct models * Use IJsonSerializer abstraction instead of JsonConvert directly * Remove unused field * Change ResponseType attribute to correct model * change TrackedReferencesSkipTakeService to return pagedModels directly * Remove duplicate DI * change to better variable names * Move RelationItemModel to core * Remove empty folder * Remove ITrackedReferencesSkipTakeService and add it to TrackedReferencesService * remove TrackedReferencesSkipTakeRepository and add to TrackedReferencesRepository.cs * Fix up TrackedReferencesService to not use SkipTake repository * Remove AddRepositories from ManagementApiComposer * Transition to ManagementApiBaseController * Fixes ResponseType attribute to correct model * Add loading files to service instead of having logic in controller * Add todo comment * Fix up routing for delete language * Use problem details builder * Add SystemTextJsonSerializer * Add SystemTextJsonSerializer * Remove unused usings * Remove obsolete MoveDictionaryController * Remove CreateDate and UpdateDate from DictionaryViewModel * Change response type to correct model * Remove PagedViewModelFactory.cs * Add obsolete message * Fix installer view models A setter is required for the modelbinder to be able to do its work * Update src/Umbraco.Cms.ManagementApi/Controllers/Analytics/SetAnalyticsController.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update ResponseType to correct Model * Update comment * Add FileUploadService * Add DictionaryFactory.cs to handle creation of viewmodel * Remove unused DI * Rename actions & controllers to reflect eachother * Update OpenApi.json * Add dictionary to openapi * Update in proper alphabetical order * Add trackedReferences to openapi * Fix open api doc Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Zeegaan <nge@umbraco.dk> * Backport project cleanup from #12907 * Remove empty Directory.Build.props * Fix GenerateAppsettingsSchema target * Re-add empty Directory.Build.props to prevent inheritance * Re-add missing JsonPatch.Net dependency * Fix merge issues (redundant TargetFramework property and appsettings-schema.json generation) * Fix and improve OpenAPI test assertion Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Zeegaan <nge@umbraco.dk> Co-authored-by: Kenn Jacobsen <kja@umbraco.dk> Co-authored-by: Mads Rasmussen <madsr@hey.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com> Co-authored-by: Erik-Jan Westendorp <erikjanwestendorp@outlook.com> Co-authored-by: Andy Butland <abutland73@gmail.com> Co-authored-by: Sean <29239704+Bakersbakebread@users.noreply.github.com> Co-authored-by: Lucas Bach Bisgaard <rammi@rammi.dk> Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk> Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> Co-authored-by: Busra Sengul <aysebusrasengul@gmail.com> Co-authored-by: Justin Neville <justin@nevitech.co.uk> Co-authored-by: Jeavon Leopold <jeavon@crumpled-dog.com> Co-authored-by: Austin Gilbert <AGilbert@rbaconsulting.com> Co-authored-by: patrickdemooij9 <patrickdemooij98@hotmail.com> Co-authored-by: bakersbakebread <hello@seanthorne.co.uk> Co-authored-by: Karl Butler <kbutler@carbonsix.digital>
2022-10-05 12:14:43 +02:00
public void PreviewViewExists(PreviewController sut)
{
var viewResult = sut.Index() as ViewResult;
var fileName = GetViewName(viewResult);
var views = GetUiFiles(new[] { "umbraco", "UmbracoBackOffice" });
Assert.True(views.Contains(fileName), $"Expected {fileName} to exist, but it didn't");
}
[Test]
[AutoMoqData]
V13: New login screen (#14780) * implement interface * add build targets for login screen * package lock * move components to pages folder * load logo and background from property * styling * move mocks around * remove unused vars * add backoffice handlers * install rxjs * add mock data * add element and context for localization * mock data * use umb-localize * remove the extra logic with check for section_ * change key for login button * add base to vite environment * login styling * cleanup and button styling * use correct reset url * change body of reset request * validate password reset code * redirect to /login/new on reset password code verify * add obsolete messages * remove inline scripts for old backoffice * remove shadowdom from localize element * Revert "remove shadowdom from localize element" This reverts commit 46ae282f7ce9235c15f160d57d54acd5d3378668. * hook up reset password to api * rename pages to state as it is not actually used as different pages * reset password styling * more styling * add confirmation page to new password * set router to firstUpdated to avoid rAF * set a custom baseUrl on the router to make sure it works without trailing slash * use route parameters to redirect on the login page to ensure correct escaping * add server variables * make sure auth layout uses the provided properties for images * format * redirect to code expired page * add missing properties * use allowPasswordReset and allowInvite properties in routing and layout * make ts happy * cleanup * init invite page * hook up usernameIsEmail * init external login providers * add mock provider * add padding to buttons * replace uui button with normal button * add external login providers as slot * add disableLocalLogin property * add form to external login providers * remove unused method * fix build errors * add attributes for external login * add custom view to external login * add new custom icon registry * attach two icon registries * use relative paths * use relative paths * use main registry instead of providing directly * add look and color to external login * implement getIcons() method * use getIcons() to request icons * install remixicon to supplement backoffice icons (replacing font-awesome eventually) * move icon registries to auth element * Revert "install remixicon to supplement backoffice icons (replacing font-awesome eventually)" This reverts commit 0c6659d8d9dfe0664314ec6a3acaa8e20cb606ed. * add icons for common external providers * add more icons * remove resetCode hack as it is no longer needed * add validation to new password * get gretting from translation file * add hack to get text left aligned in uui-button * add custom router * WIP Use router * also change the URL during an action * update login action to redirect to /new when needed * redirect to login from reset and new if not allowed * fix new password button href * use property on login element instead of context * check for redirect on invite-user * move fake external login providers to index.html for use in dev server * allow password reset on dev server * add look and color * only set styles for default view buttons * suppress vite import warning * check and inform for errors and show 'nothing' if a custom view fails to load * fix mock path for localizedtext * fix build errors * ensure that msw (and all its dependencies) do not end up in the production bundle (saved ~500 KB) * Revert AngularValueExternalLoginInfoScriptAsync removal * forward the providerName to custom views * change default icon * add button look and color to external login provider options * add obsolete to ButtonStyle and add a mapper to new values * add required xml comments * map external login providers to <umb-login-external /> * fix typo * only show external login layout if there are slotted children * pass on name as "provider" * send externalLoginUrl to custom views * cleanup * global import * hide external logins completely when empty * cleanup * setup redirect to invite * rename pages to name-page * fix names and paths * use new password layout for invite and new password * add comments * cleanup and use confirmation element * set parameters after successful verifyinvite * map display-name and provider-name to the external element * map display-name * set up external login to handle correct display- and provider-name with documentation * add support for disabling local login * update path to handlers * add more localization * add handlers for 2fa * router should support a factory for component * push login to ?flow=mfa on 402 codes * add page to handle 2fa/mfa * add support for custom routing * add fallback for welcome greeting * handle AngularJS silliness * fix typo * fix router and replace custom umbroute:statechange event with native pushState * simplify code and cleanup * a11y improvements * you can now navigate to anywhere from anywhere with pushState * access the "twoFactorView" from the backend * set the default implemented twoFactorView to NULL * add initial logic to handle a custom mfa view * roll back custom pushState changes * add mocks for 2fa custom view * use router redirect * re-enable click url change * cleanup * remove debug buttons * add unsafeHTML to localize element * load mfa custom views * load custom view * improve external login custom views * using optimisation * add current culture * only show mfa page if 402 code has been encountered in same session * format * remove unnesesary action * add new user invite password * remove console log * fix getting stuck at new password page if you've triggered custom validity * unify layouts * add styling to buttons in error layout * remove unused css * add error message to new password page * add error message to reset password * add error message to invite page * fix invite page not being rendered * cleanup * add obsolete notice to PostSetInvitedUserPassword * add request model to set a new password for an invited user * add new method to handle invited user password * add get password config api call * fix password config parameters and add invite call * get invited user * get password config * assign unique guid to login project * add userId to get password config and use the config as validation * fix * add alerts * fix the new password layout * auth redirects invite error to error page * use password config on new password page * remove console log * move file and remove unused extension * make ts happy * file structure * rename login-extern to external-login-provider * update element name * update dependencies * export custom-view.element.ts * remove debug * use umb-custom-view to load custom views * build types * move @umbraco/uui to the login app and import from there in backoffice * make the ui library and icon registry generally available as exports from the login app * add mock handler for icons * cleanup package * use uui for external login providers in the backoffice * add imports and enable the backoffice icon registry globally * disable shadowdom * default background image * use undefined * revert angular values * remove legacy sys variables * add logic to handle mfa in an overlay scenario without routing * add new login screen to replace the overlay when logged in to the backoffice * update spec to work with locators * cleanup of legacy context * ViewData is not always required * add method to solely return the default view of the backoffice to simply BackofficeController as well as unit tests * add test for the login view * cleanup usings * Apply suggestions from code review Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * remove 'remember me' * add more contrast to external login divider * update dependencies * set "lang" attribute to lowercase * remove default headline * localize the "Or" divider and add aria-hidden * remove Umbraco reference from logo and add aria-hidden * add aria-hidden to uui-icon inside external login buttons * format code * update dependencies * update dependencies * add translations to invite user page * use back to login button * update localization-context.ts to match api from old LocalizeService in Angular * add tsc to watch * formatting * add missing localizations * fix a11y issues with muted text * refresh current user after login * remove unused variable * add localization * add localization for error messages * remove unused var * return user after login and set successful auth * retry request queue after login * add language keys for failed login * add language keys for failed login * render the views without a router so that it works inside a modal in the backoffice * add autocomplete to reset password fields * add autocomplete to login screen * add generic error layout to new-password-page * new-password-layout should be able to handle with and without username * update language keys * check for userId before trying to request invited user * show error when no invited user is found * place back-to-login button on all error layouts * update lockfile --------- Co-authored-by: Jesper Møller Jensen <26099018+JesmoDev@users.noreply.github.com> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
2023-10-23 10:06:17 +02:00
public async Task LoginViewExists(BackOfficeController sut)
{
V13: New login screen (#14780) * implement interface * add build targets for login screen * package lock * move components to pages folder * load logo and background from property * styling * move mocks around * remove unused vars * add backoffice handlers * install rxjs * add mock data * add element and context for localization * mock data * use umb-localize * remove the extra logic with check for section_ * change key for login button * add base to vite environment * login styling * cleanup and button styling * use correct reset url * change body of reset request * validate password reset code * redirect to /login/new on reset password code verify * add obsolete messages * remove inline scripts for old backoffice * remove shadowdom from localize element * Revert "remove shadowdom from localize element" This reverts commit 46ae282f7ce9235c15f160d57d54acd5d3378668. * hook up reset password to api * rename pages to state as it is not actually used as different pages * reset password styling * more styling * add confirmation page to new password * set router to firstUpdated to avoid rAF * set a custom baseUrl on the router to make sure it works without trailing slash * use route parameters to redirect on the login page to ensure correct escaping * add server variables * make sure auth layout uses the provided properties for images * format * redirect to code expired page * add missing properties * use allowPasswordReset and allowInvite properties in routing and layout * make ts happy * cleanup * init invite page * hook up usernameIsEmail * init external login providers * add mock provider * add padding to buttons * replace uui button with normal button * add external login providers as slot * add disableLocalLogin property * add form to external login providers * remove unused method * fix build errors * add attributes for external login * add custom view to external login * add new custom icon registry * attach two icon registries * use relative paths * use relative paths * use main registry instead of providing directly * add look and color to external login * implement getIcons() method * use getIcons() to request icons * install remixicon to supplement backoffice icons (replacing font-awesome eventually) * move icon registries to auth element * Revert "install remixicon to supplement backoffice icons (replacing font-awesome eventually)" This reverts commit 0c6659d8d9dfe0664314ec6a3acaa8e20cb606ed. * add icons for common external providers * add more icons * remove resetCode hack as it is no longer needed * add validation to new password * get gretting from translation file * add hack to get text left aligned in uui-button * add custom router * WIP Use router * also change the URL during an action * update login action to redirect to /new when needed * redirect to login from reset and new if not allowed * fix new password button href * use property on login element instead of context * check for redirect on invite-user * move fake external login providers to index.html for use in dev server * allow password reset on dev server * add look and color * only set styles for default view buttons * suppress vite import warning * check and inform for errors and show 'nothing' if a custom view fails to load * fix mock path for localizedtext * fix build errors * ensure that msw (and all its dependencies) do not end up in the production bundle (saved ~500 KB) * Revert AngularValueExternalLoginInfoScriptAsync removal * forward the providerName to custom views * change default icon * add button look and color to external login provider options * add obsolete to ButtonStyle and add a mapper to new values * add required xml comments * map external login providers to <umb-login-external /> * fix typo * only show external login layout if there are slotted children * pass on name as "provider" * send externalLoginUrl to custom views * cleanup * global import * hide external logins completely when empty * cleanup * setup redirect to invite * rename pages to name-page * fix names and paths * use new password layout for invite and new password * add comments * cleanup and use confirmation element * set parameters after successful verifyinvite * map display-name and provider-name to the external element * map display-name * set up external login to handle correct display- and provider-name with documentation * add support for disabling local login * update path to handlers * add more localization * add handlers for 2fa * router should support a factory for component * push login to ?flow=mfa on 402 codes * add page to handle 2fa/mfa * add support for custom routing * add fallback for welcome greeting * handle AngularJS silliness * fix typo * fix router and replace custom umbroute:statechange event with native pushState * simplify code and cleanup * a11y improvements * you can now navigate to anywhere from anywhere with pushState * access the "twoFactorView" from the backend * set the default implemented twoFactorView to NULL * add initial logic to handle a custom mfa view * roll back custom pushState changes * add mocks for 2fa custom view * use router redirect * re-enable click url change * cleanup * remove debug buttons * add unsafeHTML to localize element * load mfa custom views * load custom view * improve external login custom views * using optimisation * add current culture * only show mfa page if 402 code has been encountered in same session * format * remove unnesesary action * add new user invite password * remove console log * fix getting stuck at new password page if you've triggered custom validity * unify layouts * add styling to buttons in error layout * remove unused css * add error message to new password page * add error message to reset password * add error message to invite page * fix invite page not being rendered * cleanup * add obsolete notice to PostSetInvitedUserPassword * add request model to set a new password for an invited user * add new method to handle invited user password * add get password config api call * fix password config parameters and add invite call * get invited user * get password config * assign unique guid to login project * add userId to get password config and use the config as validation * fix * add alerts * fix the new password layout * auth redirects invite error to error page * use password config on new password page * remove console log * move file and remove unused extension * make ts happy * file structure * rename login-extern to external-login-provider * update element name * update dependencies * export custom-view.element.ts * remove debug * use umb-custom-view to load custom views * build types * move @umbraco/uui to the login app and import from there in backoffice * make the ui library and icon registry generally available as exports from the login app * add mock handler for icons * cleanup package * use uui for external login providers in the backoffice * add imports and enable the backoffice icon registry globally * disable shadowdom * default background image * use undefined * revert angular values * remove legacy sys variables * add logic to handle mfa in an overlay scenario without routing * add new login screen to replace the overlay when logged in to the backoffice * update spec to work with locators * cleanup of legacy context * ViewData is not always required * add method to solely return the default view of the backoffice to simply BackofficeController as well as unit tests * add test for the login view * cleanup usings * Apply suggestions from code review Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * remove 'remember me' * add more contrast to external login divider * update dependencies * set "lang" attribute to lowercase * remove default headline * localize the "Or" divider and add aria-hidden * remove Umbraco reference from logo and add aria-hidden * add aria-hidden to uui-icon inside external login buttons * format code * update dependencies * update dependencies * add translations to invite user page * use back to login button * update localization-context.ts to match api from old LocalizeService in Angular * add tsc to watch * formatting * add missing localizations * fix a11y issues with muted text * refresh current user after login * remove unused variable * add localization * add localization for error messages * remove unused var * return user after login and set successful auth * retry request queue after login * add language keys for failed login * add language keys for failed login * render the views without a router so that it works inside a modal in the backoffice * add autocomplete to reset password fields * add autocomplete to login screen * add generic error layout to new-password-page * new-password-layout should be able to handle with and without username * update language keys * check for userId before trying to request invited user * show error when no invited user is found * place back-to-login button on all error layouts * update lockfile --------- Co-authored-by: Jesper Møller Jensen <26099018+JesmoDev@users.noreply.github.com> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
2023-10-23 10:06:17 +02:00
var viewResult = await sut.Login() as ViewResult;
var fileName = GetViewName(viewResult);
V13: New login screen (#14780) * implement interface * add build targets for login screen * package lock * move components to pages folder * load logo and background from property * styling * move mocks around * remove unused vars * add backoffice handlers * install rxjs * add mock data * add element and context for localization * mock data * use umb-localize * remove the extra logic with check for section_ * change key for login button * add base to vite environment * login styling * cleanup and button styling * use correct reset url * change body of reset request * validate password reset code * redirect to /login/new on reset password code verify * add obsolete messages * remove inline scripts for old backoffice * remove shadowdom from localize element * Revert "remove shadowdom from localize element" This reverts commit 46ae282f7ce9235c15f160d57d54acd5d3378668. * hook up reset password to api * rename pages to state as it is not actually used as different pages * reset password styling * more styling * add confirmation page to new password * set router to firstUpdated to avoid rAF * set a custom baseUrl on the router to make sure it works without trailing slash * use route parameters to redirect on the login page to ensure correct escaping * add server variables * make sure auth layout uses the provided properties for images * format * redirect to code expired page * add missing properties * use allowPasswordReset and allowInvite properties in routing and layout * make ts happy * cleanup * init invite page * hook up usernameIsEmail * init external login providers * add mock provider * add padding to buttons * replace uui button with normal button * add external login providers as slot * add disableLocalLogin property * add form to external login providers * remove unused method * fix build errors * add attributes for external login * add custom view to external login * add new custom icon registry * attach two icon registries * use relative paths * use relative paths * use main registry instead of providing directly * add look and color to external login * implement getIcons() method * use getIcons() to request icons * install remixicon to supplement backoffice icons (replacing font-awesome eventually) * move icon registries to auth element * Revert "install remixicon to supplement backoffice icons (replacing font-awesome eventually)" This reverts commit 0c6659d8d9dfe0664314ec6a3acaa8e20cb606ed. * add icons for common external providers * add more icons * remove resetCode hack as it is no longer needed * add validation to new password * get gretting from translation file * add hack to get text left aligned in uui-button * add custom router * WIP Use router * also change the URL during an action * update login action to redirect to /new when needed * redirect to login from reset and new if not allowed * fix new password button href * use property on login element instead of context * check for redirect on invite-user * move fake external login providers to index.html for use in dev server * allow password reset on dev server * add look and color * only set styles for default view buttons * suppress vite import warning * check and inform for errors and show 'nothing' if a custom view fails to load * fix mock path for localizedtext * fix build errors * ensure that msw (and all its dependencies) do not end up in the production bundle (saved ~500 KB) * Revert AngularValueExternalLoginInfoScriptAsync removal * forward the providerName to custom views * change default icon * add button look and color to external login provider options * add obsolete to ButtonStyle and add a mapper to new values * add required xml comments * map external login providers to <umb-login-external /> * fix typo * only show external login layout if there are slotted children * pass on name as "provider" * send externalLoginUrl to custom views * cleanup * global import * hide external logins completely when empty * cleanup * setup redirect to invite * rename pages to name-page * fix names and paths * use new password layout for invite and new password * add comments * cleanup and use confirmation element * set parameters after successful verifyinvite * map display-name and provider-name to the external element * map display-name * set up external login to handle correct display- and provider-name with documentation * add support for disabling local login * update path to handlers * add more localization * add handlers for 2fa * router should support a factory for component * push login to ?flow=mfa on 402 codes * add page to handle 2fa/mfa * add support for custom routing * add fallback for welcome greeting * handle AngularJS silliness * fix typo * fix router and replace custom umbroute:statechange event with native pushState * simplify code and cleanup * a11y improvements * you can now navigate to anywhere from anywhere with pushState * access the "twoFactorView" from the backend * set the default implemented twoFactorView to NULL * add initial logic to handle a custom mfa view * roll back custom pushState changes * add mocks for 2fa custom view * use router redirect * re-enable click url change * cleanup * remove debug buttons * add unsafeHTML to localize element * load mfa custom views * load custom view * improve external login custom views * using optimisation * add current culture * only show mfa page if 402 code has been encountered in same session * format * remove unnesesary action * add new user invite password * remove console log * fix getting stuck at new password page if you've triggered custom validity * unify layouts * add styling to buttons in error layout * remove unused css * add error message to new password page * add error message to reset password * add error message to invite page * fix invite page not being rendered * cleanup * add obsolete notice to PostSetInvitedUserPassword * add request model to set a new password for an invited user * add new method to handle invited user password * add get password config api call * fix password config parameters and add invite call * get invited user * get password config * assign unique guid to login project * add userId to get password config and use the config as validation * fix * add alerts * fix the new password layout * auth redirects invite error to error page * use password config on new password page * remove console log * move file and remove unused extension * make ts happy * file structure * rename login-extern to external-login-provider * update element name * update dependencies * export custom-view.element.ts * remove debug * use umb-custom-view to load custom views * build types * move @umbraco/uui to the login app and import from there in backoffice * make the ui library and icon registry generally available as exports from the login app * add mock handler for icons * cleanup package * use uui for external login providers in the backoffice * add imports and enable the backoffice icon registry globally * disable shadowdom * default background image * use undefined * revert angular values * remove legacy sys variables * add logic to handle mfa in an overlay scenario without routing * add new login screen to replace the overlay when logged in to the backoffice * update spec to work with locators * cleanup of legacy context * ViewData is not always required * add method to solely return the default view of the backoffice to simply BackofficeController as well as unit tests * add test for the login view * cleanup usings * Apply suggestions from code review Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * remove 'remember me' * add more contrast to external login divider * update dependencies * set "lang" attribute to lowercase * remove default headline * localize the "Or" divider and add aria-hidden * remove Umbraco reference from logo and add aria-hidden * add aria-hidden to uui-icon inside external login buttons * format code * update dependencies * update dependencies * add translations to invite user page * use back to login button * update localization-context.ts to match api from old LocalizeService in Angular * add tsc to watch * formatting * add missing localizations * fix a11y issues with muted text * refresh current user after login * remove unused variable * add localization * add localization for error messages * remove unused var * return user after login and set successful auth * retry request queue after login * add language keys for failed login * add language keys for failed login * render the views without a router so that it works inside a modal in the backoffice * add autocomplete to reset password fields * add autocomplete to login screen * add generic error layout to new-password-page * new-password-layout should be able to handle with and without username * update language keys * check for userId before trying to request invited user * show error when no invited user is found * place back-to-login button on all error layouts * update lockfile --------- Co-authored-by: Jesper Møller Jensen <26099018+JesmoDev@users.noreply.github.com> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
2023-10-23 10:06:17 +02:00
var views = GetUiFiles(new[] { "umbraco", "UmbracoLogin" });
Assert.True(views.Contains(fileName), $"Expected {fileName} to exist, but it didn't");
}
V13: New login screen (#14780) * implement interface * add build targets for login screen * package lock * move components to pages folder * load logo and background from property * styling * move mocks around * remove unused vars * add backoffice handlers * install rxjs * add mock data * add element and context for localization * mock data * use umb-localize * remove the extra logic with check for section_ * change key for login button * add base to vite environment * login styling * cleanup and button styling * use correct reset url * change body of reset request * validate password reset code * redirect to /login/new on reset password code verify * add obsolete messages * remove inline scripts for old backoffice * remove shadowdom from localize element * Revert "remove shadowdom from localize element" This reverts commit 46ae282f7ce9235c15f160d57d54acd5d3378668. * hook up reset password to api * rename pages to state as it is not actually used as different pages * reset password styling * more styling * add confirmation page to new password * set router to firstUpdated to avoid rAF * set a custom baseUrl on the router to make sure it works without trailing slash * use route parameters to redirect on the login page to ensure correct escaping * add server variables * make sure auth layout uses the provided properties for images * format * redirect to code expired page * add missing properties * use allowPasswordReset and allowInvite properties in routing and layout * make ts happy * cleanup * init invite page * hook up usernameIsEmail * init external login providers * add mock provider * add padding to buttons * replace uui button with normal button * add external login providers as slot * add disableLocalLogin property * add form to external login providers * remove unused method * fix build errors * add attributes for external login * add custom view to external login * add new custom icon registry * attach two icon registries * use relative paths * use relative paths * use main registry instead of providing directly * add look and color to external login * implement getIcons() method * use getIcons() to request icons * install remixicon to supplement backoffice icons (replacing font-awesome eventually) * move icon registries to auth element * Revert "install remixicon to supplement backoffice icons (replacing font-awesome eventually)" This reverts commit 0c6659d8d9dfe0664314ec6a3acaa8e20cb606ed. * add icons for common external providers * add more icons * remove resetCode hack as it is no longer needed * add validation to new password * get gretting from translation file * add hack to get text left aligned in uui-button * add custom router * WIP Use router * also change the URL during an action * update login action to redirect to /new when needed * redirect to login from reset and new if not allowed * fix new password button href * use property on login element instead of context * check for redirect on invite-user * move fake external login providers to index.html for use in dev server * allow password reset on dev server * add look and color * only set styles for default view buttons * suppress vite import warning * check and inform for errors and show 'nothing' if a custom view fails to load * fix mock path for localizedtext * fix build errors * ensure that msw (and all its dependencies) do not end up in the production bundle (saved ~500 KB) * Revert AngularValueExternalLoginInfoScriptAsync removal * forward the providerName to custom views * change default icon * add button look and color to external login provider options * add obsolete to ButtonStyle and add a mapper to new values * add required xml comments * map external login providers to <umb-login-external /> * fix typo * only show external login layout if there are slotted children * pass on name as "provider" * send externalLoginUrl to custom views * cleanup * global import * hide external logins completely when empty * cleanup * setup redirect to invite * rename pages to name-page * fix names and paths * use new password layout for invite and new password * add comments * cleanup and use confirmation element * set parameters after successful verifyinvite * map display-name and provider-name to the external element * map display-name * set up external login to handle correct display- and provider-name with documentation * add support for disabling local login * update path to handlers * add more localization * add handlers for 2fa * router should support a factory for component * push login to ?flow=mfa on 402 codes * add page to handle 2fa/mfa * add support for custom routing * add fallback for welcome greeting * handle AngularJS silliness * fix typo * fix router and replace custom umbroute:statechange event with native pushState * simplify code and cleanup * a11y improvements * you can now navigate to anywhere from anywhere with pushState * access the "twoFactorView" from the backend * set the default implemented twoFactorView to NULL * add initial logic to handle a custom mfa view * roll back custom pushState changes * add mocks for 2fa custom view * use router redirect * re-enable click url change * cleanup * remove debug buttons * add unsafeHTML to localize element * load mfa custom views * load custom view * improve external login custom views * using optimisation * add current culture * only show mfa page if 402 code has been encountered in same session * format * remove unnesesary action * add new user invite password * remove console log * fix getting stuck at new password page if you've triggered custom validity * unify layouts * add styling to buttons in error layout * remove unused css * add error message to new password page * add error message to reset password * add error message to invite page * fix invite page not being rendered * cleanup * add obsolete notice to PostSetInvitedUserPassword * add request model to set a new password for an invited user * add new method to handle invited user password * add get password config api call * fix password config parameters and add invite call * get invited user * get password config * assign unique guid to login project * add userId to get password config and use the config as validation * fix * add alerts * fix the new password layout * auth redirects invite error to error page * use password config on new password page * remove console log * move file and remove unused extension * make ts happy * file structure * rename login-extern to external-login-provider * update element name * update dependencies * export custom-view.element.ts * remove debug * use umb-custom-view to load custom views * build types * move @umbraco/uui to the login app and import from there in backoffice * make the ui library and icon registry generally available as exports from the login app * add mock handler for icons * cleanup package * use uui for external login providers in the backoffice * add imports and enable the backoffice icon registry globally * disable shadowdom * default background image * use undefined * revert angular values * remove legacy sys variables * add logic to handle mfa in an overlay scenario without routing * add new login screen to replace the overlay when logged in to the backoffice * update spec to work with locators * cleanup of legacy context * ViewData is not always required * add method to solely return the default view of the backoffice to simply BackofficeController as well as unit tests * add test for the login view * cleanup usings * Apply suggestions from code review Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * remove 'remember me' * add more contrast to external login divider * update dependencies * set "lang" attribute to lowercase * remove default headline * localize the "Or" divider and add aria-hidden * remove Umbraco reference from logo and add aria-hidden * add aria-hidden to uui-icon inside external login buttons * format code * update dependencies * update dependencies * add translations to invite user page * use back to login button * update localization-context.ts to match api from old LocalizeService in Angular * add tsc to watch * formatting * add missing localizations * fix a11y issues with muted text * refresh current user after login * remove unused variable * add localization * add localization for error messages * remove unused var * return user after login and set successful auth * retry request queue after login * add language keys for failed login * add language keys for failed login * render the views without a router so that it works inside a modal in the backoffice * add autocomplete to reset password fields * add autocomplete to login screen * add generic error layout to new-password-page * new-password-layout should be able to handle with and without username * update language keys * check for userId before trying to request invited user * show error when no invited user is found * place back-to-login button on all error layouts * update lockfile --------- Co-authored-by: Jesper Møller Jensen <26099018+JesmoDev@users.noreply.github.com> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
2023-10-23 10:06:17 +02:00
[Test]
[AutoMoqData]
public void BackOfficeDefaultExists(BackOfficeController sut)
{
var viewResult = sut.DefaultView();
var fileName = GetViewName(viewResult);
var views = GetUiFiles(new[] { "umbraco", "UmbracoBackOffice" });
Assert.True(views.Contains(fileName), $"Expected {fileName} to exist, but it didn't");
}
[Test]
public void LanguageFilesAreLowerCase()
{
var languageProvider = new EmbeddedFileProvider(
typeof(IAssemblyProvider).Assembly,
"Umbraco.Cms.Core.EmbeddedResources.Lang");
var files = languageProvider.GetDirectoryContents(string.Empty)
.Where(x => !x.IsDirectory && x.Name.EndsWith(".xml"))
.Select(x => x.Name);
foreach (var fileName in files)
{
Assert.AreEqual(
fileName.ToLower(),
fileName,
$"Language files must be all lowercase but {fileName} is not lowercase.");
}
}
}