From 975715b80fce87d012285d4fef3037ae9864c12f Mon Sep 17 00:00:00 2001 From: kyleaure Date: Mon, 18 Nov 2019 09:15:29 -0600 Subject: [PATCH] add acceptLicense method to SQLServer --- docs/modules/databases/mssqlserver.md | 5 +++-- .../containers/MSSQLServerContainer.java | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docs/modules/databases/mssqlserver.md b/docs/modules/databases/mssqlserver.md index 9e0bec25dad..29c5435be32 100644 --- a/docs/modules/databases/mssqlserver.md +++ b/docs/modules/databases/mssqlserver.md @@ -10,7 +10,8 @@ Running MS SQL Server as a stand-in for in a test: public class SomeTest { @Rule - public MSSQLServerContainer mssqlserver = new MSSQLServerContainer(); + public MSSQLServerContainer mssqlserver = new MSSQLServerContainer() + .acceptLicense(); @Test public void someTestMethod() { @@ -20,7 +21,7 @@ public class SomeTest { ``` !!! warning "EULA Acceptance" - Due to licencing restrictions you are required to accept an EULA for this container image. To indicate that you accept the MS SQL Server image EULA, Please place a file at the root of the classpath named `container-license-acceptance.txt`, e.g. at `src/test/resources/container-license-acceptance.txt`. This file should contain the line: `mcr.microsoft.com/mssql/server:2017-CU12` (or, if you are overriding the docker image name/tag, update accordingly). + Due to licencing restrictions you are required to accept an EULA for this container image. To indicate that you accept the MS SQL Server image EULA, call the `acceptLicense()` method, or place a file at the root of the classpath named `container-license-acceptance.txt`, e.g. at `src/test/resources/container-license-acceptance.txt`. This file should contain the line: `mcr.microsoft.com/mssql/server:2017-CU12` (or, if you are overriding the docker image name/tag, update accordingly). Please see the [`microsoft-mssql-server` image documentation](https://hub.docker.com/_/microsoft-mssql-server#environment-variables) for a link to the EULA document. diff --git a/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java b/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java index b500e6fddf0..7550f820d51 100644 --- a/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java +++ b/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java @@ -50,11 +50,24 @@ protected Integer getLivenessCheckPort() { @Override protected void configure() { - LicenseAcceptance.assertLicenseAccepted(this.getDockerImageName()); - addEnv("ACCEPT_EULA", "Y"); + // If license was not accepted programatically, check if it was accepted via resource file + if (!getEnvMap().containsKey("ACCEPT_EULA")) { + LicenseAcceptance.assertLicenseAccepted(this.getDockerImageName()); + acceptLicense(); + } + addEnv("SA_PASSWORD", password); } + /** + * Accepts the license for the SQLServer container by setting the ACCEPT_EULA=Y + * variable as described at https://hub.docker.com/_/microsoft-mssql-server + */ + public SELF acceptLicense() { + addEnv("ACCEPT_EULA", "Y"); + return self(); + } + @Override public String getDriverClassName() { return "com.microsoft.sqlserver.jdbc.SQLServerDriver"; @@ -116,6 +129,5 @@ private void checkPasswordStrength(String password) { "or percent (%)." ); } - } }