Skip to content

Commit

Permalink
fix: change field size for client
Browse files Browse the repository at this point in the history
  • Loading branch information
podlesrafal committed Dec 12, 2024
1 parent 7594357 commit d0b4f90
Show file tree
Hide file tree
Showing 9 changed files with 296 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# Change client column from 64 to 255 characters.
databaseChangeLog:
- changeSet:
id: 4.2.27-change-client-column-size-remove-indexes # MSSQL SERVER needs to first remove index before changing type
author: GraviteeSource Team
dbms: mssql
changes:
# device
- dropIndex:
tableName: devices
indexName: idx_devices_domain_client_user
# scope_approvals
- dropIndex:
indexName: idx_scope_approvals_domain_client_user_scope
tableName: scope_approvals

#access_tokens
- dropIndex:
indexName: idx_access_tokens_client
tableName: access_tokens
- dropIndex:
indexName: idx_access_tokens_domain_client_subject
tableName: access_tokens

#refresh_tokens
- dropIndex:
indexName: idx_refresh_tokens_client
tableName: refresh_tokens
- dropIndex:
indexName: idx_refresh_tokens_domain_client_subject
tableName: refresh_tokens

- changeSet:
id: 4.2.27-change-client-column-size
author: GraviteeSource Team
changes:
#devices
- dropIndex:
tableName: devices
indexName: idx_devices_domain_client_user_remember_device_device_id
- modifyDataType:
tableName: devices
columnName: client
newDataType: VARCHAR(255)
- createIndex: # removed index for reference type to be able to change data type of client and not exceed max index length
columns:
- column:
name: reference_id
- column:
name: client
- column:
name: user_id
- column:
name: device_identifier_id
- column:
name: device_id
indexName: idx_devices_domain_client_user_remember_device_device_id
tableName: devices
unique: false

# scope_approvals
- modifyDataType:
tableName: scope_approvals
columnName: client_id
newDataType: VARCHAR(255)

#access_tokens
- modifyDataType:
tableName: access_tokens
columnName: client
newDataType: VARCHAR(255)

#refresh_tokens
- modifyDataType:
tableName: refresh_tokens
columnName: client
newDataType: VARCHAR(255)

#authorization_codes
- modifyDataType:
tableName: authorization_codes
columnName: client_id
newDataType: VARCHAR(255)

#pushed_authorization_requests
- modifyDataType:
tableName: pushed_authorization_requests
columnName: client
newDataType: VARCHAR(255)

#ciba_auth_requests
- modifyDataType:
tableName: ciba_auth_requests
columnName: client
newDataType: VARCHAR(255)

- changeSet:
id: 4.2.27-change-client-column-size-recreate-indexes # recreating indexes for MS SQL SERVER
author: GraviteeSource Team
dbms: mssql
changes:
# device
- createIndex:
columns:
- column:
name: reference_id
- column:
name: reference_type
- column:
name: client
- column:
name: user_id
indexName: idx_devices_domain_client_user
tableName: devices
unique: false
# scope_approvals
- createIndex:
columns:
- column:
name: domain
- column:
name: client_id
- column:
name: user_id
- column:
name: scope
indexName: idx_scope_approvals_domain_client_user_scope
tableName: scope_approvals
unique: true

#access_tokens
- createIndex:
columns:
- column:
name: client
indexName: idx_access_tokens_client
tableName: access_tokens
unique: false
- createIndex:
columns:
- column:
name: domain
- column:
name: client
- column:
name: subject
indexName: idx_access_tokens_domain_client_subject
tableName: access_tokens
unique: false

#refresh_tokens
- createIndex:
columns:
- column:
name: client
indexName: idx_refresh_tokens_client
tableName: refresh_tokens
unique: false
- createIndex:
columns:
- column:
name: domain
- column:
name: client
- column:
name: subject
indexName: idx_refresh_tokens_domain_client_subject
tableName: refresh_tokens
unique: false
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,5 @@ databaseChangeLog:
- file: liquibase/changelogs/v4_1_0/4.1.35-update-web-credential-index.yml
- include:
- file: liquibase/changelogs/v4_2_0/4.2.0-update-applications-table.yml
- include:
- file: liquibase/changelogs/v4_2_27/4.2.27-change-client-column-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,14 @@ public void testDelete() throws TechnicalException {
testObserver.assertNoValues();
testObserver.assertNoErrors();
}

