Skip to content

Instantly share code, notes, and snippets.

View cuongld2's full-sized avatar

Le Dinh Cuong cuongld2

View GitHub Profile
@cuongld2
cuongld2 / BlogMutation.java
Created March 30, 2020 01:53
create graphql mutation for BlogMutation
import com.coxautodev.graphql.tools.GraphQLMutationResolver;
import donald.apiwithspringboot.model.Blog;
import donald.apiwithspringboot.model.mutation.CreateBlog;
import donald.apiwithspringboot.repository.BlogRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
@cuongld2
cuongld2 / WebSecurityConfig.java
Created March 30, 2020 01:54
we need authentication for any url except url contains endpoint like '/user' or '/authenticate' like defined in websecurityConfig file
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.csrf().disable()
.authorizeRequests().antMatchers("/authenticate","/user").permitAll().
anyRequest().authenticated().and().
exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
httpSecurity.logout().logoutSuccessUrl("/authenticate").logoutUrl("/logout").permitAll();
}
@cuongld2
cuongld2 / dependencies.xml
Created March 30, 2020 02:10
graphql dependencies
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>5.2.4</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphiql-spring-boot-starter</artifactId>
<version>5.0.2</version>
</dependency>
@cuongld2
cuongld2 / schema.graphqls
Created March 30, 2020 02:12
define schema blog
type Blog {
id: Int,
title: String,
content: String
}
type Query {
blogs(count: Int):[Blog]
blog(id: Int):Blog
}
@cuongld2
cuongld2 / BlogService.java
Created March 30, 2020 02:14
Implement blog service
@Service
public class BlogService {
private final BlogRepository blogRepository;
public BlogService(final BlogRepository blogRepository){this.blogRepository = blogRepository;}
@Transactional(readOnly = true)
public List<Blog> getAllBlogs(final int count){
return this.blogRepository.findAll().stream().limit(count).collect(Collectors.toList());
@cuongld2
cuongld2 / BlogQuery.java
Created March 30, 2020 02:14
Implement query
@Component
public class BlogQuery implements GraphQLQueryResolver {
@Autowired
private BlogService blogService;
public List<Blog> getBlogs(final int count){
return this.blogService.getAllBlogs(count);
}
@cuongld2
cuongld2 / WebSecurity.java
Created March 30, 2020 02:16
Define security endpoint
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.csrf().disable()
.authorizeRequests().antMatchers("/authenticate","/user").permitAll().
anyRequest().authenticated().and().
exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and().sessionManagement()
@cuongld2
cuongld2 / blog_query.py
Last active March 30, 2020 02:18
Define query method to call the api
class Blogs:
def get_blog_info(self, query, token):
request = requests.post(API_SERVER_URL + API_GRAPH_QL_PATH, json={'query': query}, headers={"Authorization": f"Bearer {token}"})
if request.status_code == 200:
return request.json()
else:
raise Exception("Query failed to run by returning code of {}. {}".format(request.status_code, query))
@cuongld2
cuongld2 / test_get_blogs_info.py
Created March 30, 2020 02:22
Define scripts to test get blog info in pytest class
class TestGetBlogsInfo:
user_api = User()
restapi_query = RestAPIDatabase()
random_gen = RandomGenerator()
blog_graphql_api = Blogs()
@pytestrail.case('C8')
def test_get_all_blog_id_and_contents_with_count(self, set_up_mysql):
username = self.random_gen.random_string(8) + '@gmail.com'
query = """
@cuongld2
cuongld2 / test_chrome.py
Created March 31, 2020 03:49
Test script for open chrome in Android and navigate to amazon
from appium import webdriver
class TestChrome:
def test_open_web_page(self):
platform_name = 'Android'
platform_version = '10'
device_name = 'Galaxy A51'