Package com.springsource.greenhouse.develop

Source Code of com.springsource.greenhouse.develop.JdbcAppRepositoryTest

/*
* Copyright 2012 the original author or authors.
*
* 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 com.springsource.greenhouse.develop;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Rule;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import org.springframework.security.crypto.encrypt.Encryptors;
import org.springframework.test.transaction.Transactional;

import com.springsource.greenhouse.database.GreenhouseTestDatabaseBuilder;

public class JdbcAppRepositoryTest {

  private JdbcAppRepository appRepository;

  private JdbcTemplate jdbcTemplate;

  public JdbcAppRepositoryTest() {
    EmbeddedDatabase db = new GreenhouseTestDatabaseBuilder().member().connectedApp().testData(getClass()).getDatabase();
    transactional = new Transactional(db);
    jdbcTemplate = new JdbcTemplate(db);
    appRepository = new JdbcAppRepository(jdbcTemplate, Encryptors.noOpText());   
  }
 
  @Test
  public void findAppSummaries() {
    List<AppSummary> summaries = appRepository.findAppSummaries(2L);
    assertEquals(1, summaries.size());
    AppSummary summary = summaries.get(0);
    assertEquals("Greenhouse for Facebook", summary.getName());
    assertEquals("Awesome", summary.getDescription());
    assertEquals("http://images.greenhouse.springsource.org/apps/icon-default-app.png", summary.getIconUrl());
    assertEquals("greenhouse-for-facebook", summary.getSlug());

    summaries = appRepository.findAppSummaries(3L);
    assertEquals(2, summaries.size());
    summary = summaries.get(0);
    assertEquals("Greenhouse for the iPhone", summary.getName());
    summary = summaries.get(1);
    assertEquals("Greenhouse for the Android", summary.getName());
  }

  @Test
  public void noAppSummaries() {
    assertEquals(0, appRepository.findAppSummaries(1L).size());
  }

  @Test
  public void findAppBySlug() {
    App app = appRepository.findAppBySlug(3L, "greenhouse-for-the-iphone");
    assertExpectedApp(app);
  }
 
  @Test
  public void findAppByApiKey() throws InvalidApiKeyException {
    App app = appRepository.findAppByApiKey("123456789");
    assertExpectedApp(app);
  }
 
  @Test(expected=InvalidApiKeyException.class)
  public void findByAppKeyInvalidKey() throws InvalidApiKeyException {
    appRepository.findAppByApiKey("invalid");
  }

  @Test
  public void createApp() {
    AppForm form = new AppForm();
    form.setName("My App");
    form.setDescription("My App Description");
    String slug = appRepository.createApp(1L, form);
    assertEquals("my-app", slug);

    App app = appRepository.findAppBySlug(1L, slug);
    assertEquals("My App", app.getSummary().getName());
    assertNotNull(app.getApiKey());
    assertNotNull(app.getSecret());
    assertEquals(null, app.getCallbackUrl());
  }

  @Test
  public void updateApp() {
    AppForm form = appRepository.getAppForm(2L, "greenhouse-for-facebook");
    form.setName("Greenhouse for Twitter");
    form.setWebsite("http://www.twitter.com");
    String slug = appRepository.updateApp(2L, "greenhouse-for-facebook", form);
    assertEquals("greenhouse-for-twitter", slug);
    form = appRepository.getAppForm(2L, "greenhouse-for-twitter");
    assertEquals("Greenhouse for Twitter", form.getName());
    assertEquals("http://www.twitter.com", form.getWebsite());
  }

  @Test
  public void deleteApp() {
    appRepository.deleteApp(2L, "greenhouse-for-facebook");
    assertEquals(0, appRepository.findAppSummaries(2L).size());
  }

  private void assertExpectedApp(App app) {
    assertEquals("Greenhouse for the iPhone", app.getSummary().getName());
    assertEquals("123456789", app.getApiKey());
    assertNotNull("987654321", app.getSecret());
    assertEquals("x-com-springsource-greenhouse://oauth-response", app.getCallbackUrl());
  }

  @Rule
  public Transactional transactional;

}
TOP

Related Classes of com.springsource.greenhouse.develop.JdbcAppRepositoryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.