@Test
public void createWithLongClient(){
Device device = buildDevice();
device.setClient("very-long-client-very-long-client-very-long-client-very-long-client-very-long-client-very-long-client");
TestObserver<Device> deviceTestObserver = repository.create(device).test().awaitDone(10, TimeUnit.SECONDS);
deviceTestObserver.awaitDone(10, TimeUnit.SECONDS);
deviceTestObserver.assertComplete();
deviceTestObserver.assertNoErrors();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@

import java.util.concurrent.TimeUnit;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

/**
Expand Down Expand Up @@ -65,6 +64,22 @@ public void shouldFindToken() {
observer.assertNoErrors();
}

@Test
public void shouldCreateWithLongClientId() {
AccessToken token = new AccessToken();
token.setId(RandomString.generate());
token.setToken("my-token");
token.setClient("very-long-client-very-long-client-very-long-client-very-long-client-very-long-client-very-long-client");

TestObserver<AccessToken> observer = accessTokenRepository
.create(token).test();

observer.awaitDone(10, TimeUnit.SECONDS);

observer.assertComplete();
observer.assertNoErrors();
}

@Test
public void shouldDeleteByToken() {
AccessToken token = new AccessToken();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@

import io.gravitee.am.repository.oauth2.AbstractOAuthTest;
import io.gravitee.am.repository.oauth2.model.AuthorizationCode;
import io.reactivex.rxjava3.core.Maybe;
import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.observers.TestObserver;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -83,4 +81,19 @@ public void shouldRemoveCode() throws InterruptedException {
deletionValidationObserver.assertNoValues();
}

@Test
public void shouldCreateWithLongClientId() {
AuthorizationCode authorizationCode = new AuthorizationCode();
authorizationCode.setId("test");
authorizationCode.setCode("test");
authorizationCode.setClientId("very-long-client-very-long-client-very-long-client-very-long-client-very-long-client-very-long-client");

TestObserver<AuthorizationCode> observer = authorizationCodeRepository
.create(authorizationCode).test();

observer.awaitDone(10, TimeUnit.SECONDS);
observer.assertComplete();
observer.assertNoErrors();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -173,5 +173,18 @@ public void shouldDelete() {
observer.assertNoErrors();
}

@Test
public void shouldCreateWithLongClientName() {
final String id = RandomString.generate();
CibaAuthRequest authRequest = buildCibaAuthRequest(id);
authRequest.setClientId("very-long-client-very-long-client-very-long-client-very-long-client-very-long-client-very-long-client");

TestObserver<CibaAuthRequest> observer = repository.create(authRequest).test();

observer.awaitDone(10, TimeUnit.SECONDS);
observer.assertComplete();
observer.assertNoErrors();
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,21 @@ public void shouldDelete() {
observer.assertNoErrors();
}

@Test
public void shouldCreateWithLongClientName() {
PushedAuthorizationRequest par = new PushedAuthorizationRequest();
final String id = RandomString.generate();
par.setId(id);
par.setDomain("domain");
par.setClient("very-long-client-very-long-client-very-long-client-very-long-client-very-long-client-very-long-client");
final LinkedMultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
parameters.add("key", "value");
par.setParameters(parameters);

TestObserver<PushedAuthorizationRequest> observer = repository.create(par).test();
observer.awaitDone(10, TimeUnit.SECONDS);
observer.assertComplete();
observer.assertNoErrors();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@

import java.util.concurrent.TimeUnit;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

/**
Expand Down Expand Up @@ -135,4 +134,19 @@ public void shouldDeleteByDomainIdAndUserId() {
assertNotNull(refreshTokenRepository.findByToken("my-token2").blockingGet());
}

@Test
public void shouldCreateWithLongClientId() {
RefreshToken token = new RefreshToken();
token.setId(RandomString.generate());
token.setToken("my-token");
token.setClient("very-long-client-very-long-client-very-long-client-very-long-client-very-long-client-very-long-client");

TestObserver<RefreshToken> observer = refreshTokenRepository
.create(token).test();

observer.awaitDone(10, TimeUnit.SECONDS);
observer.assertComplete();
observer.assertNoErrors();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.gravitee.am.repository.oauth2.api;

import io.gravitee.am.model.oauth2.ScopeApproval;
import io.gravitee.am.repository.oauth2.AbstractOAuthTest;
import io.reactivex.rxjava3.observers.TestObserver;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.concurrent.TimeUnit;

public class ScopeApprovalRepositoryTest extends AbstractOAuthTest {
@Autowired
private ScopeApprovalRepository scopeApprovalRepository;
@Test
public void shouldCreateWithLongClientName(){
ScopeApproval scopeApproval = new ScopeApproval();
scopeApproval.setScope("Test");
scopeApproval.setStatus(ScopeApproval.ApprovalStatus.APPROVED);
scopeApproval.setClientId("very-long-client-very-long-client-very-long-client-very-long-client-very-long-client-very-long-client");
TestObserver<ScopeApproval> testObserver = scopeApprovalRepository.create(scopeApproval).test();
testObserver.awaitDone(10, TimeUnit.SECONDS);
testObserver.assertComplete();
testObserver.assertNoErrors();
}
}

0 comments on commit d0b4f90

Please sign in to comment.