diff --git a/docs/usage.md b/docs/usage.md index f8479ed92..62ec15f73 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -247,6 +247,13 @@ do not have an owner set. Note that superusers have access to all objects. +### Default permissions + +Default permissions for documents can be set using consumption templates. + +For objects created via the web UI (tags, doc types, etc.) the default is to set the current user +as owner and no extra permissions, but you explicitly set these under Settings > Permissions. + ### Users and Groups Paperless-ngx versions after 1.14.0 allow creating and editing users and groups via the 'frontend' UI. diff --git a/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.spec.ts index 843725ba8..9de47367c 100644 --- a/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.spec.ts @@ -1,18 +1,20 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' -import { CorrespondentEditDialogComponent } from './correspondent-edit-dialog.component' import { HttpClientTestingModule } from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { NgSelectModule } from '@ng-select/ng-select' import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' -import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' -import { NgSelectModule } from '@ng-select/ng-select' +import { SettingsService } from 'src/app/services/settings.service' import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' +import { SelectComponent } from '../../input/select/select.component' +import { TextComponent } from '../../input/text/text.component' +import { EditDialogMode } from '../edit-dialog.component' +import { CorrespondentEditDialogComponent } from './correspondent-edit-dialog.component' describe('CorrespondentEditDialogComponent', () => { let component: CorrespondentEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture beforeEach(async () => { @@ -36,6 +38,8 @@ describe('CorrespondentEditDialogComponent', () => { }).compileComponents() fixture = TestBed.createComponent(CorrespondentEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.spec.ts index 676073acf..021953e31 100644 --- a/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.spec.ts @@ -1,18 +1,20 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' -import { DocumentTypeEditDialogComponent } from './document-type-edit-dialog.component' import { HttpClientTestingModule } from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { NgSelectModule } from '@ng-select/ng-select' import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' -import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' -import { NgSelectModule } from '@ng-select/ng-select' +import { SettingsService } from 'src/app/services/settings.service' import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' +import { SelectComponent } from '../../input/select/select.component' +import { TextComponent } from '../../input/text/text.component' +import { EditDialogMode } from '../edit-dialog.component' +import { DocumentTypeEditDialogComponent } from './document-type-edit-dialog.component' describe('DocumentTypeEditDialogComponent', () => { let component: DocumentTypeEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture beforeEach(async () => { @@ -36,6 +38,8 @@ describe('DocumentTypeEditDialogComponent', () => { }).compileComponents() fixture = TestBed.createComponent(DocumentTypeEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts index 18816d0d1..e81c7c99c 100644 --- a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts @@ -1,6 +1,6 @@ import { - HttpClientTestingModule, HttpTestingController, + HttpClientTestingModule, } from '@angular/common/http/testing' import { Component } from '@angular/core' import { @@ -16,19 +16,20 @@ import { ReactiveFormsModule, } from '@angular/forms' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' +import { of } from 'rxjs' +import { + DEFAULT_MATCHING_ALGORITHM, + MATCH_AUTO, + MATCH_NONE, + MATCH_ALL, +} from 'src/app/data/matching-model' import { PaperlessTag } from 'src/app/data/paperless-tag' +import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings' import { TagService } from 'src/app/services/rest/tag.service' import { UserService } from 'src/app/services/rest/user.service' import { SettingsService } from 'src/app/services/settings.service' -import { EditDialogComponent, EditDialogMode } from './edit-dialog.component' -import { - DEFAULT_MATCHING_ALGORITHM, - MATCH_ALL, - MATCH_AUTO, - MATCH_NONE, -} from 'src/app/data/matching-model' -import { of } from 'rxjs' import { environment } from 'src/environments/environment' +import { EditDialogComponent, EditDialogMode } from './edit-dialog.component' @Component({ template: ` @@ -88,6 +89,7 @@ describe('EditDialogComponent', () => { let component: TestComponent let fixture: ComponentFixture let tagService: TagService + let settingsService: SettingsService let activeModal: NgbActiveModal let httpTestingController: HttpTestingController @@ -110,18 +112,15 @@ describe('EditDialogComponent', () => { }), }, }, - { - provide: SettingsService, - useValue: { - currentUser, - }, - }, + SettingsService, TagService, ], imports: [HttpClientTestingModule, FormsModule, ReactiveFormsModule], }).compileComponents() tagService = TestBed.inject(TagService) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = currentUser activeModal = TestBed.inject(NgbActiveModal) httpTestingController = TestBed.inject(HttpTestingController) @@ -149,7 +148,7 @@ describe('EditDialogComponent', () => { expect(component.closeEnabled).toBeTruthy() })) - it('should set default owner when in create mode', () => { + it('should set default owner when in create mode if unset', () => { component.dialogMode = EditDialogMode.CREATE component.ngOnInit() expect(component.objectForm.get('permissions_form').value.owner).toEqual( @@ -160,6 +159,32 @@ describe('EditDialogComponent', () => { component.ngOnInit() }) + it('should set default perms when in create mode if set', () => { + component.dialogMode = EditDialogMode.CREATE + settingsService.set(SETTINGS_KEYS.DEFAULT_PERMS_OWNER, 11) + settingsService.set(SETTINGS_KEYS.DEFAULT_PERMS_VIEW_USERS, [1, 2]) + settingsService.set(SETTINGS_KEYS.DEFAULT_PERMS_VIEW_GROUPS, [3]) + settingsService.set(SETTINGS_KEYS.DEFAULT_PERMS_EDIT_USERS, [4]) + settingsService.set(SETTINGS_KEYS.DEFAULT_PERMS_EDIT_GROUPS, [5]) + component.ngOnInit() + expect(component.objectForm.get('permissions_form').value.owner).toEqual(11) + expect( + component.objectForm.get('permissions_form').value.set_permissions + ).toEqual({ + view: { + users: [1, 2], + groups: [3], + }, + change: { + users: [4], + groups: [5], + }, + }) + // cover optional chaining + component.objectForm.removeControl('permissions_form') + component.ngOnInit() + }) + it('should detect if pattern required', () => { expect(component.patternRequired).toBeFalsy() component.objectForm.get('matching_algorithm').setValue(MATCH_AUTO) diff --git a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts index 89bd28100..30384ea31 100644 --- a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts @@ -14,6 +14,7 @@ import { AbstractPaperlessService } from 'src/app/services/rest/abstract-paperle import { UserService } from 'src/app/services/rest/user.service' import { PermissionsFormObject } from '../input/permissions/permissions-form/permissions-form.component' import { SettingsService } from 'src/app/services/settings.service' +import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings' export enum EditDialogMode { CREATE = 0, @@ -67,6 +68,31 @@ export abstract class EditDialogComponent< set_permissions: (this.object as ObjectWithPermissions).permissions, } this.objectForm.patchValue(this.object) + } else { + // defaults from settings + this.objectForm.patchValue({ + permissions_form: { + owner: this.settingsService.get(SETTINGS_KEYS.DEFAULT_PERMS_OWNER), + set_permissions: { + view: { + users: this.settingsService.get( + SETTINGS_KEYS.DEFAULT_PERMS_VIEW_USERS + ), + groups: this.settingsService.get( + SETTINGS_KEYS.DEFAULT_PERMS_VIEW_GROUPS + ), + }, + change: { + users: this.settingsService.get( + SETTINGS_KEYS.DEFAULT_PERMS_EDIT_USERS + ), + groups: this.settingsService.get( + SETTINGS_KEYS.DEFAULT_PERMS_EDIT_GROUPS + ), + }, + }, + }, + }) } // wait to enable close button so it doesnt steal focus from input since its the first clickable element in the DOM @@ -76,11 +102,6 @@ export abstract class EditDialogComponent< this.userService.listAll().subscribe((r) => { this.users = r.results - if (this.dialogMode === EditDialogMode.CREATE) { - this.objectForm.get('permissions_form')?.setValue({ - owner: this.settingsService.currentUser.id, - }) - } }) } diff --git a/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.spec.ts index e762bbda7..8f0ee46db 100644 --- a/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.spec.ts @@ -1,19 +1,21 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' import { HttpClientTestingModule } from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { NgSelectModule } from '@ng-select/ng-select' import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' -import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' -import { NgSelectModule } from '@ng-select/ng-select' +import { SettingsService } from 'src/app/services/settings.service' import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' -import { GroupEditDialogComponent } from './group-edit-dialog.component' +import { SelectComponent } from '../../input/select/select.component' +import { TextComponent } from '../../input/text/text.component' import { PermissionsSelectComponent } from '../../permissions-select/permissions-select.component' +import { EditDialogMode } from '../edit-dialog.component' +import { GroupEditDialogComponent } from './group-edit-dialog.component' describe('GroupEditDialogComponent', () => { let component: GroupEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture beforeEach(async () => { @@ -38,6 +40,8 @@ describe('GroupEditDialogComponent', () => { }).compileComponents() fixture = TestBed.createComponent(GroupEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.spec.ts index 1a35fb5ef..69767bd75 100644 --- a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.spec.ts @@ -1,30 +1,32 @@ +import { + HttpTestingController, + HttpClientTestingModule, +} from '@angular/common/http/testing' import { ComponentFixture, TestBed, fakeAsync, tick, } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' -import { - HttpClientTestingModule, - HttpTestingController, -} from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' +import { NgSelectModule } from '@ng-select/ng-select' +import { IMAPSecurity } from 'src/app/data/paperless-mail-account' import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' -import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' -import { NgSelectModule } from '@ng-select/ng-select' -import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' -import { MailAccountEditDialogComponent } from './mail-account-edit-dialog.component' -import { PasswordComponent } from '../../input/password/password.component' -import { CheckComponent } from '../../input/check/check.component' -import { IMAPSecurity } from 'src/app/data/paperless-mail-account' +import { SettingsService } from 'src/app/services/settings.service' import { environment } from 'src/environments/environment' +import { CheckComponent } from '../../input/check/check.component' +import { PasswordComponent } from '../../input/password/password.component' +import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' +import { SelectComponent } from '../../input/select/select.component' +import { TextComponent } from '../../input/text/text.component' +import { EditDialogMode } from '../edit-dialog.component' +import { MailAccountEditDialogComponent } from './mail-account-edit-dialog.component' describe('MailAccountEditDialogComponent', () => { let component: MailAccountEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture let httpController: HttpTestingController @@ -53,6 +55,8 @@ describe('MailAccountEditDialogComponent', () => { httpController = TestBed.inject(HttpTestingController) fixture = TestBed.createComponent(MailAccountEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.spec.ts index 97854bd73..6e48d95f0 100644 --- a/src-ui/src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.spec.ts @@ -1,30 +1,32 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' import { HttpClientTestingModule } from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' -import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' -import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' +import { ComponentFixture, TestBed } from '@angular/core/testing' import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' +import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' import { NgSelectModule } from '@ng-select/ng-select' -import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' -import { MailRuleEditDialogComponent } from './mail-rule-edit-dialog.component' -import { NumberComponent } from '../../input/number/number.component' -import { TagsComponent } from '../../input/tags/tags.component' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' -import { MailAccountService } from 'src/app/services/rest/mail-account.service' -import { CorrespondentService } from 'src/app/services/rest/correspondent.service' -import { DocumentTypeService } from 'src/app/services/rest/document-type.service' import { of } from 'rxjs' import { - MailAction, MailMetadataCorrespondentOption, + MailAction, } from 'src/app/data/paperless-mail-rule' +import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' +import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' +import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' +import { CorrespondentService } from 'src/app/services/rest/correspondent.service' +import { DocumentTypeService } from 'src/app/services/rest/document-type.service' +import { MailAccountService } from 'src/app/services/rest/mail-account.service' +import { SettingsService } from 'src/app/services/settings.service' import { CheckComponent } from '../../input/check/check.component' +import { NumberComponent } from '../../input/number/number.component' +import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' +import { SelectComponent } from '../../input/select/select.component' +import { TagsComponent } from '../../input/tags/tags.component' +import { TextComponent } from '../../input/text/text.component' +import { EditDialogMode } from '../edit-dialog.component' +import { MailRuleEditDialogComponent } from './mail-rule-edit-dialog.component' describe('MailRuleEditDialogComponent', () => { let component: MailRuleEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture beforeEach(async () => { @@ -72,6 +74,8 @@ describe('MailRuleEditDialogComponent', () => { }).compileComponents() fixture = TestBed.createComponent(MailRuleEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.spec.ts index f44092765..f76f8996a 100644 --- a/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.spec.ts @@ -1,19 +1,21 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' import { HttpClientTestingModule } from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { NgSelectModule } from '@ng-select/ng-select' import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' -import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' -import { NgSelectModule } from '@ng-select/ng-select' -import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' -import { StoragePathEditDialogComponent } from './storage-path-edit-dialog.component' import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' +import { SettingsService } from 'src/app/services/settings.service' +import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' +import { SelectComponent } from '../../input/select/select.component' +import { TextComponent } from '../../input/text/text.component' +import { EditDialogMode } from '../edit-dialog.component' +import { StoragePathEditDialogComponent } from './storage-path-edit-dialog.component' describe('StoragePathEditDialogComponent', () => { let component: StoragePathEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture beforeEach(async () => { @@ -38,6 +40,8 @@ describe('StoragePathEditDialogComponent', () => { }).compileComponents() fixture = TestBed.createComponent(StoragePathEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.spec.ts index 73f3dd908..e46a0e034 100644 --- a/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.spec.ts @@ -1,20 +1,22 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' import { HttpClientTestingModule } from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { NgSelectModule } from '@ng-select/ng-select' import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' -import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' -import { NgSelectModule } from '@ng-select/ng-select' -import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' -import { TagEditDialogComponent } from './tag-edit-dialog.component' -import { ColorComponent } from '../../input/color/color.component' +import { SettingsService } from 'src/app/services/settings.service' import { CheckComponent } from '../../input/check/check.component' +import { ColorComponent } from '../../input/color/color.component' +import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' +import { SelectComponent } from '../../input/select/select.component' +import { TextComponent } from '../../input/text/text.component' +import { EditDialogMode } from '../edit-dialog.component' +import { TagEditDialogComponent } from './tag-edit-dialog.component' describe('TagEditDialogComponent', () => { let component: TagEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture beforeEach(async () => { @@ -29,7 +31,7 @@ describe('TagEditDialogComponent', () => { ColorComponent, CheckComponent, ], - providers: [NgbActiveModal], + providers: [NgbActiveModal, SettingsService], imports: [ HttpClientTestingModule, FormsModule, @@ -40,6 +42,8 @@ describe('TagEditDialogComponent', () => { }).compileComponents() fixture = TestBed.createComponent(TagEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.spec.ts index 1418c74eb..afac0eabc 100644 --- a/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.spec.ts @@ -1,26 +1,28 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' import { HttpClientTestingModule } from '@angular/common/http/testing' -import { EditDialogMode } from '../edit-dialog.component' -import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' -import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' -import { SelectComponent } from '../../input/select/select.component' +import { ComponentFixture, TestBed } from '@angular/core/testing' import { - AbstractControl, FormsModule, ReactiveFormsModule, + AbstractControl, } from '@angular/forms' -import { TextComponent } from '../../input/text/text.component' +import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap' import { NgSelectModule } from '@ng-select/ng-select' -import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' -import { UserEditDialogComponent } from './user-edit-dialog.component' -import { PasswordComponent } from '../../input/password/password.component' -import { PermissionsSelectComponent } from '../../permissions-select/permissions-select.component' -import { GroupService } from 'src/app/services/rest/group.service' import { of } from 'rxjs' +import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' +import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' +import { GroupService } from 'src/app/services/rest/group.service' +import { SettingsService } from 'src/app/services/settings.service' +import { PasswordComponent } from '../../input/password/password.component' +import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' +import { SelectComponent } from '../../input/select/select.component' +import { TextComponent } from '../../input/text/text.component' +import { PermissionsSelectComponent } from '../../permissions-select/permissions-select.component' +import { EditDialogMode } from '../edit-dialog.component' +import { UserEditDialogComponent } from './user-edit-dialog.component' describe('UserEditDialogComponent', () => { let component: UserEditDialogComponent + let settingsService: SettingsService let fixture: ComponentFixture beforeEach(async () => { @@ -51,6 +53,7 @@ describe('UserEditDialogComponent', () => { }), }, }, + SettingsService, ], imports: [ HttpClientTestingModule, @@ -62,6 +65,8 @@ describe('UserEditDialogComponent', () => { }).compileComponents() fixture = TestBed.createComponent(UserEditDialogComponent) + settingsService = TestBed.inject(SettingsService) + settingsService.currentUser = { id: 99, username: 'user99' } component = fixture.componentInstance fixture.detectChanges() diff --git a/src-ui/src/app/components/manage/settings/settings.component.html b/src-ui/src/app/components/manage/settings/settings.component.html index 9ff2a06d3..cc5e7a15e 100644 --- a/src-ui/src/app/components/manage/settings/settings.component.html +++ b/src-ui/src/app/components/manage/settings/settings.component.html @@ -11,14 +11,14 @@