第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何模擬 SecurityContext 進(jìn)行 JPA 審計?

如何模擬 SecurityContext 進(jìn)行 JPA 審計?

皈依舞 2022-08-17 10:48:19
在Spring Boot應(yīng)用程序中,我想測試(JUnit 5)啟用審計的持久性層(@EnableJpaAuditing)。我使用 Liquibase 來設(shè)置 H2 db 和 Hibernate 作為 JPA 實現(xiàn)。@Configuration//@EnableTransactionManagement@EnableJpaAuditing//@EnableJpaRepositoriespublic class MyPersistenceConfig {}我的實體具有以下字段:@CreatedDate@Column(name = "CREATED_AT", updatable = false)private Instant createdAt;@CreatedBy@Column(name = "CREATED_BY", updatable = false)private String createdBy;@CreatedDate@Column(name = "LAST_MODIFIED_AT")private Instant lastModifiedAt;@CreatedBy@Column(name = "LAST_MODIFIED_BY")private String lastModifiedBy;我有以下依賴關(guān)系:    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-data-jpa</artifactId>    </dependency>    <dependency>        <groupId>javax.validation</groupId>        <artifactId>validation-api</artifactId>    </dependency>    <dependency>        <groupId>org.liquibase</groupId>        <artifactId>liquibase-core</artifactId>        <scope>runtime</scope>        <!--<scope>test</scope>-->    </dependency>    <!-- Testing -->    <dependency>        <groupId>org.junit.jupiter</groupId>        <artifactId>junit-jupiter-api</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.junit.jupiter</groupId>        <artifactId>junit-jupiter-engine</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-test</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.springframework.security</groupId>        <artifactId>spring-security-test</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>com.h2database</groupId>        <artifactId>h2</artifactId>        <scope>test</scope>    </dependency>
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗 獲得超5個贊

這是一個古老的問題,但對于那些可能偶然發(fā)現(xiàn)它試圖讓Spring Data審計在他們的集成測試中工作的人來說,這可能會有所幫助。審計功能需要一個 Bean 來獲取當(dāng)前用戶。在這一點上似乎缺失了。使其可用的一種方法是向測試中添加配置。AuditingAwareDataJpaTest@Bean


@RunWith(SpringRunner.class)

@DataJpaTest

@Import({DatabaseIntegrationTest.TestConfig.class})

@WithMockUser

class DatabaseIntegrationTest {


  @TestConfiguration

  @RequiredArgsConstructor

  static class TestConfig {

    @Bean

    public AuditorAware<String> auditorAware() {

      return () -> Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication().getName());

    }

  }

}


查看完整回答
反對 回復(fù) 2022-08-17
?
月關(guān)寶盒

TA貢獻(xiàn)1772條經(jīng)驗 獲得超5個贊

@Before

public void setup() {


    User user = userService.findByEmail("umanking@gmail.com").get();


    SecurityContextHolder.getContext().setAuthentication(new Authentication() {

        @Override

        public Collection<? extends GrantedAuthority> getAuthorities() {

            return null;

        }


        @Override

        public Object getCredentials() {

            return user.getPassword();

        }


        @Override

        public Object getDetails() {

            return user;

        }


        @Override

        public Object getPrincipal() {

            return null;

        }


        @Override

        public boolean isAuthenticated() {

            return true;

        }


        @Override

        public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {


        }


        @Override

        public String getName() {

            return user.getName();

        }

    });


}

也許你可以使用@Before注釋


查看完整回答
反對 回復(fù) 2022-08-17
  • 2 回答
  • 0 關(guān)注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號