Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[master] fix: change field size for client #5256

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -122,6 +122,7 @@ databaseChangeLog:
- include:
- file: liquibase/changelogs/v4_2_0/4.2.0-update-applications-table.yml
- include:
<<<<<<< HEAD
- file: liquibase/changelogs/v4_3_0/4.3.0-license-notification-permission.yml
- include:
- file: liquibase/changelogs/v4_4_0/4.4.0-add-password-policies-table.yml
Expand Down Expand Up @@ -151,3 +152,6 @@ databaseChangeLog:
- file: liquibase/changelogs/v4_5_0/4.5.0-identity-group-mapper.yml
- include:
- file: liquibase/changelogs/v4_5_0/4.5.0-add-node-monitoring-index.yml
=======
- file: liquibase/changelogs/v4_2_27/4.2.27-change-client-column-size.yml
>>>>>>> d0b4f902f3 (fix: change field size for client)
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ public void testDelete() {
}

@Test
<<<<<<< HEAD
public void shouldFindByReferenceAndUserId() {
var device = buildDevice();

Expand All @@ -267,5 +268,14 @@ public void shouldFindByReferenceAndUserId() {
.test().awaitDone(5, TimeUnit.SECONDS)
.assertComplete()
;
=======
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();
>>>>>>> d0b4f902f3 (fix: change field size for client)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,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 @@ -81,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 @@ -135,4 +135,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();
}
}